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