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