Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1С.docx
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
40 Кб
Скачать
☆

37.Как с помощью конструктора создать движения документа по нескольким регистрам

Откроем в конфигураторе окно редактирования объекта конфигурации Документ ПриходнаяНакладная и перейдем на закладку Движения. В списке регистров отметим, что документ будет создавать теперь движения и по регистру СтоимостьМатериалов. Запустим конструктор движений и согласимся с тем, что существующая процедура ОбработкаПроведения будет замещена.

Перед нами откроется окно конструктора движений, которое будет содержать созданные нами ранее движения документа по регистру ОстаткиМатериалов. Добавим в список регистров, по которым формируются движения, еще один – СтоимостьМатериалов. Выберем для него ту же табличную часть Материалы и заполним выражения.

Для ресурса Стоимость выберем значения реквизита табличной части Сумма

Нажмем OK и посмотрим на текст, который сформировал конструктор (листинг 3.1).

Листинг 3.1. Процедура ОбработкаПроведения()

Процедура ОбработкаПроведения(Отказ, Режим)

//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

// Данный фрагмент построен конструктором.

// При повторном использовании конструктора,

// внесенные вручную изменения будут утеряны!!!

Для Каждого ТекСтрокаМатериалы Из Материалы Цикл

// Регистр ОстаткиМатериалов Приход

Движение = Движения.ОстаткиМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

Движение.Период = Дата;

Движение.Материал = ТекСтрокаМатериалы.Материал;

Движение.Склад = Склад;

Движение.Количество = ТекСтрокаМатериалы.Количество;

КонецЦикла;

Для Каждого ТекСтрокаМатериалы Из Материалы Цикл

// Регистр СтоимостьМатериалов Приход

Движение = Движения.СтоимостьМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

Движение.Период = Дата;

Движение.Материал = ТекСтрокаМатериалы.Материал;

Движение.Стоимость = ТекСтрокаМатериалы.Сумма;

КонецЦикла;

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

КонецПроцедуры

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

В нашем случае табличная часть всего одна, поэтому можно объединить эти два цикла в один, закомментировав следующие строки (листинг 3.2):

Листинг 3.2. Объединение двух циклов в один

// КонецЦикла;

// Для Каждого ТекСтрокаМатериалы Из Материалы Цикл

Запустим 1С:Предприятие в режиме отладки и перепроведем документы ПриходнаяНакладная №1 и №2.

Затем откроем Приходную накладную №1 и убедимся, что документ создает желаемые записи в регистрах накопления.

38.Что такое оборотный регистр накопления?

Оборотный регистр накопления очень похож на знакомый уже нам регистр остатков, но для него понятие «остаток» не имеет смысла. Оборотный регистр накапливает только обороты, остатки ему безраз­личны. Поэтому единственной виртуальной таблицей, которую будет создавать система для такого регистра, будет таблица оборотов. В остальном оборотный регистр ничем не отличается от регистра остатков.

При создании оборотного регистра накопления нет особой сложности в определении того, какие именно данные должны являться измерениями регистра - мы можем назначить в качестве его измерений любые нужные нам данные. Совсем иная ситуация в случае регистра накопления, поддерживаю­щего накопление остатков. Для него выбор измерений должен выпол­няться исходя из того, что движения регистра могут быть осущест­влены в две стороны: приход и расход. Таким образом, в качестве измерений нужно выбирать те данные, по которым движения точно будут осуществляться как в одну, так и в другую сторону.