Почему в 1С 8.3 отсутствует кнопка «Конструктор выходной формы» и как теперь создавать отчеты

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При переходе на платформу 1С:Предприятие 8.3 и современные конфигурации, такие как Управление торговлей 11, Бухгалтерия предприятия 3.0 или Зарплата и управление персоналом 3.1, многие разработчики сталкиваются с неожиданной ситуацией. При попытке создать внешний отчет или обработку в привычном месте отсутствует пункт меню «Конструкторы», а вместе с ним и знакомый многим «Конструктор выходной формы». Проанализируем, почему это происходит и какие современные инструменты пришли на замену старым механизмам.

Технологический сдвиг: Обычное приложение vs Управляемое приложение

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

В управляемом интерфейсе (интерфейс «Такси») логика построения кардинально изменилась. Форма теперь является декларативной — это дерево элементов, которое платформа отрисовывает самостоятельно в зависимости от устройства и настроек пользователя. Рассмотрим подробнее, почему старый метод больше не актуален:

  1. Разделение контекста: В управляемых формах код исполнения четко делится на «На клиенте» и «На сервере». Старый конструктор не умеет генерировать код с учетом этих особенностей.
  2. Отказ от ручного рисования: Платформа 8.3 стремится к тому, чтобы программист описывал «что» вывести, а не «как» нарисовать каждую ячейку.
  3. Динамическое изменение: Управляемые формы позволяют пользователю менять состав колонок и группировок без участия программиста, что было невозможно при жесткой генерации кода старым конструктором.

Система компоновки данных (СКД) — современный стандарт

Разберем основной инструмент, который полностью заменил конструктор выходных форм. Это Система компоновки данных (СКД). Начиная с версии платформы 8.2 и окончательно в 8.3, разработка любого отчета должна начинаться именно с создания схемы компоновки.

Если вам необходимо быстро создать отчет, выполним следующие шаги:

  1. Создадим новый объект Отчет или ВнешнийОтчет.
  2. Нажмем кнопку «Открыть схему компоновки данных».
  3. В появившемся окне добавим новый Набор данных - запрос и опишем выборку данных из базы.
  4. Перейдем на закладку «Настройки». Это и есть современное воплощение конструктора.

Проанализируем работу «Конструктора настроек» внутри СКД. На закладке «Настройки» расположена кнопка с иконкой волшебной палочки. Нажав на нее, мы запускаем пошаговый помощник, который позволяет:

Автоматическая генерация управляемых форм

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

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

Это избавляет от написания сотен строк кода, которые раньше генерировались старым конструктором выходных форм.

Что делать, если нужен программный вывод?

Иногда возникают ситуации, когда стандартных возможностей СКД недостаточно и требуется полностью контролировать вывод данных. В этом случае программисту приходится работать с объектом ТабличныйДокумент вручную. Рассмотрим пример кода, который заменяет работу старого конструктора при программном формировании отчета:


// Пример программного вывода макета в управляемой форме
&НаСервере
Процедура СформироватьОтчетНаСервере()
    
    ОбъектОтчет = РеквизитФормыВЗначение("Объект");
    Макет = ОбъектОтчет.ПолучитьМакет("МакетОтчета");
    
    // Получаем области из макета
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    
    // Заполняем параметры
    ОбластьШапка.Параметры.ДатаОтчета = ТекущаяДата();
    Результат.Вывести(ОбластьШапка);
    
    // В цикле выводим данные
    Для Каждого СтрокаДанных Из ДанныеДляВывода Цикл
        ОбластьСтрока.Параметры.Заполнить(СтрокаДанных);
        Результат.Вывести(ОбластьСтрока);
    КонецЦикла;
    
КонецПроцедуры

Как мы видим, в управляемых формах мы оперируем областями макета и методом Вывести(). Отсутствие автоматического конструктора для этого процесса подчеркивает рекомендацию фирмы «1С» использовать СКД везде, где это возможно.

Конструктор печати как частичная альтернатива

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

Чтобы его найти, выберите нужный объект (например, документ «РеализацияТоваровУслуг»), перейдите на закладку «Макеты» и нажмите кнопку «Конструкторы» -> «Конструктор печати». Этот инструмент:

Важно: этот конструктор работает корректно и в режиме управляемого приложения, так как он создает структуру, совместимую с современными требованиями платформы.

Резюме

Подведем итог нашему анализу. Отсутствие кнопки «Конструктор выходной формы» в 1С 8.3 — это не ошибка установки и не баг релиза. Это сознательный отказ от устаревшей технологии в пользу более мощного и гибкого инструмента — Системы компоновки данных.

Для эффективной работы в современных конфигурациях рекомендуем сфокусироваться на изучении настроек СКД, так как именно там теперь сосредоточен весь визуальный функционал проектирования отчетов. Это позволяет создавать профессиональные и функциональные отчеты гораздо быстрее, чем с использованием старых методов генерации кода.

← На главную