К статье
Практический материал

Разработка и Конфигурация · 12 мин

Как открыть конструктор движений в 1С

Как открыть конструктор движений в 1С: где находится кнопка, условия доступности, настройка проведения документа и типичные ошибки при работе с конструктором.

Конструктор движений — это встроенный инструмент конфигуратора 1С, который автоматически формирует код проведения документа по регистрам. Вместо ручного написания обработчика «ОбработкаПроведения» разработчик указывает, какие реквизиты документа в какие измерения и ресурсы регистра попадают, а платформа генерирует готовый программный код на встроенном языке.

Инструмент доступен только в конфигураторе и только для объектов, у которых есть движения — то есть для документов, привязанных хотя бы к одному регистру (накопления, сведений, бухгалтерии или расчёта). Если попытаться найти конструктор в пользовательском режиме 1С:Предприятие, его там не будет: он работает исключительно на этапе разработки и доработки конфигурации.

Ниже разобраны точные шаги открытия конструктора, условия, при которых кнопка появляется, типичные причины её отсутствия и порядок проверки сгенерированного кода перед записью в модуль.

Где находится конструктор движений и что он делает

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

Физически конструктор запускается из модуля объекта документа. Это принципиальный момент: если открыть модуль формы документа или модуль менеджера, кнопка конструктора движений там будет недоступна, потому что проведение описывается именно в модуле объекта, в обработчике события «ОбработкаПроведения».

Результат работы конструктора — текст процедуры на встроенном языке, который вставляется в модуль. Его можно редактировать вручную, дополнять условиями, контролем остатков и другими проверками. Конструктор не блокирует дальнейшую ручную доработку кода.

Пошаговая инструкция: как открыть конструктор

Последовательность действий одинакова для большинства конфигураций на платформе 1С:Предприятие 8.3, независимо от того, работаете вы с типовым решением или с самописной конфигурацией.

Порядок открытия конструктора движений
  1. 1
    Запустите конфигуратор и откройте нужную информационную базу под пользователем с правами на изменение конфигурации
  2. 2
    В дереве конфигурации раскройте ветку «Документы» и найдите нужный документ
  3. 3
    Правой кнопкой мыши вызовите контекстное меню и выберите «Открыть модуль объекта»
  4. 4
    В тексте модуля найдите или создайте процедуру ОбработкаПроведения с параметрами Отказ и Режим
  5. 5
    Поставьте курсор внутрь процедуры и нажмите кнопку «Конструктор движений» на панели инструментов либо откройте меню «Конструкторы» → «Конструктор движений...»
  6. 6
    В открывшемся окне выберите тип регистра, конкретный регистр и при необходимости табличную часть документа
  7. 7
    Нажмите «Заполнить выражения» для автоматического сопоставления полей, проверьте соответствия и нажмите «ОК»

После нажатия «ОК» конструктор сформирует код и вставит его в модуль в позицию курсора. Если процедура «ОбработкаПроведения» уже содержит текст, конструктор предложит заменить существующий код либо добавить новый — внимательно читайте диалог, чтобы не потерять ранее написанную логику.

Для документов с несколькими табличными частями конструктор запускают отдельно для каждой части, формируя несколько блоков движений в одной процедуре проведения.

Условия, при которых конструктор доступен

Кнопка конструктора движений неактивна или отсутствует, если не выполнены базовые условия. Главное из них — у документа должны быть указаны регистры, по которым он проводится. Это настраивается в палитре свойств документа на закладке «Движения»: там отмечаются регистры накопления, сведений, бухгалтерии или расчёта.

Второе условие — у документа включено проведение. Если в свойствах документа «Проведение» установлено в значение «Запретить», обработчик проведения не используется, и конструктор теряет смысл: платформа не даст открыть его для такого объекта.

Третье условие — открыт именно модуль объекта, а не форма, макет или модуль менеджера. Курсор при этом желательно расположить внутри процедуры «ОбработкаПроведения», иначе сгенерированный код может вставиться в произвольное место модуля.

Серая кнопка конструктораНет регистров движений

Откройте свойства документа, закладку «Движения», и отметьте нужные регистры

Конструктора нет в менюОткрыт не тот модуль

Убедитесь, что открыт модуль объекта документа, а не форма или модуль менеджера

Проведение запрещеноДокумент не проводится

В свойствах документа установите «Проведение: Разрешить»

Ошибка при открытииКонфигурация на поддержке без изменений

Включите возможность изменения объекта в настройке поддержки

Настройка движений в окне конструктора

В верхней части окна конструктора выбирается тип регистра и сам регистр. Если документ связан с несколькими регистрами, конструктор обрабатывает их по очереди: сначала формируются движения по одному регистру, затем повторным запуском — по следующему.

Для регистров накопления дополнительно указывается вид движения — «Приход» или «Расход». Это критичный параметр: ошибка в виде движения приведёт к тому, что остатки будут уменьшаться вместо увеличения или наоборот, и учёт «поедет» без видимых ошибок в коде.

В таблице соответствий конструктор перечисляет измерения, ресурсы и реквизиты регистра, а справа — выражения, то есть поля документа, из которых берутся значения. Кнопка «Заполнить выражения» сопоставляет поля по именам автоматически, но её результат нужно проверить: совпадение по имени не гарантирует совпадение по смыслу, особенно если реквизиты документа названы нестандартно.

Признак корректной настройки — каждое обязательное измерение и каждый ресурс регистра связаны с конкретным реквизитом документа или табличной части, а в колонке выражений нет пустых строк там, где регистр требует значения.

