Глава 15. Создание документа ввода начальных остатков - часть 3
Чтобы предусмотреть возможность синхронизации периода движений документа с датой документа и в случае программной записи объекта Документ, следует использовать обработчик события "Перед записью" объекта документ, а не формы документа. [481]
Событие "Перед записью", в случае интерактивной записи документа, сначала будет вызвано у формы документа, а затем объекта документа (смотри схему событий в раздел "Последовательность событий при записи документа из форм документа" на странице 581). Поэтому вернемся в конфигуратор удалим из модуля формы добавленный нами текст и создадим обработчик события "Перед записью" в модуле объекта документ:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
//Определить нужно ли обновлять дату в движениях
ОбновитьДатуДвижений = ЭтоНовый() Или Движения.ОстаткиМатериалов.Модифицированность();
Если Не ОбновитьДатуДвижений Тогда // Проверить, что дата изменилась
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| ВводНачальныхОстатковНоменклатуры.Дата
|ИЗ
| Документ.ВводНачальныхОстатковНоменклатуры КАК ВводНачальныхОстатковНоменклатуры
|ГДЕ
| ВводНачальныхОстатковНоменклатуры.Ссылка = &ТекущийДокумент";
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ОбновитьДатуДвижений = Выборка.Дата <> Дата;
КонецЕсли;
//Установить всем новую дату, если нужно