В платформе 1С:Предприятие 7.7 визуализация статусов документов с помощью иконок (пиктограмм) является классическим способом сделать интерфейс более информативным и удобным для пользователя. Например, мы можем захотеть вывести «галочку» рядом с проведенными документами или специальный символ для документов, у которых заполнен определенный признак. Рассмотрим подробно, как настроить этот механизм, разберем технические требования к графике и программную реализацию.
Прежде чем приступать к коду, проанализируем требования к самой картинке. В системе 1С 7.7 для списков используется не набор отдельных файлов, а единая «лента» (набор иконок), склеенных в один файл формата .bmp.
Выясним основные технические параметры такого файла:
Разберем важный нюанс, на котором часто спотыкаются разработчики. Чтобы колонка журнала «увидела» библиотеку картинок, этот ресурс должен быть физически размещен на форме списка или журнала.
Выполним следующие действия:
ПризнакиДокумента.Теперь перейдем к настройке визуального ряда в самой таблице. Добавим в журнал новую текстовую колонку.
Рассмотрим параметры настройки колонки:
ПризнакиДокумента).Посмотрим на пример того, как система определяет, какую именно иконку из ленты показать. Индексация в 1С 7.7 начинается с 1. Если формула возвращает 0, в ячейке не будет отображаться ничего.
Проанализируем простейший случай: если реквизит документа ФлагОплаты имеет значение «Истина» (в 7.7 это число 1), нужно показать первую картинку, иначе — ничего. В поле «Формула» колонки можно написать:
ТекущийДокумент.ФлагОплаты
Однако на практике логика бывает сложнее. Рассмотрим пример с использованием встроенной функции выбора ?(,,) (тернарный оператор), который работает быстрее, чем вызов отдельной функции из модуля:
?(ТекущийДокумент.Статус = 1, 1, ?(ТекущийДокумент.Статус = 2, 2, 0))
В этом примере, если статус равен 1, отобразится первая иконка из ленты; если 2 — вторая; во всех остальных случаях колонка останется пустой.
Важно помнить, что код, указанный в формуле колонки журнала, выполняется системой при каждом обновлении экрана для каждой видимой строки. Если у вас в журнале одновременно отображается 30 строк, при любом движении мыши 1С будет повторно вычислять эти значения.
Рассмотрим рекомендации по оптимизации:
ИндексИконки).ТекущийДокумент.ИндексИконки. Это обеспечит максимальную скорость прокрутки журнала даже на больших объемах данных.Если логика все же требует описания в модуле, разберем, как это реализовать. В модуле формы журнала определим функцию:
Функция ПолучитьНомерИконки()
Перем Рез;
// Анализируем текущую строку журнала
Если ТекущийДокумент.Проведен() = 1 Тогда
Рез = 1; // Первая картинка — "Проведено"
ИначеЕсли ТекущийДокумент.ПометкаУдаления() = 1 Тогда
Рез = 2; // Вторая картинка — "Удалено"
Иначе
Рез = 0; // Ничего не выводим
КонецЕсли;
Возврат Рез;
КонецФункции
В свойствах колонки в поле «Формула» в таком случае нужно просто написать имя функции со скобками: ПолучитьНомерИконки().
Резюмируем: Для успешного вывода пиктограмм нам необходима корректная BMP-лента, объект «Картинка» на форме с уникальным идентификатором и формула, возвращающая порядковый номер иконки (начиная с единицы). Соблюдение этих условий позволит вам создавать профессиональные и наглядные журналы в системе 1С 7.7.