Проверка результата после генерации кода

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

Далее обновите конфигурацию базы данных (клавиша F7) и протестируйте проведение на копии базы или на тестовом документе. Создайте документ, заполните табличную часть, проведите его и откройте движения: в типовых интерфейсах это делается через кнопку перехода к движениям документа или через отчёт по регистру.

Контрольные точки

Как проверить результат

Записи в регистре
Норма

После проведения документа появились строки с верными измерениями и суммами

Тревожный признак

Записей нет либо количество/сумма равны нулю

Вид движения
Норма

Приход увеличивает остаток, расход уменьшает

Тревожный признак

Остаток изменяется в противоположную сторону

Отмена проведения
Норма

При отмене проведения записи из регистра удаляются

Тревожный признак

Записи остаются после распроведения

Повторное проведение
Норма

Старые движения заменяются новыми без дублирования

Тревожный признак

Строки задваиваются при каждом перепроведении

Отдельно проверьте поведение при перепроведении: платформа должна автоматически очищать старые движения. Если в сгенерированном коде вручную удалили строки очистки наборов записей, движения начнут накапливаться — это одна из самых коварных ошибок, потому что на свежем документе она не видна.

Типичные ошибки и ограничения конструктора

Конструктор генерирует базовый вариант проведения без бизнес-логики: контроль остатков на складе, проверку заполненности реквизитов, блокировки и расчёт себестоимости придётся дописывать вручную. Воспринимать сгенерированный код как готовое решение для рабочей базы — распространённая ошибка начинающих разработчиков.

Типичные ошибки при работе с конструктором
01
Слепое доверие кнопке «Заполнить выражения»: автосопоставление по именам подставляет не те поля, и движения заполняются неверными значениями без ошибок компиляции
02
Неверный вид движения для регистра остатков: вместо расхода выбран приход, и остатки растут при отгрузке товара
03
Замена существующего кода проведения без копии: ручная логика контроля остатков теряется безвозвратно
04
Запуск конструктора из модуля формы: кнопка недоступна, и разработчик тратит время на поиск проблемы не там
05
Пустые выражения для обязательных измерений: регистр заполняется пустыми ссылками, отчёты показывают строки без аналитики

Ещё одно ограничение: конструктор не работает с виртуальными таблицами и сложными запросами — он лишь сопоставляет поля. Если движения должны формироваться по данным нескольких регистров или с агрегацией, код пишется вручную с использованием запросов.

Альтернативы: когда конструктор не нужен

Не каждое движение стоит создавать через конструктор. В простых конфигурациях с одним-двумя регистрами опытный разработчик пишет обработчик проведения вручную быстрее, чем проходит все окна конструктора. Ручной код также даёт полный контроль над порядком записи наборов и установкой признака записи движений.

Маршрут решения

Как выбрать подход

Документ новый, регистры только что добавлены, логика проведения простаяИспользуйте конструктор — он быстро создаст каркас процедуры
Нужен контроль остатков, блокировки или расчёт по данным других регистровСгенерируйте каркас конструктором и допишите логику вручную
Проведение строится на сложном запросе к нескольким таблицамПишите обработчик вручную с конструктором запроса, конструктор движений здесь не поможет
Дорабатывается типовая конфигурация на поддержкеСначала включите возможность изменения объекта и оцените риски при обновлении

Полезная комбинация — использовать конструктор движений для каркаса и конструктор запросов для выборки данных: первый создаёт структуру наборов записей, второй помогает собрать выборку из табличной части с нужными отборами и соединениями.

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

Частые вопросы

Можно ли открыть конструктор движений в режиме 1С:Предприятие?

Нет. Конструктор — инструмент разработки и работает только в конфигураторе. В пользовательском режиме движения можно только просматривать (например, через переход от проведённого документа к записям регистров), но создавать и изменять код проведения там нельзя.

Почему кнопка «Конструктор движений» серая и не нажимается?

Чаще всего у документа не выбраны регистры движений. Откройте свойства документа, перейдите на закладку «Движения» и отметьте нужные регистры галочками. Также проверьте, что проведение разрешено и открыт именно модуль объекта.

Конструктор перезапишет мой существующий код проведения?

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

Как сформировать движения сразу по нескольким регистрам?

За один запуск конструктор обрабатывает один регистр. После генерации кода для первого регистра запустите конструктор повторно и выберите следующий — новый блок движений добавится в ту же процедуру проведения.

Можно ли пользоваться конструктором в типовой конфигурации на поддержке?

Технически да, но сначала объект нужно снять с полной поддержки, включив возможность изменения. Учтите: изменённые модули типовых документов усложняют последующие обновления конфигурации, поэтому по возможности выносите доработки в расширения.

Конструктор сгенерировал код, но записи в регистре не появляются. Что проверить?

Убедитесь, что документ реально проводится (стоит отметка проведения), что у набора записей не снят признак записи движений и что табличная часть документа заполнена — при пустой табличной части цикл просто не создаёт ни одной строки. Также проверьте, что в коде не закомментирована запись набора.

Итог

Что важно запомнить

Конструктор движений открывается из модуля объекта документа в конфигураторе через кнопку на панели инструментов или меню «Конструкторы». Условия доступности — разрешённое проведение и выбранные регистры движений. Сгенерированный код — это каркас: вид движения, сопоставление полей и бизнес-логику нужно проверять и дорабатывать вручную, а перед заменой существующего кода делать резервную копию.