Как динамически сформировать представление элемента в дереве значений без изменения колонок?

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

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

Использование группы колонок для объединения данных

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

  1. Перейдите в конфигуратор на форму вашей обработки.
  2. В дереве элементов формы найдите колонки Контрагент и Менеджер.
  3. Выделите обе колонки, нажмите правой кнопкой мыши и выберите «Сгруппировать» -> «Группа колонок».
  4. В свойствах созданной группы установите параметр Отображение в значение Нет. Это позволит убрать визуальные границы группы, создавая эффект того, что данные находятся в одной ячейке.

Настройка видимости через условное оформление

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

Рассмотрим, как настроить Условное оформление, чтобы избежать визуального шума:

Если контрагент заполнен, мы можем скрывать дублирующие значения или выводить пустую строку для дочерних элементов, используя условия на уровни дерева. Важно: убедитесь, что в свойствах ячейки установлена «автомаксимальная высота» (или настроена высота строки), чтобы длинный текст, включающий «Контрагент, Менеджер», не обрезался при отображении.

Альтернативный подход: программное формирование при загрузке

Если логика определения менеджера сложная и зависит от параметров обработки, можно рассмотреть вариант формирования готовой строки представления на этапе заполнения Дерева значений.

Вместо того чтобы полагаться на ОбработкуПолученияПредставления, которая является глобальной, мы можем программно подготовить данные при инициализации дерева:


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

Данный метод хорош тем, что он исключает необходимость «хитрых» настроек формы. Однако, если данные динамически меняются без перезагрузки дерева, метод с Группой колонок остается более предпочтительным, так как он не требует повторного обхода всей иерархии дерева.

Полезные советы по работе с интерфейсом

При реализации вывода через Группу колонок, обратите внимание на следующие моменты:

Проанализировав эти подходы, вы сможете выбрать наиболее подходящий вариант: либо простое визуальное объединение через Группу колонок, либо подготовку данных «на лету» в Дереве значений перед выводом пользователю.

← На главную