Версия для печати темы (https://pro1c.org.ua/index.php?s=9e2c7cdc358926163ce8db79599da2b5&showtopic=37549)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ авто-запись данных на сервер для реквизита ссылка

Автор: Gigi 31.05.17, 15:02

Всем привет!
У меня следующий вопрос относительно записи данных на сервер.
Для этой цели худо бедно написал вот такую вот процедуру в общем модуле:

Процедура ЗаписатьНаСервер(Конфигурат,КонфигуратЭлемент, КодНомерПойска, СтолбецВставки, ТекстВставки) Экспорт
//==========================================================================
//Сообщить(КодНомерПойска = "");
Если КодНомерПойска = "" Тогда    
Перейти ~ПроцедураВыход;
КонецЕсли;    
Если Конфигурат = "Справочники" Тогда
    Попытка
    РезультПойска = Справочники[КонфигуратЭлемент].НайтиПоКоду(КодНомерПойска);
    Исключение
    Сообщить("Указанный адрес: «"+Конфигурат+"."+КонфигуратЭлемент+"» не существует!");
    КонецПопытки
ИначеЕсли  Конфигурат = "Документы" Тогда
    Попытка
    РезультПойска = Документы[КонфигуратЭлемент].НайтиПоНомеру(КодНомерПойска);    
    Исключение
    Сообщить("Указанный адрес: «"+Конфигурат+"."+КонфигуратЭлемент+"» не существует!");
    КонецПопытки
Иначе
    Сообщить("Не корректное указание объекта конфирурации!");
КонецЕсли;
//==========================================================================
Если РезультПойска = "" Тогда
    Сообщить("В Списке: «"+Конфигурат+"."+КонфигуратЭлемент+"» КодНомерПойска: """ + КодНомерПойска + """ не найден!");
Иначе
    Попытка
    СтрокаОбъект = РезультПойска.ПолучитьОбъект();
    СтрокаОбъект[СтолбецВставки]=ТекстВставки;
    СтрокаОбъект.Записать();
    //Сообщить("Значение обекта по адрессу: «"+Конфигурат+"."+КонфигуратЭлемент+"."+СтолбецВставки+""» в строке: «"+СтрокаОбъект+"» записано!");
    Исключение
    Сообщить("Указанный адрес: «"+Конфигурат+"."+КонфигуратЭлемент+"."+СтолбецВставки+"» не существует!");
    КонецПопытки    
    КонецЕсли;
//==========================================
~ПроцедураВыход:;
КонецПроцедуры

Вроде работает без сбоев и часто просто выручает ... и вроде бы каждый раз не нужно писать кучу строк и повторятся .. ибо благодаря данной процедуре все обходиться всего одной строкой, только вот одно проблема.
Процедура работает, если тип реквизита для заполнения СТРОКА.. и вообще для любого реквизита, кроме типа ССЫЛКА.
Вот в чем деготь.
Ну понятное дело ... рождается вопрос .. для чего это нужно.. ведь не случайно не работает .... потому что ведь тип ССЫЛКА, а не другой тип.
Отвечаю...
Это нужно, для кое какого авто-заполнения при ВЫБОРЕ из списка. Без необходимости вручную указывать ссылку.
И я понимаю, что возникнет уже второй вопрос... ну типа .. для этого есть подчиненные справочники, но они меня не устраивают и для цели не очень подходят.
Так вот, уважаемые специалисты.
Не могли бы доработать данную процедуру?
И что бы она работала для авто-ввода и в случае, если тип реквизита ССЫЛКА!
Просто сам не могу это сделать... опыта и глубоких знаний не достаточно...
Вот в чем суть просьбы.
Буду признателен!

Автор: logist 31.05.17, 15:50

Подозреваю изобретаете велосипед, жаль, как всегда, не знаю исходной задачи smile.gif Вникать в "набор слов" нет желания, подожду развития событий))

Автор: Gigi 31.05.17, 16:08

Цитата(logist @ 31.05.17, 16:50) *
Подозреваю изобретаете велосипед, жаль, как всегда, не знаю исходной задачи Вникать в "набор слов" нет желания, подожду развития событий))

Ладно... более укороченный вариант, для простоты..
&НаСервер
Процедура ЗаписатьНаСервер()
РезультПойска = Справочники.ТОЧКА.НайтиПоКоду("000000001");
СтрокаОбъект = РезультПойска.ПолучитьОбъект();
СтрокаОбъект.ОбъектПринадл="ТекстВставки";
СтрокаОбъект.Записать();
КонецПроцедуры


"ОбъектПринадл" это реквизит справочника "ТОЧКА". Его тип ССЫЛКА.
Вопрос в том, как в этот реквизит вставить просто текст (т.е. "ТекстВставки")... который существует в списке.
А на счет велосипеда... ну не знаю.. просто много че хочеться не так как система 1С предлогает, а так как нужно цели. О которой если начну то это очень долгий разговор получиться!
Поэтому, хотел просто узнать у Вас... каким путем можно осуществить авто-ввод в реквизит тип которой ссылка... в данном случае по адресу: Справочники.ТОЧКА.ОбъектПринадл
И возможно ли это?

Автор: logist 31.05.17, 16:15

Цитата(Gigi @ 31.05.17, 17:08) *
"ОбъектПринадл" это реквизит справочника "ТОЧКА". Его тип ССЫЛКА.
Вопрос в том, как в этот реквизит вставить просто текст

Давайте оторву вам ногу и вместо нее попытаюсь вставить руку, какие у меня шансы? Опять же - не известна задача в целом, например, реквизит можно сделать составного типа.

Цитата(Gigi @ 31.05.17, 17:08) *
много че хочеться не так как система 1С предлогает, а так как нужно цели.

1С много чего умеет, нужно просто ставить правильно цели.

Автор: Flexy 31.05.17, 16:16

Цитата(Gigi @ 31.05.17, 16:08) *
"ОбъектПринадл" это реквизит справочника "ТОЧКА". Его тип ССЫЛКА.
Вопрос в том, как в этот реквизит вставить просто текст...

Сделайте тип этого реквизита строкой и...вставляйте...

Автор: Gigi 31.05.17, 16:53

Цитата(Flexy @ 31.05.17, 17:16) *
Сделайте тип этого реквизита строкой и...вставляйте...

В таком решении плюс в том, что авто-ввод без ограничений, но есть минусы... тогда получиться без ручного выбора объекта.
А нужно и то и другое. smile.gifsmile.gif и это с иронией, но без шуток

Цитата(logist @ 31.05.17, 17:15) *
Опять же - не известна задача в целом, например, реквизит можно сделать составного типа.


Не хотел говорить подноготную и разводить длинные речи, но вижу придется..
Так вот, в чем цель.
Предположите, что есть справочник с именем "ОБЪЕКТ". И справочник: "ТОЧКА"
У последнего есть реквизит:"ОбъектПринадл", который ссылается на справочник: "ОБЪЕКТ" . на основной реквизит: "Наименование".
Теперь представьте, что список справочника ТОЧКА отображается в ФормеОбъекта(Элемента) "ОБЪЕКТ". и там отбор установлен по принадлежности к Справочнику: "ОБЪЕКТ"
Где есть самим созданные всего две кнопки: "Выбрать" и "Отменить". БОЛЬШЕГО И НЕ НАДО... найти, изменить и т.д. Всего ДВЕ КНОПКИ!
Кнопка "Отменить" в списке ничего не удаляет. Она просто стирает поле: "ОбъектПринадл" для выделенного элемента.
И соответственно он из списка в ФормеОбъекта: "ОБЪЕКТ" просто исчезает.
Теперь допустим его нужно обратно ВЫБРАТЬ.
И вот тут проблема:
Что бы он опять появился в списке Формы "ОБЪЕКТ", реквизиту: "ОбъектПринадл" опять нужно автоматически присвоить нужное значение.
Гууу.. не хотел все это говорить. И это прежде всего потому, что опять не хотел загружать..
А цель простая
Нужно, что бы элемент в форме справочника: "ОБЪЕКТ" можно было свободно отменить и выбрать. А все остально что бы делалось АВТОМАТИЧЕСКИЙ!
Всего лишь! Вот в чем мой "ВЕЛОСИПЕД" и необходимость оторвать и вставить ноги руки и т.д.
Блиин! и как все это сделать, тут все решено.. осталось только то о чем выше говорил

Gigi @ Сегодня, 17:43 * ,
Или может есть соображения?
Просто вроде все работает, но на том, как ссылке опять автоматический присвоить выбранное значение... на этом завис.
поэтому прошу помощи..

Автор: logist 31.05.17, 17:02

Цитата(Gigi @ 31.05.17, 17:43) *
Предположите, что есть справочник с именем "ОБЪЕКТ". И справочник: "ТОЧКА"

Задача - это то, что хочет видеть её заказчик в результате выполнения, а не то, что вы как программист придумали. Перечитал и ничего не понял, может вам надо Подчиненный справочник...

Автор: Gigi 31.05.17, 17:12

Gigi @ Сегодня, 17:53 * ,
У меня еще другой вопрос ... нельзя ли сделать так, что бы реквизит имел два типа одновременно. И был годен и как ссылка и как строка.
Дело в том, что в Экселе я помню можно указать область списка и поставить нужную галочку.
И в ячейку выбора можно вбивать все что угодно. Даже тот текст, которого нет в области списка.
Нет ли что нибудь подобного в 1С?


Цитата(Gigi @ 31.05.17, 18:09) *
Задача - это то, что хочет видеть её заказчик в результате выполнения, а не то, что вы как программист придумали. Перечитал и ничего не понял, может вам надо Подчиненный справочник...

Я знаю о подчиненным справочнике ... мне он по форме не понравился. Какая то не нужная боковая панель навигации. Я не так хотел сделать.
Ладно ... я так и знал, что будет не понятно... поэтому и не хотел объяснять.
Но по второму вопросу тогда... если такая фишка в 1С?
Что бы тип и как ссылка и как строка.
Я ничего не придумал. Более того, исхожу сугубо из того, как потребитель требует.
И что бы максимально было удобно.. Но к сожалению... ладно.. видимо придется искать другие пути.

Автор: logist 31.05.17, 17:25

Цитата(Gigi @ 31.05.17, 18:12) *
нельзя ли сделать так, что бы реквизит имел два типа одновременно.

Можно, но это будет два разных значения, мне кажется в вашем случае это не то что надо.

Цитата(Gigi @ 31.05.17, 18:12) *
И что бы максимально было удобно..

Из того что вы пишите, мне трудно понять что же заказа заказчик, но исходя из того как вы это реализуете - он заказал тележку "костылей"

Автор: sava1 31.05.17, 17:49

ИМХО - "бедный" заказчик.

Автор: Gigi 31.05.17, 19:38

sava1 @ Сегодня, 17:49 * ,

Цитата(logist @ 31.05.17, 17:25) *
Из того что вы пишите, мне трудно понять что же заказа заказчик, но исходя из того как вы это реализуете - он заказал тележку "костылей"

Цитата(sava1 @ 31.05.17, 17:49) *
ИМХО - "бедный" заказчик.

Люди .. да что тут такого ... вообще я отношусь к тем, которые очень не любят разные стереотипы.
Типа, нужно всегда обязательно делать так как предложено платформой в стандартном формате и никак иначе.
а может я хочу по другому. почему я должен обязательно сделать так то ... а не иначе.
и как только я реализую это ... тут уж конечно... сразу же начинается.. а это так не делается... это извращение .. и так нельзя, сяк нельзя.
Я часто слышу такое. Якобы сам че то выдумываю.
При чем тут тележка "косылей".
Я просто по другому отношусь ...
важно не то в какой среде работаешь, 1С, Эксель, да хоть пусть в программе из Мадагаскара.... важно другое!
Есть цель и есть способ для цели. И главное тут не второе, а только ПЕРВОЕ второе не важно. 1С, эксель и т.д. это только СПОСОБ и не более.
Так что, критерий качества среды как раз в том, насколько она позволяет реализовать ЦЕЛЬ.
Если цель реализовать нельзя или это просто ЦЕЛОЕ ДЕЛО то, это говорит о не доработках самой среды. И это какая бы хваленная она не была!
Так что, как по стандарту это одно. Но не надо забывать, что взрослые не увидели, что король голый. Только ребенок это увидел. и оказался умнее взрослых дебилов. Об этом тоже не надо забывать.
Это по поводу "тележки с костылей"
Для цели я знаю, что есть подчиненные справочники, но они не устраивают. И в моем случае пользователей тоже.
Как только устанавливаешь один справочник в подчинении другого, появляется боковая панель навигации. В моем случае ОНА НЕ НУЖНА.
НУЖНО ОДНО ЕДИНСТВЕННОЕ.
Что бы с одной формы в другую данные автоматический переходили при выборе элемента списка. И исчезали при исчезали из списка.
Если стандартный метод удовлетворял бы цель, я им воспользовался бы. А то мне самому нужны все эти танцы с бубном.
Ладно! Допустим я поступил по стандарту и подчинил один справочник другому.
МОЖНО ЛИ УБРАТЬ ВОТ ЭТУ НАВИГАЦИОННУЮ ПАНЕЛЬ с боку. ОНА МНЕ НА ХРЕН Не СДАЛАСЬ.

Автор: sava1 31.05.17, 20:46

Цитата(Gigi @ 31.05.17, 20:38) *
вообще я отношусь к тем, которые очень не любят разные стереотипы

типизация переменніх - не стереотип, а правило.
Программирование основано на таких "стереотипах" и начинаются онм с набора команд процессора, среды исполнения,
среды разработки и т.д.
Вы ж садитесь в автомобиль и не ищете педали велосипедные, чтобы крутить колеса?
Если не нравится среда 1С - возьмите другую и работайте - не надо хаять инструмент.
Да он корявый, но работающий.
Кому-то не понравился молоток - он придумал пресс. Вам все карты в руки.

Автор: Gigi 31.05.17, 22:58

Цитата(sava1 @ 31.05.17, 20:46) *
Если не нравится среда 1С - возьмите другую и работайте - не надо хаять инструмент.

Да нет.... если говорить в целом 1С в меня очень устраивает.. .. просто многое хотелось бы сделать не так как платформа предлагает, а по своему.
Имею ввиду прежде всего интерфейс отображения. Т.е. какие данные в каких окнах должны отображаться.
Речь в том, что я хотел что бы динамический список отображался форме. Где нибудь во вкладке группы.
Имею ввиду что то на подобие формы с табличной частью.
Только вместо табличной части когда вставлен просто динамический список другого справочника. В данном случае: "ТОЧКА"
Отображение элементов которого зависит от текущего наименования или кода открытой формы элемента справочника. В данном случае: "ОБЪЕКТ".
И справочник; "ТОЧКА" при этом должен быть связан с справочником: "ОБЪЕКТ". Я хотел именно такой вариант интерфейса.
А не то, что владелец- подчиненный с этой боковой панелью.
поэтому я решил задачу...
В самом модуле форме элемента то, что было нужно заняло всего две строки.
знСсылкаОбъектИмя=SubFx_СерверПойскЗапись.НайтиПолучитьПоНаименованию(Конфиг,"ОБЪЕКТ", ОбъектИмя);
SubFx_СерверПойскЗапись.ЗаписатьНаСервер(Конфиг,КонфигИмя, Точка_Код, "ОбъектПринадл", знСсылкаОбъектИмя);

Первая строка эта малая функция, которая ищет значение реквизита по наименованию и его же и возвращает.
В вторая строка это процедура которая полученное значение записывает.
Вот собственно что было нужно.
Что бы взять и просто ВПЕНДРЮЧИТЬ нужный текст в этот самый реквизит с типом ссылка.
Корректно это делать или нет, но именно так и было нужно. Единственная опасность, если наименование совпадут ... хотя что ни будь придумаю. как и это решить.
Ладно! Это я так... в знак благодарности за реакцию..
Вопрос был поднят и если он решен то, опубликован!
Но любом случае всем опять спасибо!

Автор: Batchir 01.06.17, 9:56

сплошной 47046430.gif
ничего, со временем придёт понимание платформы, её возможностей и стиля разработки.
Если есть возможность, то ознакомьтесь http://pro1c.org.ua/redirect.php?http://its.1c.ua/db/v8std, думаю лишним не будет

Автор: Gigi 02.06.17, 12:07

Batchir @ Вчера, 9:56 * ,
Ду уж «Сплошной ужастик». … ну тогда кто-нибудь предложил бы решение в виде на пример: «сплошное великолепие»! smile.gifsmile.gif
Почему то, никто не предложил готовое решение и не показал свое сплошное великолепие! smile.gifsmile.gif Вместо этого, слышал про какой то велосипед, телегу с костылями и т.д. Т.е. что угодно но только не готовое решение, без лишней дискуссии.
Я то в 1С-е начал всего два месяца назад … ну и ладно, если не сплошное великолепие.
Ладно! На этот раз не знаю, «ужастик» или «великолепие» …. оно и не важно.. главное это то, что и было нужно изначально.
А не вся эта дискуссия по поводу, ужастиков и велосипедов.
Решил все-таки скинуть решение вопроса. Потому, что сам часто шастаю по форумам, и охота просто найти где ни будь готовое решение. Без необходимости самому выходить на форум и задавать вопросы и разводить дискуссию. Так что, это для тех, которые так же иногда шастают по форумам. И так же хотят всего лишь решение, без вопросов о том, для чего это нужно и того, что это так делается или нет!

//Функция для общего модуля на сервере для получения объекта по коду
Функция ПолучитьЭлементОбъектаПоКодуНомеру(Конфигурат,КонфигуратЭлемент, КодНомерПойска) Экспорт
//==========================================================================
Если Конфигурат = "Справочники" Тогда
    Попытка
        Результат = Справочники[КонфигуратЭлемент].НайтиПоКоду(КодНомерПойска);
    Исключение
        Возврат "Указанный адрес: «"+Конфигурат+"."+КонфигуратЭлемент+"» не существует!";
    КонецПопытки
ИначеЕсли  Конфигурат = "Документы" Тогда
    Попытка
        Результат = Документы[КонфигуратЭлемент].НайтиПоНомеру(КодНомерПойска);    
    Исключение
        Возврат "Указанный адрес: «"+Конфигурат+"."+КонфигуратЭлемент+"» не существует!";
    КонецПопытки
Иначе
    Возврат "Не корректное указание объекта конфирурации!";
КонецЕсли;
//==========================================================================
Если Результат.Пустая() Тогда
    Возврат "Указанный элемент объекта: «"+Конфигурат+"."+КонфигуратЭлемент+" с кодом; "+КодНомерПойска+"» не существует!";
Иначе
    Возврат Результат;
КонецЕсли;
//==========================================================================
КонецФункции

//Процедура из общего модуля для записи на сервер
Процедура ЗаписатьНаСервер(Конфигурат,КонфигуратЭлемент, КодНомерПойска, СтолбецВставки, ТекстВставки) Экспорт
//==========================================================================
//Сообщить(КодНомерПойска = "");
Если КодНомерПойска = "" Тогда    
Перейти ~ПроцедураВыход;
КонецЕсли;    
Если Конфигурат = "Справочники" Тогда
    Попытка
    РезультПойска = Справочники[КонфигуратЭлемент].НайтиПоКоду(КодНомерПойска);
    Исключение
    Сообщить("Указанный адрес: «"+Конфигурат+"."+КонфигуратЭлемент+"» не существует!");
    КонецПопытки
ИначеЕсли  Конфигурат = "Документы" Тогда
    Попытка
    РезультПойска = Документы[КонфигуратЭлемент].НайтиПоНомеру(КодНомерПойска);    
    Исключение
    Сообщить("Указанный адрес: «"+Конфигурат+"."+КонфигуратЭлемент+"» не существует!");
    КонецПопытки
Иначе
    Сообщить("Не корректное указание объекта конфирурации!");
КонецЕсли;
//==========================================================================
Если РезультПойска = "" Тогда
    Сообщить("В Списке: «"+Конфигурат+"."+КонфигуратЭлемент+"» КодНомерПойска: """ + КодНомерПойска + """ не найден!");
Иначе
    Попытка
    СтрокаОбъект = РезультПойска.ПолучитьОбъект();
    СтрокаОбъект[СтолбецВставки]=ТекстВставки;
    СтрокаОбъект.Записать();
    //Сообщить("Значение обекта по адрессу: «"+Конфигурат+"."+КонфигуратЭлемент+"."+СтолбецВставки+""» в строке: «"+СтрокаОбъект+"» успешно записан!");
    Исключение
    Сообщить("Указанный адрес: «"+Конфигурат+"."+КонфигуратЭлемент+"."+СтолбецВставки+"» не существует!");
    КонецПопытки    
    КонецЕсли;
//==========================================
~ПроцедураВыход:;
КонецПроцедуры

//И наконец тест ТОГО ЧТО БЫЛО НУЖНО в ФормеЭлемента на пример справочника с именем: "ПрисвоитьЗаписатьСсылку"
&НаКлиенте
Процедура Кнопка_ЗаписатьНаСервер_Тест(Команда)
//===========================================
Конфиг="Справочники";
КонфигЭлементФорма="ПрисвоитьЗаписатьСсылку";
КонфигЭлементСвязь="ОБЪЕКТ";
//-------------------------------------------
знКода="000000002"; //  Это условно говоря … нужно  указать код  любого нужного объекта и все дела
//===========================================
ПолученныйОбъект=ПолучитьЭлементОбъектаПоКодуНомеру(Конфиг,КонфигЭлементСвязь,знКода);
SubFx_СерверПойскЗапись.ЗаписатьНаСервер(Конфиг,КонфигЭлементФорма, Объект.Код, "ОбъектПринадл", ПолученныйОбъект); //И наконец то, что было нужно
//-------------------------------------------
Сообщить(ПолученныйОбъект);
//===========================================
КонецПроцедуры

В форме элемента все это заняло ВСЕГОЛИШЬ ДВЕ ЛИНИИ!
И вот теперь вопрос НАКОНЕЦ РЕШЕН! И без лишней дискуссии … А то, «Велосипед» не велосипед, «тележка костылей и т.д.
Так что, не знаю, как это с точки зрения велосипеда или мотоцикла или вообще «ужастика», но это то, что было нужно.
А нужно было, установить авто-связь между двумя справочниками, но при этом, что бы в каких то случаях связь имела место, а каких то нет.
Т.е. что бы из любой формы, можно было установить связь с авто-запылением по своему усмирению и на сервере и на клиенте. И сделать это под любую вставленную в форму кнопку.
Выше написанный код позволяет делать все это. И не завесить, а иногда и вовсе избавится от, того что предлагает платформа:… родитель-владелец и т.д. с этой в моем случае, для малого количества реквизитов не совсем не нужной боковой панелью навигации.
ВОТ ЧТО МНЕ БЫЛО НУЖНО!
Еще раз повторяю .. присвоить значение реквизиту ССЫЛКА на сервере. Указав просто код значения реквизита. И сделать это ПР-О-О-О-Г-Р-А-А-М-Н-О-О!
БОЛЬШЕ НИЧЕГО! Что тут было не понятного и «ужасного»?
Вот и готовое решение … а то «ужастик» не «ужастик». … достали уже с этими упреками. Вместо того, что бы просто изначально предложить такое решение, как выше составлено. Сто раз уже здесь повторил одно и то же…
Ладно! В любом случае, еще раз спасибо всем за реакцию!

Автор: Batchir 02.06.17, 13:02

Gigi, Вы ж поймите, можно написать кучу говнокода и получить результат который будет Вас удовлетворять, но правильно ли это?
А выражение типа "ну и что что говнокод за то работает" скорее говорит о человеке как о "несостоявшемся программисте",
который нахватался каких то примитивных приемчиков из других систем и теперь пытается их применить везде.

Да, в Вашей манере написания алгоритмов в 1С это именно и называется "ужастики" или "велосипеды".
Конечно это всё связано с тем что

Цитата(Gigi @ 02.06.17, 13:07) *
Я то в 1С-е начал всего два месяца назад

Если не забросите 1С и через несколько лет нарветесь на свои посты, то поймете о чем я писал.

Автор: logist 02.06.17, 13:02

Цитата(Gigi @ 02.06.17, 13:07) *
А нужно было, установить авто-связь между двумя справочниками

Непонятно тогда зачем нужен текстовый реквизит, если связь по идее ссылочная.

Цитата(Gigi @ 02.06.17, 13:07) *
А то, «Велосипед» не велосипед, «тележка костылей и т.д.

Использование меток и попыток это большая тележка костылей.

Цитата(Gigi @ 02.06.17, 13:07) *
Вместо того, что бы просто изначально предложить такое решение, как выше составлено.

Еще раз - если не умеете ставить задачу, изъясняться - вам никто не поможет, или поможет только в меру того, насколько вы дали информацию.

Вот, сейчас относительно понял в чем задача, но остается один большой вопрос - почему задача реализована так, что до входа в изменение объекта неизвестна его ссылка, а известен его код и тип... это скорее говорит о том, что реализация не продумана.

Автор: Gigi 02.06.17, 14:03

Цитата(Batchir @ 02.06.17, 13:02) *
Да, в Вашей манере написания алгоритмов в 1С это именно и называется "ужастики" или "велосипеды".

Ой ой ой ой ой smile.gifsmile.gif какие мы грамотные smile.gifsmile.gifsmile.gifsmile.gif
Ладно это Шутка! Хотя и не без доли правды.
Это вы зря ... откуда вы знаете уважаемые для чего мне все нужно? И настолько это возможно сделать стандартным путем просто и по быстрому? Вы сильно уверены в самой платформе? И в том, что она типа ВСЕ УМЕЕТ? Да уж... в мире тоже так думали, пока не получили действительно WannaCry!
Знаю я очень хваленных дипломированных программистов. И знаю не по наслышке.
Буквально сотрудник. Который уже с большим стажем....20 лет уже программист. в отличие от меня!
Он тоже так же как и Вы любит следовать стандарту и совсем не "говнокодить". И посмотрев код его "великолепия" будьте уверены Вы точно не сказали, что это
Цитата
и называется "ужастики" или "велосипеды".

Так что, он все делает, как раз по правилам и не шагу в сторону. Но то, что в итоги получилось у него МАМААА. Да это же просто ЧУШЬ СОБАЧЬЯ! Ну дебилизм ПОЛНЕЙШИЙ!
Идет столбец с данными, а там сто двойного учета данных.
Вот и весь результат этого вашего "НЕ ВЕЛОСИПЕДА!"
И он тоже как и Вы хваленный грамотный прогрммист аж с 20-ти летним стажем. От которого я тоже слышу такие же слова! ОДИН В ОДИН! При чем тоже, сильно умным выражением, грамотного программиста. smile.gifsmile.gif
Не знаю, что будет через несколько лет, за то знаю то, так нужно для цели!
Я уже говорил! ГЛАВНОЕ ЦЕЛЬ! Цель отображения данных и функциональная сторона. А остальное это как позволяет среда.
А в чем цель и в каком режиме нужно Вы это не знаете! А если бы знали посмотрел бы я на то, как вы сами "смогли" бы это сделать стандартным путем и не путем "велосипеда"!
Просто удивляюсь, как много пафоса, понтов, очковтирательства, стремления пыль пустить в глаза. "говнокодить". Сотрудник тоже "не говнокодил" но получилась ЧУШЬ!
И знаете, что я Вам скажу, думающие что 1С типа может ВСЕ!
Может я не сильно глубоко знаком с 1С, но первое впечатление от платформы не скажу что плохое, Но и при этом не супер.
Мне кажется, что 1С рассчитана основном на учет товаров. Приход -расход остаток.. на такие простенькие и примитивные подсчеты.
А что касается более гибкого учета чем просто сумма и разница в стандартном формате всего этого ....
Простой пример для сравнения. Если кто знаком с Эксель. Там есть простая функция "СУММАЕСЛИ"
Она очень удобная, потому, что может суммировать ГИБКО! А не как в 1С приход-расход и не более.
в 1С такой функции НЕТ!!!! Да! Да! я не оговорился.... И вообще в 1С много чего нет в стандарте.
Теперь понятно, почему приходиться писать "велосипед"!
В экселе валом всяких встроенных функций, а в 1С в плане ГИБКОСТИ расчета данных нет ничего такого.
Именно поэтому, у сотрудника, получилось в тоги ЧУШЬ ПОЛНЕЙШАЯ!


Цитата(logist @ 02.06.17, 13:02) *
Использование меток и попыток это большая тележка костылей.

Ну а зачем тогда ее вообще изобрели и внедрили разработчики самого языка smile.gifsmile.gif
Цитата(logist @ 02.06.17, 13:02) *
Ну ладно... отчасти согласен. Но отчасти нет. потому, что это ведь для чего то и было придумано кем то. И не "говноПрограммистом" же. Поэтому как мне кажется метки-попытки иногда стоит применять, но при этом в чем согласен, не зло употреблять.
Вот, сейчас относительно понял в чем задача, но остается один большой вопрос - почему задача реализована так, что до входа в изменение объекта неизвестна его ссылка, а известен его код и тип... это скорее говорит о том, что реализация не продумана.

Продумана продумана ... поверьте ... аж до дыр.
Что бы объяснять почему так ....гуууу ... да это долгий разговор
Могу сказать только то, что речь об учете потребления электоэнергии.
И нужен очень гибкий учет данных.
и для того, что бы объяснить это нужно объяснить весь принцип и всю специфику расчета данных.

Автор: logist 02.06.17, 14:16

Цитата(Gigi @ 02.06.17, 15:03) *
и для того, что бы объяснить это нужно объяснить весь принцип и всю специфику расчета данных.

На самом деле вы боитесь, что вам объяснят как всё надо сделать, и вы поймете что ваша тележка костылей (думаю, то что за пределами форума еще больше в масштабах) окажется ненужной, и вообще вы всё сделали не правильно.
А так то, людям которые занимаются проектированием учетных систем не надо долго объяснять, и нюансы тоже, тем более в вашем вопросе нет ничего такого специфичного - поверьте.

Цитата(Gigi @ 02.06.17, 15:03) *
аж до дыр.

До дыр в тележке костылей? Верю smile.gif

Цитата(Gigi @ 02.06.17, 15:03) *
Ну а зачем тогда ее вообще изобрели и внедрили разработчики самого языка

На всякий случай, бывают исключительные ситуации, например при работе с внешними данными, в вашем случае использование попыток, и меток (хоть они и работают, но стандартами 1С не рекомендуется их использование) совершенно ненужно.

Автор: Flexy 02.06.17, 14:18

Цитата(Gigi @ 02.06.17, 14:03) *
Может я не сильно глубоко знаком с 1С...

Да. crazy.gif
Цитата(Gigi @ 02.06.17, 14:03) *
но первое впечатление от платформы не скажу что плохое, Но и при этом не супер.
Мне кажется, что 1С рассчитана основном на учет товаров. Приход -расход остаток.. на такие простенькие и примитивные подсчеты.
А что касается более гибкого учета чем просто сумма и разница в стандартном формате всего этого ....

Имхо, 1С решает любую учетную задачу. И заточена она именно для решения учетных задач.
Цитата(Gigi @ 02.06.17, 14:03) *
Простой пример для сравнения. Если кто знаком с Эксель. Там есть простая функция "СУММАЕСЛИ"
Она очень удобная, потому, что может суммировать ГИБКО! А не как в 1С приход-расход и не более.
в 1С такой функции НЕТ!!!! Да! Да! я не оговорился.... И вообще в 1С много чего нет в стандарте.

Глупости...
Цитата(Gigi @ 02.06.17, 14:03) *
Теперь понятно, почему приходиться писать "велосипед"!

Имхо потому, что Вы не можете придумать нормального (правильного, оптимального, красивого) решения для задачи. Возможно, это по не опытности.
Цитата(Gigi @ 02.06.17, 14:03) *
В экселе валом всяких встроенных функций, а в 1С в плане ГИБКОСТИ расчета данных нет ничего такого.

Пишите в Экселе. Зачем себя так мучать и доводить 1С-кой?

З.Ы. Предложение к администрации: Может открыть отдельный раздел психологической поддержки и реабилитации для начинающих программистов и пользователей? laugh.gif

Автор: Batchir 02.06.17, 14:38

http://pro1c.org.ua/redirect.php?http://vip1c.ru/uploads/1S.mp3

Автор: Gigi 02.06.17, 15:30

Цитата(Flexy @ 02.06.17, 14:18) *
Глупости...

Глупости? ... ха-ха? smile.gifsmile.gif .. Советую Вам тогда создать партию любителей 1С. И возглавить ее если угодно! smile.gifsmile.gif А нам начинающим программистам наверно действительно требуется психологическая помощь от этого 1С. smile.gifsmile.gif
Просто лучшего нет в доступе а то.. и это массовый продукт
А так, покажите мне условно говоря подобную, функцию, как "СУММАЕСЛИ". Ну на пример ... ПОКАЖИТЕ ГДЕ ОНА в стандарте! ГДЕ? Не говоря уже о других вещах.
Я Вам покажу в Эксель подобную функцию... без проблем. А вы то же самое сможете в 1С? Вот это и определит кто из нас прав! Вы программист со стажем, или я начинающий.
Цитата(Flexy @ 02.06.17, 14:18) *
Имхо, 1С решает любую учетную задачу. И заточена она именно для решения учетных задач.

Ну конечно заточена ... именно поэтому приходиться, писать нужные функции самому. И именно поэтому, у программиста с большим стажем получился двойной учет данных.
Цитата(Flexy @ 02.06.17, 14:18) *
Пишите в Экселе. Зачем себя так мучать и доводить 1С-кой?

Да не довожу я ... это она меня доводит ... корявая. Просто слишком массовая и приходиться .... а то можно и в эксель. Не беспокойтесь утрату точно не посочувствовал бы. Я просто одурею ... какая разница в какой среде.. опять просто очко-втерательство и не более.
а то вы наверно сильно уверены, что 1С лучше, чем другое... да ладно.
Цитата(logist @ 02.06.17, 14:16) *
До дыр в тележке костылей? Верю

Я так и не понял что имеется ввиду ... оскорблениями просто кидаться это одно ... а то, как сами сделали бы если знали бы специфику это другое.
Попытка-исключение то, что не нужно в стандартном режиме согласен. Ну и ладно можно сделать по другому, ну и что с того? Ну и сделал бы. Просто так быстрее.
И вообще, мне кажется, что это просто придирки.
Потому, что ведь сами изначально ничего взамен не предложили... Короче ... опять столько дискуссии и обсуждения. Вместо, изначального решения.
Цитата(logist @ 02.06.17, 14:16) *
вообще вы всё сделали не правильно

Правильно не правильно это можно проверить только по РЕЗУЛЬТАТУ!
РЕЗУЛЬТАТ! Вот это и есть аргумент правильно или нет.
Поэтому я знаю одно!
Сотрудник сделал "дело" и сильно любит пыл пускать в глаза. и казаться умным. И при этом не скажу, что плохой специалист. стаж работы 20 лет.
Так вот, сделав "дело" и не "велосипедное" и набрав очки перед начальством что в итоги.
Я сижу и мудохаюсь с тем дебилизмом, которое хваленный специалист сделал.
Так что, только РЕЗУЛЬТАТ! Только это показывает правильно или нет. Ну не знаю.. я так думаю.
Ладно ... не буду спорить дальше .. на этом воздержусь.
Как угодно отзывайтесь...
Еще раз всем спасибо за реакцию!
И думаю, нет повода обижаться и негодовать.
Ладно! Всем желаю "не говнокодить" но при этом, ГЛАВНОЕ что бы от этого итог был НОРМАЛЬНЫЙ! А не такой как у сотрудника!
Пока!






Автор: Batchir 02.06.17, 15:50

Цитата(Gigi @ 02.06.17, 15:03) *
И он тоже как и Вы хваленный грамотный прогрммист аж с 20-ти летним стажем. От которого я тоже слышу такие же слова! ОДИН В ОДИН! При чем тоже, сильно умным выражением, грамотного программиста

Я б на Вашем месте задумался - почему Вам человек с 20 летним опытом повторяет один в один слова человека с 12 летним опытом будучи не знакомы друг с другом.

Автор: Bernet 02.06.17, 15:57

Gigi @ Сегодня, 16:30 * ,
Вы не злитесь, просто ваш код действительно выглядит немного странно. Вы писали что вам "неудобно" пользоваться тем что платформа дает по умолчанию и хотелось бы переделать некоторые функции. Это наверно неправильно, поскольку, как правило, когда кто-то изучает новую платформу, то он подстраивается под платформу, а не перекраивает платформу под себя. Элементарно, программируя, на Паскале, потом сесть кодить на C# или туже 1С и начать там лепить метки, трай-кечи на каждом шагу естественно будет неправильно, т.к. тут есть свои инструменты которые позволяют обойтись без этого, делая код более читабельным, удобным и лаконичным. Чтобы начать что-то менять под себя, сначала разберитесь с тем что уже есть и как с этим работать

Автор: logist 02.06.17, 15:58

Цитата(Gigi @ 02.06.17, 16:30) *
Потому, что ведь сами изначально ничего взамен не предложили

Предложил бы, но, я сразу написал - не понимаю задачу, поэтому ничего не могу предложить

Цитата(Gigi @ 02.06.17, 16:30) *
РЕЗУЛЬТАТ! Вот это и есть аргумент правильно или нет.

Тут вы правы, можно кишку вывести через горло, срать будет - это результат, а как оно реализовано... smile.gif

Автор: Bernet 02.06.17, 16:00

logist @ Сегодня, 16:58 * ,

Цитата
можно кишку вывести через горло, срать будет - это результат, а как оно реализовано
аргумент 12201689.gif

Автор: Vofka 02.06.17, 16:00

Ребята, давайте может кто-то создаст новую тему где-то в Офтопе и вы там продолжите? smile.gif

Автор: Gigi 02.06.17, 16:26

Цитата(Bernet @ 02.06.17, 16:00) *
Тут вы правы, можно кишку вывести через горло, срать будет - это результат, а как оно реализовано..

Гууу ... вилкой и ложной кушать говно тоже можно! smile.gifsmile.gif
Хотя ладно! согласен согласен... важен не только результат, но и эстетика. Все правильно и еще большее скажу ... кушать сидя на унитазе тоже можно, потому, что так удобно. Согласен!
Поэтому, важен прежде всего Результат , но при этом эстетика тоже важна. И суть в том, что важно и то и другое.
Но, дело в то, что я то недавно в 1С недавно, поэтому на данном этапе мне не до эстетики. Надо срочно решать задачу.

Цитата(Bernet @ 02.06.17, 15:57) *
Вы не злитесь, просто ваш код действительно выглядит немного странно.

Я все это понимаю ...но ведь недавно в 1С.. не все сразу... тем более, как будто начальство откроет код и посмотрит smile.gifsmile.gif начальству нужен только результат! Так что, какое отношение, такое и способ. smile.gifsmile.gif
Так что, всему свое время, а на данном этапе пока так.
Все! уже округляюсь...
Всем спасибо и пока!



Автор: Bernet 02.06.17, 16:31

Gigi @ Сегодня, 17:26 * ,

Цитата
как будто начальство откроет код и посмотрит
после вас код могут открыть другие программисты, или коллеги если вы не один программист и акуеть от счастья smile.gif

Автор: logist 02.06.17, 16:36

Все всех поняли, тему закрою.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua