Как программно оформить параметры СКД: группировка, заголовки и вставка текста

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

При разработке отчетов на базе Системы компоновки данных (СКД) часто возникает задача сделать интерфейс более дружелюбным для пользователя. Стандартная панель быстрых настроек выводит параметры "в столбик" или "в ряд" без логического разделения. В этой статье мы разберем, как с помощью программных методов Библиотеки стандартных подсистем (БСП) объединить параметры в группы, задать им заголовки и добавить поясняющий текст.

Метод 1: Использование события ПослеЗаполненияПанелиБыстрыхНастроек

В современных конфигурациях 1С (таких как УТ 11, ERP 2, ЗУП 3) отчеты работают на базе механизмов БСП. Самый гибкий способ изменить внешний вид панели настроек — перехватить момент, когда платформа уже создала элементы формы для параметров, но еще не вывела их пользователю. Рассмотрим, как это сделать через модуль отчета или форму.

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


Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
    // Включаем признак того, что будем обрабатывать панель быстрых настроек
    Настройки.События.ПослеЗаполненияПанелиБыстрыхНастроек = Истина;
КонецПроцедуры

После этого в модуле формы отчета (или в модуле объекта, если это предусмотрено логикой вызова) необходимо реализовать саму процедуру ПослеЗаполненияПанелиБыстрыхНастроек. Выясним причину, по которой это удобно: здесь у нас есть прямой доступ к коллекции ЭтаФорма.Элементы.

Разберем пример кода, который находит нужные параметры и помещает их в созданную программно группу:


Процедура ПослеЗаполненияПанелиБыстрыхНастроек(ЭтаФорма, ПараметрыЗаполнения) Экспорт

    ЭлементыФормы = ЭтаФорма.Элементы;

    // 1. Ищем элементы, которые создала СКД для наших параметров
    // Важно: Имена элементов обычно начинаются с "ГруппаПользовательскихНастроек_"
    // Но в простом случае можно искать по заголовкам (хотя поиск по имени надежнее)
    
    ЭлементЗаказ = Неопределено;
    ЭлементПодразделение = Неопределено;
    
    Для Каждого Элемент Из ЭлементыФормы Цикл
        Если ТипЗнч(Элемент) <> Тип("ПолеФормы") Тогда 
            Продолжить;
        КонецЕсли;

        Если Элемент.Заголовок = "Заказ" Тогда
            ЭлементЗаказ = Элемент;
        ИначеЕсли Элемент.Заголовок = "Подразделение" Тогда
            ЭлементПодразделение = Элемент;
        КонецЕсли;
    КонецЦикла;

    // Если элементы не найдены, выходим
    Если ЭлементЗаказ = Неопределено И ЭлементПодразделение = Неопределено Тогда
        Возврат;
    КонецЕсли;

    // 2. Создаем новую группу для объединения параметров
    // Определяем родителя (обычно это колонка в панели быстрых настроек)
    Родитель = ЭлементЗаказ.Родитель; 
    
    НоваяГруппа = ЭлементыФормы.Добавить("ГруппаДополнительныхНастроек", Тип("ГруппаФормы"), Родитель);
    НоваяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
    НоваяГруппа.Заголовок = "Дополнительные фильтры";
    НоваяГруппа.ОтображатьЗаголовок = Истина;
    НоваяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;

    // 3. Перемещаем параметры в новую группу
    ЭлементыФормы.Переместить(ЭлементЗаказ, НоваяГруппа);
    ЭлементыФормы.Переместить(ЭлементПодразделение, НоваяГруппа);

КонецПроцедуры

Метод 2: Добавление произвольного текста и декораций

Если нам нужно не просто сгруппировать поля, но и вставить текст (например, инструкцию для пользователя или разделитель), воспользуемся типом ДекорацияФормы. Посмотрим на пример реализации внутри того же события ПослеЗаполненияПанелиБыстрыхНастроек:


// Создаем поясняющую надпись
НадписьПояснение = ЭлементыФормы.Добавить("ДекорацияПояснение", Тип("ДекорацияФормы"), НоваяГруппа);
НадписьПояснение.Вид = ВидДекорацииФормы.Надпись;
НадписьПояснение.Заголовок = "Внимание: заполнение данных полей обязательно для корректного расчета прибыли.";
НадписьПояснение.ЦветТекста = ЦветаСтиля.ПоясняющийТекст;

Этот подход позволяет гибко управлять дизайном формы. Рассмотрим подробнее: вы можете установить шрифт НадписьПояснение.Шрифт, сделать текст жирным или изменить его положение на форме относительно полей ввода.

Метод 3: Особенности работы с типом "СтандартныйПериод"

Часто программисты сталкиваются с тем, что стандартный период не всегда удобен, если нужно оставить одну из границ (начало или конец) незаполненной. Проанализируем ситуацию: в 1С СтандартныйПериод всегда содержит обе даты, но они могут быть "пустыми" (01.01.0001).

Чтобы корректно обрабатывать такие параметры в СКД, выполним следующие шаги:

  1. В схеме компоновки на закладке Параметры создаем один параметр с типом СтандартныйПериод (например, &ПериодОтчета).
  2. В тексте запроса обращаемся к его частям: ГДЕ Дата МЕЖДУ &ПериодОтчета.ДатаНачала И &ПериодОтчета.ДатаОкончания.
  3. Если пользователь не заполнил дату, 1С передаст пустую дату. Чтобы запрос работал корректно даже с пустыми границами, в выражении параметров СКД можно прописать условие через ВЫБОР КОГДА или использовать флаг "Игнорировать значения NULL".

Метод 4: Использование всплывающих подсказок

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

Найдите ваш параметр в списке элементов формы и установите свойство Подсказка. В режиме предприятия при наведении на знак вопроса рядом с параметром пользователь увидит ваш текст.


ЭлементЗаказ.Подсказка = "Выберите заказ, по которому необходимо сформировать ведомость остатков.";
ЭлементЗаказ.ОтображениеПодсказки = ОтображениеПодсказки.Кнопка;

Метод 5: Условное оформление самих параметров

Малоизвестный, но эффективный прием — применение Условного оформления к полям ввода параметров. В настройках отчета (закладка "Настройки" -> "Условное оформление") можно добавить правило, где в качестве оформляемого поля выбрать не колонку отчета, а именно Параметр.

Например, можно выделить поле ввода периода красным цветом, если оно не заполнено. Это визуально подскажет пользователю, что отчет не сформируется без этих данных.

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

← На главную