В процессе разработки интерфейсов на управляемых формах часто возникает потребность отобразить состояние документа прямо в списке. Типовые конфигурации делают это «из коробки», но при создании собственных форм или использовании Динамического списка с Произвольным запросом, эта логика требует ручной настройки. Давайте разберем по шагам, как реализовать этот механизм.
Система отображения пиктограмм в списках основана на использовании коллекции картинок (strip image). Платформа берет один файл, содержащий набор иконок, и разрезает его на части равного размера. Важно понимать, что для корректной работы коллекции, все значки в ней должны иметь одинаковые размеры, а между ними не должно быть пустых отступов.
Когда вы используете Динамический список с установленной Основной таблицей, платформа автоматически определяет состояние объекта (проведен, не проведен, помечен на удаление). Однако, если используется Произвольный запрос, система «теряет» связь с объектом, и нам необходимо самостоятельно передать индекс картинки в специальное поле.
Рассмотрим пошаговый алгоритм добавления пиктограмм, если ваш список формируется сложным запросом с объединением нескольких типов документов.
НомерКартинки). Этот индекс определяет, какая именно иконка из коллекции будет показана пользователю.ВЫБОР КОГДА ... ТОГДА ... ИНАЧЕ ... КОНЕЦ в тексте запроса определите числовые значения для каждого статуса.Посмотрим на пример кода, который можно использовать в Динамическом списке:
ВЫБРАТЬ
ПриходДенег.Ссылка КАК Документ,
ВЫБОР
КОГДА ПриходДенег.Проведен ТОГДА 1
КОГДА ПриходДенег.ПометкаУдаления ТОГДА 3
ИНАЧЕ 0
КОНЕЦ КАК НомерКартинки
ИЗ
Документ.ПриходДенег КАК ПриходДенег
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
РасходДенег.Ссылка,
ВЫБОР
КОГДА РасходДенег.Проведен ТОГДА 1
КОГДА РасходДенег.ПометкаУдаления ТОГДА 3
ИНАЧЕ 0
КОНЕЦ
ИЗ
Документ.РасходДенег КАК РасходДенег
После того как данные в запросе подготовлены, необходимо правильно настроить сам элемент формы:
ПутьКДаннымКартинкиСтроки. Установите его в значение Список.НомерКартинки (где Список — имя вашего реквизита формы).КартинкаСтрок, выбрав нужную коллекцию, например, СтатусыДокумента. Если ваша конфигурация построена на БСП, эта коллекция уже доступна в общих картинках.НомерКартинки выводить на форму необязательно, достаточно того, что она участвует в связке с настройками списка.При работе с индексами картинок помните, что отсчет всегда начинается с нуля. 0 — это первая картинка в коллекции, 1 — вторая и так далее. Если вы решите использовать собственную коллекцию картинок, внимательно проверьте соответствие индексов и изображений.
Почему автоматика не всегда работает? Если у вас нет Основной таблицы в настройках динамического списка, система не может самостоятельно связать ссылку на документ с его состоянием. Именно поэтому использование Произвольного запроса требует явного указания поля НомерКартинки. Этот подход является «обманным маневром», который позволяет системе отобразить визуальный ряд точно так же, как в типовых документах, но под нашим полным контролем.
Наконец, убедитесь, что вы правильно интерпретируете состояние. Например, в типовых конфигурациях 1 часто соответствует проведенному документу, 2 — удаленному, а 0 — не проведенному. Всегда сверяйтесь с визуальным представлением коллекции в конфигураторе, чтобы убедиться, что индекс действительно соответствует требуемому состоянию документа.