Как вернуть стандартные формы и классическое оформление отчетов в 1С:УНФ

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

В процессе эволюции решений на платформе 1С:Предприятие разработчики регулярно обновляют интерфейсные решения. Начиная с версии 1.6.26 в конфигурации 1С:Управление нашей фирмой (УНФ) кардинально изменился подход к отображению отчетов. Разработчики внедрили новую общую форму ФормаОтчетаУНФ, перенесли панель быстрых настроек в верхнюю часть экрана и принудительно применили «Бежевый» стиль оформления по умолчанию.

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

Выясняем причину: почему Конфигуратор не помогает?

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

Как совершенно верно заметил автор обсуждения, при формировании любого типового отчета в УНФ система перехватывает процесс компоновки. В модуле объекта каждого отчета в процедуре ПриКомпоновкеРезультата происходит обращение к специализированному общему модулю конфигурации:


Процедура ПриКомпоновкеРезультата(КомпоновщикНастроек, СхемаКомпоновкиДанных, ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    ОтчетыУНФ.ПриКомпоновкеРезультата(КомпоновщикНастроек, СхемаКомпоновкиДанных, ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка);
    
КонецПроцедуры

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

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

Решение 1. Изменение оформления в пользовательском режиме (без программирования)

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

  1. Откройте необходимый отчет в режиме 1С:Предприятие.
  2. Нажмите кнопку Настройки на панели отчета (в зависимости от настроек интерфейса это может быть ссылка Больше возможностей).
  3. Перейдите на вкладку Оформление. Если вкладка скрыта, переключите вид настройки в режим Для технического специалиста (через меню «Еще» настроек).
  4. Найдите параметр Макет оформления. По умолчанию там будет установлено значение «Бежевый». Измените его на Основной (классический стиль с сеткой) или любой другой стандартный макет (например, «Классический» или «Арктика»).
  5. Нажмите кнопку Закрыть и сформировать.
  6. Чтобы настройки не сбросились при следующем открытии, обязательно сохраните вариант отчета: нажмите Еще — Варианты отчета — Сохранить как... и укажите имя сохраненного варианта.

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

Решение 2. Программный обход в модуле объекта отчета (для разработчиков)

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

В модуле объекта вашего отчета пропишите следующий код в процедуре ПриКомпоновкеРезультата:


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

Установив СтандартнаяОбработка = Ложь, мы предотвращаем запуск алгоритмов общего модуля ОтчетыУНФ. Отчет будет формироваться строго по правилам, заданным в вашей схеме компоновки данных и настройках пользователя, возвращая классический вид таблиц с границами ячеек.

Решение 3. Использование расширения конфигурации (глобальный метод)

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

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

  1. Создайте новое расширение конфигурации в Конфигураторе и снимите у него флаг Безопасный режим (так как может потребоваться доступ к серверным процедурам формирования).
  2. Добавьте в расширение общий модуль ОтчетыУНФ.
  3. Создайте в расширении процедуру-перехватчик для метода ПриКомпоновкеРезультата с аннотацией &Вместо или &После.

Ниже представлен пример кода для модуля расширения, который восстанавливает классический макет оформления «Основной» для всех отчетов базы данных:


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

Использование расширения позволяет централизованно управлять внешним видом отчетов без изменения типовой конфигурации, что гарантирует сохранение работоспособности системы при последующих обновлениях 1С:УНФ.

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

← На главную