При разработке печатных форм и отчетов часто требуется вывести графическую отметку (например, флажок или плюс/минус в зависимости от значения типа Булево). Разберем, как устроена работа со свойством ячейки ПараметрКартинки, почему оно не нарезает картинки-коллекции по числовому индексу, и рассмотрим наиболее надежные способы вывода значков в ТабличныйДокумент.
Выясним причину, по которой указание числа в параметре картинки не выбирает отдельный значок из коллекции. В платформе 1С свойство ячейки ПараметрКартинки предназначено исключительно для указания имени параметра области, через который в ячейку динамически передается готовый объект Картинка (или двоичные данные), а не числовой номер иконки.
Важное ограничение: механизм автоматической нарезки картинок-коллекций по числовому индексу (как это реализовано для таблиц управляемых форм через свойство ИндексКартинки) в ячейках объекта ТабличныйДокумент не поддерживается. Если в ячейку поместить составную картинку-коллекцию, платформа отобразит ее целиком как единый графический объект.
Проанализируем проверенные и удобные способы решения задачи вывода отметок.
Если макет требует именно графическое изображение, создадим в ветке конфигурации «Общие картинки» отдельные изображения для каждого состояния (например, для состояний «Истина» и «Ложь»).
Разберем порядок настройки по шагам:
ПечКартинка.
Если Выборка.Отметка Тогда
ОбластьСтрока.Параметры.ПечКартинка = БиблиотекаКартинок.ФлажокВключен;
Иначе
ОбластьСтрока.Параметры.ПечКартинка = БиблиотекаКартинок.ФлажокВыключен;
КонецЕсли;
Если при ложном значении ячейка должна оставаться пустой, передадим пустой объект картинки:
ОбластьСтрока.Параметры.ПечКартинка = ?(Выборка.Отметка, БиблиотекаКартинок.ФлажокВключен, Новый Картинка());
Для вывода простых флажков и галочек часто удобнее отказаться от хранения графических файлов и использовать встроенные символы Юникода через функцию платформы Символ(). Данный метод работает с базовыми системными шрифтами (Arial, Tahoma) и корректно сохраняется в PDF без использования специализированных шрифтов вроде Wingdings.
Посмотрим на распространенные коды символов:
Символ(9745) — квадратик с галочкой (☑)Символ(9744) — пустой квадратик (☐)Символ(9746) — квадратик с крестиком (☒)Символ(10004) или Символ(10003) — галочка (✔ / ✓)В ячейке макета установим тип заполнения Параметр (например, СимволОтметки) и заполним его в коде:
ОбластьСтрока.Параметры.СимволОтметки = ?(Выборка.Выполнено, Символ(9745), Символ(9744));
Рассмотрим еще один встроенный механизм платформы — превращение ячейки в интерактивный или статический чекбокс:
Истина.Булево.Флажок.При формировании печатной формы достаточно присвоить значение ячейке через свойство Значение соответствующего параметра:
ОбластьСтрока.Параметры.ЯчейкаФлажка = Выборка.ПризнакАктивности;
Если изображение нужно спозиционировать независимо от границ ячейки или наложить поверх нескольких колонок, воспользуемся коллекцией Рисунки табличного документа.
Посмотрим на пример размещения картинки:
Рисунок = ТабличныйДокумент.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Картинка = БиблиотекаКартинок.ОтметкаВыполнено;
Рисунок.Расположить(ТабличныйДокумент.Область("R5C2:R5C2"));
Таким образом, для вывода значков в табличный документ рекомендуется использовать либо передачу отдельных картинок через ПараметрКартинки, либо стандартные символы Юникода, не перегружающие макет лишними ресурсами.