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

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

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

Анализируем технические требования к изображениям

Первое, на что нам стоит обратить внимание, — это формат самого файла пиктограмм. Платформа 7.7 крайне чувствительна к структуре файла .bmp. Современные операционные системы (Windows 10, Windows 11) и их встроенные редакторы, такие как Paint, при сохранении файла используют глубину цвета 24 бита или 32 бита. Старый движок 1С 7.7 зачастую не понимает такие файлы корректно.

Проанализируем основные параметры, которые должны быть соблюдены:

  1. Глубина цвета: Лучше всего использовать 16-цветные (4 бит) или 256-цветные (8 бит) BMP-файлы. Это гарантирует наличие таблицы цветов в заголовке файла, по которой 1С определяет смещение для каждого индекса пиктограммы.
  2. Размеры картинки: Стандартный размер одной иконки в 1С 7.7 — 16x15 пикселей (ширина x высота). Если вы планируете использовать коллекцию из нескольких иконок в одном файле (так называемую "ленту"), общая ширина файла должна быть строго кратна 16. Например, для трех иконок размер файла должен составлять 48x15 пикселей.
  3. Прозрачность: В 7.7 нет поддержки альфа-канала. Платформа определяет прозрачный цвет по левому нижнему пикселю первой картинки в коллекции. Если этот пиксель имеет темно-зеленый цвет (R:0, G:128, B:128), то весь такой зеленый цвет в иконках станет прозрачным ("пустым").

Проблема современного программного обеспечения

Как выяснилось в ходе обсуждения, стандартный MS Paint в новых версиях Windows "ломает" структуру BMP-файла для старых приложений. Рассмотрим варианты решения, если картинка отображается только по первому индексу или выглядит как белый квадрат с черной рамкой:

Программная реализация вывода пиктограмм

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

  1. В свойствах текстовой колонки установить галочку "Показывать пиктограммы".
  2. В поле "Формула" указать вызов функции, которая будет возвращать числовой индекс картинки.

Рассмотрим пример функции, которая определяет, какую иконку вывести в зависимости от состояния документа:


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

Важный момент: индекс 0 обычно означает отсутствие картинки. Нумерация значков в файле для 1С начинается с 1. Если ваша функция возвращает 2, а картинка в файле всего одна, вы увидите пустое поле.

Тестирование на Таблице Значений

Если проблема сохраняется, мы можем провести диагностику с помощью объекта ТаблицаЗначений на форме обработки. Это позволит исключить влияние свойств конкретного журнала. Посмотрим на пример проверочного кода:


Процедура Сформировать()
    Тз.НоваяКолонка("СтатусПикт");
    // Включаем режим вывода пиктограмм для колонки
    Тз.ВыводитьПиктограммы("СтатусПикт");
    
    // Добавляем строки с разными индексами
    Тз.НоваяСтрока(); 
    Тз.СтатусПикт = 1; // Должна быть первая картинка
    
    Тз.НоваяСтрока(); 
    Тз.СтатусПикт = 2; // Должна быть вторая картинка
    
    Тз.НоваяСтрока(); 
    Тз.СтатусПикт = 0; // Пусто
КонецПроцедуры

Если в таблице значений индексы работают корректно, а в журнале — нет, значит, проблема в привязке картинки к самому журналу (проверьте закладку "Картинка" в свойствах формы журнала) или в типах возвращаемых значений функции.

Особенности цветопередачи и "исчезающие" цвета

Выясним причину, по которой некоторые цвета могут "пропадать". В 1С 7.7 существует строго заданная палитра для иконок. Например, если вы используете темно-зеленый цвет, который совпадает с системным цветом прозрачности, он будет отображаться как пустота.

Совет: При создании собственных значков старайтесь использовать яркие, чистые цвета из стандартной палитры 16 цветов. Это минимизирует риск того, что при рендеринге интерфейса цвет будет заменен на прозрачный или инвертирован.

Итоги и рекомендации

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

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

← На главную