Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Запись значения дополнительного реквизита

Запись значения дополнительного реквизита
Я
   kobzon2
 
19.11.20 - 16:13
Всем доброго вечера. Нужна помощь коллективного разума)

В ЕРП 2.4 есть справочник ДоговорыКонтрагентов. Когда-то нужно было сделать возможность отслеживать дату его создания.
Сделали через дополнительные реквизиты.

Процедура Расш1_ПередЗаписьюНаСервереПосле(Отказ, ТекущийОбъект, ПараметрыЗаписи)

Если ТекущийОбъект.Ссылка.Пустая() Тогда

НовыйРеквизит = ТекущийОбъект.ДополнительныеРеквизиты.Добавить();   
НовыйРеквизит.Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ДатаСоздания"); 
НовыйРеквизит.Значение = ТекущаяДата();                                                                    

КонецЕсли;

КонецПроцедуры


Вроде всё логично, если новый договор то проставляем в доп. реквизит текущую дату. Процедура ПередЗаписьюНаСервере, следовательно далее будет запись.
Потом было замечено, что на один такой договор создается по несколько одинаковых записей в доп. реквизиты. Хотя по идее после первой записи, второй раз условие бы уже не отработало.
Добавил условие на проверку имеющихся записей


Процедура Расш1_ПередЗаписьюНаСервереПосле(Отказ, ТекущийОбъект, ПараметрыЗаписи)

Если ТекущийОбъект.Ссылка.Пустая() Тогда
СвойствоДопРеквизита=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ДатаСоздания"); 
ДопРеквизит=ТекущийОбъект.ДополнительныеРеквизиты.Найти(СвойствоДопРеквизита, "Свойство"); 
Если ДопРеквизит=Неопределено Тогда
                                                                          
НовыйРеквизит = ТекущийОбъект.ДополнительныеРеквизиты.Добавить();
НовыйРеквизит.Свойство = СвойствоДопРеквизита;
НовыйРеквизит.Значение = ТекущаяДата();
Иначе
ДопРеквизит.Значение = ТекущаяДата(); 
КонецЕсли;
КонецЕсли;

КонецПроцедуры


После на всякий случай даже записывал объект.
В итоге появляется другая проблема...
Создаю договор, записываю. Если закрыть форму договора и открыть снова, то дата будет на форме в доп. реквизите.
Если записать, не закрывая форму, снова нажать записать, потом закрыть и открыть форму, то на форме в доп. реквизите пусто.

Где я туплю, может кто сказать?))
   DmitriyDI
 
1 - 19.11.20 - 16:28
(0) я думаю тут бы подошло больше доп. свойство, чем доп. реквизит, а так надо смотреть функции БСП, которые сохраняют доп. реквизиты с формы при сохранении элемента из формы.
А так можно вынести функцию вторую перед записью в модуль объекта, из модуля формы.
   dka80
 
2 - 19.11.20 - 16:32
УправлениеСвойствами.ЗаписатьСвойствоУОбъекта
   DmitriyDI
 
3 - 19.11.20 - 16:38
(2) Точно это подойдет? перед записью объекта в 1С данная функция его перезапишет. тут надо добавить свойства, чтобы уже при записи они сами записались.
   dka80
 
4 - 19.11.20 - 16:41
(3) если вручную изменят на форме, то перезапишет. Лучше видимость на форме отключить
   kobzon2
 
5 - 19.11.20 - 16:43
(4) Видимость на форме можно сказать отключена. Видимость появляется при выборе определенного значения другого реквизита на форме.
   dka80
 
6 - 19.11.20 - 16:46
(5) тогда записывайте в элемент формы значение, а при записи оно уже автоматически запишется куда надо.
http://catalog.mista.ru/1c/articles/867282/

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.