1c процедура обработки проведения
Листинг 6.1. Процедура «ОбработкаПроведения ()»
Процедура ОбработкаПроведения (Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора внесенные вручную изменения будут утеряны!!!
// регистр ОстаткиМатериалов Приход
Движения. ОстаткиМатериалов. Записывать = Истина;
Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
Движение = Движения. ОстаткиМатериалов. Добавить ();
Движение. ВидДвижения = ВидДвиженияНакопления. Приход;
Движение. Период = Дата;
Движение. Материал = ТекСтрокаМатериалы. Материал;
Движение. Склад = Склад;
Движение. Количество = ТекСтрокаМатериалы. Количество;
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Конструктор создал обработчик события ОбработкаПроведения
объекта конфигурации Документ ПриходнаяНакладная, поместил его
в модуль объекта и открыл текст модуля.
Событие ОбработкаПроведения является одним из важнейших
событий, связанных с документом. Это событие возникает при проведении документа. Основное назначение обработчика данного
события – генерация движений по документу. Выполнение различных
операций с данными в процедуре обработчика влияет на состояние
учета. Таким образом, именно в эту процедуру разработчик должен
поместить собственные алгоритмы преобразования данных, выпол-
няемые в момент проведения документа.
Поясним текст процедуры обработчика.
Объект встроенного языка ДокументОбъект имеет свойство Движения.
Оно возвращает объект КоллекцияДвижений, содержащий коллекцию
наборов записей регистров, по которым этот документ может форми-
ровать движения.
К конкретному набору записей этой коллекции можно обратиться,
указав через точку имя регистра, которому принадлежит этот набор
записей. Например, Движения. ОстаткиМатериалов.
Затем через точку можно использовать различные методы набора
записей регистра, например, Движения. ОстаткиМатериалов. Доба-
вить (). Метод Добавить () добавляет новую запись в набор записей.
В первой строке процедуры мы устанавливаем свойство Записывать
набора записей регистра в значение Истина. То есть в явном виде
указываем, что после завершения обработки проведения платформа
должна будет записать этот набор записей в базу данных.
Внутри обработчика расположен цикл Для Каждого … Из … Цикл.
Он предназначен для перебора строк табличной части нашего
документа.
В цикле обращение к табличной части документа происходит по
имени (Материалы). Переменная ТекСтрокаМатериалы содержит
объект с данными текущей строки табличной части документа. Эта
переменная создается в начале цикла и меняется по мере его прохож-
дения.
В первой строке тела цикла, используя метод Добавить (), мы
добавляем к набору записей, который создает наш документ
в регистре, новую запись. Тем самым мы создаем объект РегистрНа-
копленияЗапись и сохраняем его в переменной Движение.
Используя этот объект, мы можем обратиться к полям этой записи,
указав имя поля через точку от этой переменной (например,
Движение. Количество). Причем Движение. Материал, Движение. Склад – это измерения
регистра, Движение. Количество – это ресурс регистра, а Движе-
ние. ВидДвижения и Движение. Период – стандартные реквизиты
регистра, которые создаются автоматически.
Чтобы присвоить полям новой записи регистра соответствующие
значения полей документа, мы обращаемся к полям табличной части,
указав имя поля через точку от переменной ТекСтрокаМатериалы
(например, ТекСтрокаМатериалы. Материал).
Заметим, что Склад – это реквизит шапки документа, а Дата – стан-
дартный реквизит документа, который создается автоматически.
Причем в цикле меняются только значения полей табличной части
документа – ТекСтрокаМатериалы. Материал и ТекСтрокаМате-
риалы. Количество.
ЧТО ДОЛЖНО ПОЛУЧИТЬСЯ? ВЫДАЕТ ОШИБКИ
вместо всей этой портянки текст ошибки (ошибок) больше поможет и вам и отвечающему