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



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


Введем в документ следующие данные:

Обратите внимание на то, что дата документа не совпадает с датами отдельных записей, которые мы создаем в движениях документа. [479]

Нажмем "Записать", и из формы списка документа откроем движения нашего документа в регистре "ОстаткиМатериалов" (кнопка "Перейти").

Вы видите, что записи регистра накопления в точности соответствуют тем, которые мы создали в документе:

Таким образом, мы добились поставленной цели: с одной стороны, задавая дату документа, мы можем фиксировать момент внесения изменений в записи регистра, с другой стороны – для каждой создаваемой нами записи регистра, мы можем указать индивидуальное значение поля "Период".

Теперь займемся "ужесточением" требований, предъявляемых к тому, как наш документ формирует записи регистра, и рассмотрим два типичных варианта.

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

Для этого в обработчик события "Перед записью" формы документа добавим следующий текст:

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

   Для Каждого ЗаписьРегистра Из Движения.ОстаткиМатериалов Цикл

       ЗаписьРегистра.Период = Дата;

   КонецЦикла;

КонецПроцедуры [480]

 

Снова запустим 1С:Предприятие в режиме отладки, откроем наш документ и нажмем "Записать". Открыв движения документа в регистре "ОстаткиМатериалов" увидим, что значение поля "Период" у всех записей стало равно дате документа:

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

Если программно вызвать метод Записать() у объекта нашего документа, он будет записан без участия формы документа. Это значит, что событие "При записи" формы документа вызвано не будет, и наш код обработчика не отработает.




- Начало -  - Назад -  - Вперед -