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