Как правильно отображать пиктограммы и флажки в табличной части документа в 1С 7.7?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

При разработке интерфейсов на платформе 1С:Предприятие 7.7 часто возникает необходимость визуально выделить определенные строки многострочной части документа — например, отметить флажком или значком строки по определенному условию (наличие признака в номенклатуре, статус и т. д.). Нередко начинающие разработчики сталкиваются с ситуацией, когда вместо ожидаемых пиктограмм в таблице отображаются пустые рамки или значок отображается некорректно.

Разберем типичные ошибки, проанализируем механизм работы формул в табличных частях 1С 7.7 и рассмотрим пошаговое руководство по правильной настройке пиктограмм.

Почему возникают пустые рамки: разбор ошибок

Проанализируем две основные причины, из-за которых пиктограммы не отображаются:

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

Способ 1. Стандартная реализация через пиктограммы многострочной части

Рассмотрим правильный порядок настройки графического отображения условий в многострочной части документа.

Разберем процесс по шагам:

  1. Подготовка и добавление ресурса иконок. На форму документа помещаем элемент диалога «Картинка» (BMP-лента с горизонтальным рядом одинаковых по размеру значков). Например, первый кадр (индекс 1) — пустой квадрат или отсутствие флага, второй кадр (индекс 2) — отмеченный флажок. В свойствах элемента задаем уникальный идентификатор.
  2. Привязка к таблице. Открываем свойства многострочной части документа (таблицы) и в поле выбора пиктограмм указываем созданный элемент картинки.
  3. Настройка колонки. Добавляем в многострочную часть колонку с типом Текст. В ее свойствах устанавливаем флажок «Показывать пиктограммы».
  4. Задание формулы. В поле формулы колонки достаточно указать простое выражение, возвращающее номер нужной иконки (нумерация в 1С 7.7 начинается с 1).

Посмотрим на примеры выражений, которые можно указать непосредственно в свойствах колонки (в поле «Формула» / «Дополнительно»):

Если реквизит ЖизненноВажный принимает значения 0 и 1, можно использовать прямое смещение индекса:

1 + Товар.ЖизненноВажный

Либо используем тернарный оператор для явного выбора номера иконки в ленте:

?(Товар.ЖизненноВажный = 1, 2, 1)

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


Функция ПолучитьНомерИконки()
    // Обращение к реквизитам идет напрямую в контексте текущей строки
    Если Товар.ЖизненноВажный = 1 Тогда
        Возврат 2; // Номер картинки "Отмечено"
    Иначе
        Возврат 1; // Номер картинки "Не отмечено"
    КонецЕсли;
КонецФункции

Способ 2. Текстовая индикация (без использования графических ресурсов)

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

Посмотрим на варианты формул для текстовой колонки:

?(Товар.ЖизненноВажный = 1, "[V]", "[ ]")

Или более лаконичный вариант с отображением отметки только для требуемых строк:

?(Товар.ЖизненноВажный = 1, "+", "")

Оптимизация производительности при работе с реквизитами

Проанализируем важный нюанс: обращение к реквизитам через точку (например, Товар.ЖизненноВажный) внутри формул колонок вызывает чтение данных из информационной базы при каждой перерисовке экрана и прокрутке списка.

Если документ содержит большое количество строк, рекомендуется:

  1. Добавить в табличную часть документа числовой реквизит (например, ФлагЖВ с длиной 1).
  2. Заполнять этот реквизит при выборе или изменении номенклатуры в строке.
  3. В формуле колонки пиктограммы обращаться напрямую к реквизиту табличной части: 1 + ФлагЖВ.

Такой подход полностью исключает лишние обращения к базе данных и обеспечивает быстрое отображение многострочной части документа.

← На главную