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