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