Записать в регистр документ

1. user1200515 06.05.19 10:56 Сейчас в теме
Документ получает из регистра сведений последний Статус документа в реквизит формы документа
Если у данного документа последний статус не соответствует записи регистра(например пользователь изменил статус), то при проведении документа должна появиться запись в регистре
Статус в документе- это реквизит формы, не знаю как правильно проверить его и записать
Этот код работал в модуле объекта, если статус сделать реквизитом документа, но статус должен быть реквизитом формы
&НаСервере
Процедура ПриЗаписи(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	 Если Статус <> ОбщийМодуль1.ПолучитьСтатусДокумента1(Объект.Ссылка) Тогда
		ОбщийМодуль1.ЗаписатьСтатусДокумента(Объект.Ссылка);
	КонецЕсли; 
КонецПроцедуры
По теме из базы знаний
Найденные решения
6. tusv 212 06.05.19 12:14 Сейчас в теме
(1)А Зачем Вы убрали Второй параметр Статус из процедуры ЗаписатьСтатусДокумента ?
Верните его немедленно:) И все будет работать
Но можно статус из модуля формы передать в модуль объекта через Дополнительные свойства в ПередЗаписью
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	ТекущийОбъект.ДополнительныеСвойства.Вставить("Статус",Статус);
КонецПроцедуры

А в модуле объекта
Процедура ПриЗаписи(Отказ)
	Перем Статус;
	Если ДополнительныеСвойства.Свойство("Статус",Статус)
		И не Статус = Неопределено
		и не Статус = ОбщийМодуль1.ПолучитьСтатусДокумента1(Ссылка) Тогда
		//Пишем в регистр
		ОбщийМодуль1.ЗаписатьСтатусДокумента(Ссылка, Статус);
	КонецЕсли;	
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Vitaly1C8 06.05.19 11:42 Сейчас в теме
(1) На мой взгляд Вам необходимо выполнять запись в регистр из события Формы ПередЗаписью()
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)	
      // Тут записываем в регистр значение из реквизита Формы
КонецПроцедуры
6. tusv 212 06.05.19 12:14 Сейчас в теме
(1)А Зачем Вы убрали Второй параметр Статус из процедуры ЗаписатьСтатусДокумента ?
Верните его немедленно:) И все будет работать
Но можно статус из модуля формы передать в модуль объекта через Дополнительные свойства в ПередЗаписью
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	ТекущийОбъект.ДополнительныеСвойства.Вставить("Статус",Статус);
КонецПроцедуры

А в модуле объекта
Процедура ПриЗаписи(Отказ)
	Перем Статус;
	Если ДополнительныеСвойства.Свойство("Статус",Статус)
		И не Статус = Неопределено
		и не Статус = ОбщийМодуль1.ПолучитьСтатусДокумента1(Ссылка) Тогда
		//Пишем в регистр
		ОбщийМодуль1.ЗаписатьСтатусДокумента(Ссылка, Статус);
	КонецЕсли;	
КонецПроцедуры
Показать
7. user1200515 06.05.19 12:50 Сейчас в теме
(6) Спасибо, дополнительные свойства что то новое для меня)
Все работает)))
2. user1200515 06.05.19 11:12 Сейчас в теме
И чтобы записать документ в регистр я написала такой код
Менеджер = РегистрыСведений.СтатусыДокументов.СоздатьМенеджерЗаписи();
	Менеджер.Период = ТекущаяДата();
	Менеджер.Документ = Документ.Ссылка; 
	Менеджер.Статус = Документ.Статус;
	Менеджер.Записать();

Документ передается в параметрах, я так понимаю Документ.Статус не запишется, это же реквизит формы, как можно передать в общий модуль реквизит формы?
3. herfis 501 06.05.19 11:35 Сейчас в теме
Фигня какая-то. Судя по коду записи в регистр вы пытаетесь использовать регистр в качестве лога изменения реквизита документа. Но при этом отказываетесь от реквизита документа. Ничего не понимаю.
5. herfis 501 06.05.19 11:46 Сейчас в теме
Если речь в самом деле о хранении истории изменений реквизита (а иначе непонятно, почему регистр независимый и периодом выступает текущая дата), то достаточно в "перед записью" в модуле объекта сравнить старое значение реквизита документа (из СУБД) с записываемым. Если отличаются - делать там же (в "перед записью") запись в регистр. Это будет работать даже при программном изменении реквизита.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот