1С-Предприятие 8.0. Практическое пособие разработчика



Глава 15. Создание документа ввода начальных остатков - часть 3


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

Событие "Перед записью", в случае интерактивной записи документа, сначала будет вызвано у формы документа, а затем объекта документа (смотри схему событий в раздел "Последовательность событий при записи документа из форм документа" на странице 581). Поэтому вернемся в конфигуратор удалим из модуля формы добавленный нами текст и создадим обработчик события "Перед записью" в модуле объекта документ:

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

   //Определить нужно ли обновлять дату в движениях

   ОбновитьДатуДвижений = ЭтоНовый() Или Движения.ОстаткиМатериалов.Модифицированность();

   Если Не ОбновитьДатуДвижений Тогда // Проверить, что дата изменилась

       Запрос = Новый Запрос;

       Запрос.УстановитьПараметр("ТекущийДокумент", Ссылка);

       Запрос.Текст =

       "ВЫБРАТЬ

       |    ВводНачальныхОстатковНоменклатуры.Дата

       |ИЗ

       |    Документ.ВводНачальныхОстатковНоменклатуры КАК ВводНачальныхОстатковНоменклатуры

       |ГДЕ

       |    ВводНачальныхОстатковНоменклатуры.Ссылка = &ТекущийДокумент";

       Выборка = Запрос.Выполнить().Выбрать();

       Выборка.Следующий();

       ОбновитьДатуДвижений = Выборка.Дата <> Дата;

   КонецЕсли;

   //Установить всем новую дату, если нужно




Содержание  Назад  Вперед