Разработка и Конфигурация · 10 мин
Конструктор движения регистров в 1С: как открыть и настроить
Как открыть конструктор движения регистров в 1С: пошаговая инструкция для конфигуратора, настройка правил проведения, типичные ошибки и способы проверки результата.
Конструктор движения регистров в 1С — это встроенный помощник конфигуратора, который автоматически формирует программный код проведения документа по регистрам. Вместо ручного написания запросов и присвоения значений измерениям разработчик описывает правило в визуальной форме, а платформа генерирует готовый код процедуры ОбработкаПроведения.
Открыть конструктор можно только в конфигураторе — в режиме «1С:Предприятие» этот инструмент недоступен. Понадобятся права на изменение конфигурации, а в типовых решениях — понимание того, что прямая правка объекта снимет его с полной поддержки. Ниже разобраны все способы вызова конструктора, настройка правил движения и проверка сгенерированного кода.
Где находится конструктор движения регистров
Основная точка входа — окно редактирования объекта «Документ». Откройте конфигуратор, в дереве конфигурации разверните ветку «Документы» и дважды щёлкните по нужному документу. В открывшемся окне перейдите на вкладку «Проведение» — именно здесь расположена кнопка «Конструктор движения регистров».
Кнопка активна только при выполнении двух условий. Во-первых, у документа на этой же вкладке должен быть разрешён режим проведения (флажок «Проведение» установлен в значение «Разрешить»). Во-вторых, в таблице «Движения» должен быть отмечен хотя бы один регистр — по нему конструктор и построит правило.
Второй способ — через меню конструкторов в модуле объекта. Откройте модуль документа (кнопка «Модуль объекта» в окне редактирования), установите курсор внутрь процедуры ОбработкаПроведения и вызовите «Конструкторы» → «Конструктор движений» либо воспользуйтесь контекстным меню правой кнопки мыши. Результат идентичен: откроется то же окно настройки правил.
Пошаговый порядок открытия конструктора
Последовательность действий одинакова для большинства конфигураций на управляемых и обычных формах, поскольку работа идёт в конфигураторе, а не в пользовательском режиме.
- 1Откройте конфигуратор и разверните ветку «Документы» в дереве конфигурации
- 2Дважды щёлкните нужный документ, чтобы открыть окно редактирования объекта
- 3Перейдите на вкладку «Проведение» и убедитесь, что проведение разрешено
- 4В списке «Движения» отметьте регистры, по которым документ должен формировать записи
- 5Нажмите кнопку «Конструктор движения регистров» — откроется окно настройки правил
- 6Укажите табличную часть, регистр и соответствие полей, затем нажмите «ОК»
- 7Проверьте сгенерированный код в процедуре ОбработкаПроведения модуля объекта
Открытие из модуля объекта
Если окно редактирования объекта уже закрыто, а модуль документа открыт, конструктор вызывается быстрее: меню «Текст» → «Конструкторы» → «Конструктор движений» или через контекстное меню. Курсор должен стоять в теле процедуры ОбработкаПроведения, иначе пункт меню будет недоступен.
Настройка правила движения в окне конструктора
В открывшемся окне конструктора задаются три ключевых параметра. Первый — табличная часть документа, из которой берутся данные. Если движения формируются из шапки, выбирается вариант без табличной части. Второй параметр — регистр, по которому строится движение. Третий — соответствие реквизитов документа полям регистра: измерениям, ресурсам и реквизитам.
Соответствие полей конструктор заполняет автоматически по совпадению имён и типов, но автоподбор всегда нужно проверять. Частая ситуация: реквизит документа называется «Товар», а измерение регистра — «Номенклатура»; автоматического сопоставления не произойдёт, и поле придётся указать вручную через выбор из списка реквизитов.
Для каждой пары «регистр — табличная часть» создаётся отдельное правило. Если документ делает движения по регистру остатков и регистру сведений, в конструкторе будет две записи. Кнопка «Очистить» удаляет выбранное правило, не затрагивая остальные.
Перед открытием конструктора удобно привести имена реквизитов документа и полей регистра к единому смыслу: «Номенклатура» → «Номенклатура», «Количество» → «Количество». Тогда автоматическое сопоставление полей сработает почти полностью, и ручная правка сведётся к минимуму.
Что конструктор пишет в модуль документа
После нажатия «ОК» конструктор формирует код в процедуре ОбработкаПроведения: создаёт наборы записей по выбранным регистрам, обходит табличную часть запросом и заполняет движения. Типовой фрагмент выглядит так:
// регистр ОстаткиТоваров Приход
Движения.ОстаткиТоваров.Записывать = Истина;
Для Каждого ТекСтрокаТовары Из Товары Цикл
Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаТовары.Количество;
КонецЦикла;Важная особенность: конструктор перезаписывает существующий код. Если процедура ОбработкаПроведения уже содержит вручную написанные проверки, контроль остатков или движения по другим регистрам, платформа предложит заменить или дополнить код. Вариант «дополнить» вставляет новые блоки, но конфликты имён переменных придётся разрешать вручную.
Сгенерированный код — это стартовая заготовка, а не финальное решение. В нём нет контроля отрицательных остатков, блокировок данных и обработки исключительных ситуаций. Эти механизмы дописываются разработчиком после того, как базовое движение сформировано и проверено.
Типичные ошибки при работе с конструктором
Большинство проблем возникает не в момент открытия конструктора, а на этапе настройки правил и последующего проведения документа. Знание типовых сценариев экономит время отладки.
Отдельная группа ошибок связана с типовыми конфигурациями. Прямая правка документа в типовом решении требует включения возможности изменения и частично снимает объект с поддержки — обновления конфигурации затем придётся накладывать вручную. Безопасная альтернатива для типовых решений — расширение конфигурации, где переопределяется обработчик проведения.
Проверка результата после генерации кода
После того как конструктор сформировал код, обновите конфигурацию базы данных (клавиша F7 в конфигураторе) и проверьте движения в пользовательском режиме. Создайте тестовый документ, заполните табличную часть и проведите его.
Затем откройте движения документа: в форме документа — «Ещё» → «Движения документа» либо через соответствующий регистр. Сверьте, что записи созданы по всем ожидаемым регистрам, измерения заполнены, а вид движения и количество соответствуют данным документа.
Как проверить результат
По каждому отмеченному регистру есть строки движений
Регистр пуст — проверьте, стоит ли Записывать = Истина и отмечен ли регистр в движениях
Все измерения содержат значения из документа
Пустые измерения — не настроено соответствие полей в конструкторе
Приход для поступления, Расход для списания
Остатки ведут себя зеркально — перепутан вид движения
Движения перезаписываются без дублей
Строки задваиваются — набор записей не очищается перед заполнением
Когда конструктор не подходит и что использовать вместо него
Конструктор рассчитан на простые линейные сценарии: одна табличная часть — один регистр, прямое соответствие полей. Он не справится со сложной логикой — распределением сумм по партиям, расчётом себестоимости, контролем остатков с блокировками, движениями, зависящими от вида операции документа.
Как выбрать действие
Полезный приём даже в сложных сценариях — сгенерировать код конструктором как каркас, а затем заменить обход табличной части на запрос с соединениями и добавить контроль. Так сохраняется правильная структура обращения к наборам записей, и снижается риск синтаксических ошибок.
Что важно запомнить
Конструктор движения регистров открывается в конфигураторе: окно редактирования документа → вкладка «Проведение» → кнопка «Конструктор движения регистров», либо из модуля объекта через меню «Конструкторы». Перед запуском разрешите проведение и отметьте регистры, после генерации обязательно проверьте соответствие полей и движения тестового документа.
Частые вопросы
Почему кнопка «Конструктор движения регистров» неактивна?
Проверьте два условия на вкладке «Проведение» окна редактирования документа: проведение должно быть разрешено, а в списке движений отмечен хотя бы один регистр. Если оба условия выполнены, убедитесь, что конфигурация открыта на изменение и у вас есть права на правку объектов.
Можно ли открыть конструктор в режиме «1С:Предприятие»?
Нет. Конструктор движений — инструмент разработки и доступен только в конфигураторе. В пользовательском режиме можно лишь просматривать уже сформированные движения документа через «Ещё» → «Движения документа».
Конструктор предлагает заменить код процедуры ОбработкаПроведения. Что делать?
Если процедура уже содержит ручные доработки, сначала сохраните её текст в файл. Затем выбирайте вариант «дополнить» — конструктор вставит новые блоки, не стирая существующие. После этого вручную устраните возможные конфликты имён переменных и лишние присвоения Записывать.
Почему после проведения документа движения пустые?
Чаще всего причина в том, что в сгенерированном коде отсутствует строка Движения.ИмяРегистра.Записывать = Истина; либо табличная часть документа не заполнена. Также проверьте, что регистр отмечен в движениях документа и что соответствие полей в конструкторе настроено корректно.
Как изменить сгенерированный код, если изменилась структура регистра?
Можно заново открыть конструктор и пересоздать правило — он подтянет актуальные поля регистра. Либо отредактируйте код вручную: добавьте присвоения новым измерениям и удалите обращения к удалённым полям, иначе при проведении возникнет ошибка «Поле объекта не обнаружено».
Можно ли использовать конструктор для регистров сведений и бухгалтерии?
Да, конструктор работает с регистрами накопления, сведений, бухгалтерии и расчёта. Для регистра бухгалтерии дополнительно указываются счета дебета и кредита, для регистра расчёта — вид расчёта и период действия. Принцип настройки соответствия полей при этом одинаков.