Как настроить вывод пиктограммы состояния документа в списке в 1С:Бухгалтерия 3.0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

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

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

Выясним причину проблемы

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

  1. Документ не проведен;
  2. Документ проведен;
  3. Документ помечен на удаление.

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

Шаг 1. Формирование поля состояния в запросе динамического списка

Проанализируем текст запроса динамического списка. Нам необходимо вычислить числовой индекс, соответствующий номеру нужной картинки в типовой коллекции БиблиотекаКартинок.СостоянияДокументов.

Посмотрим на пример конструкции ВЫБОР в тексте произвольного запроса динамического списка:


ВЫБОР
    КОГДА ДокументАвансовыйОтчет.РучнаяКорректировка = ИСТИНА
        ТОГДА ВЫБОР
            КОГДА ДокументАвансовыйОтчет.ПометкаУдаления = ИСТИНА
                ТОГДА 10
            КОГДА ДокументАвансовыйОтчет.Проведен = ЛОЖЬ
                ТОГДА 9
            ИНАЧЕ 8
        КОНЕЦ
    ИНАЧЕ ВЫБОР
        КОГДА ДокументАвансовыйОтчет.ПометкаУдаления = ИСТИНА
            ТОГДА 2
        КОГДА ДокументАвансовыйОтчет.Проведен = ИСТИНА
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ
КОНЕЦ КАК СостояниеДокумента

Обратите внимание: если ваш документ делает проводки, но не содержит собственного реквизита РучнаяКорректировка, признак ручной правки необходимо получать левым соединением с соответствующим набором записей регистра бухгалтерии (РегистрБухгалтерии.Хозрасчетный.РучнаяКорректировка) по полю регистратора.

Шаг 2. Настройка свойств элементов формы

Рассмотрим, как связать полученное числовое поле СостояниеДокумента с визуальным отображением в таблице формы. Сделать это можно двумя способами в зависимости от требуемого размещения пиктограммы.

Вариант 1. Отображение пиктограммы в качестве картинки строк таблицы

  1. Открываем форму списка документа в конфигураторе и переходим к дереву элементов формы.
  2. Выделяем элемент таблицы (обычно элемент с именем Список).
  3. В палитре свойств находим группу Отображение.
  4. В свойстве КартинкаСтрок выбираем из конфигурации БиблиотекаКартинок.СостоянияДокументов (или СостоянияДокумента в зависимости от релиза).
  5. В свойстве ПутьКДаннымКартинкиСтрок указываем путь к нашему вычисленному полю: Список.СостояниеДокумента.

Вариант 2. Отображение пиктограммы в конкретной колонке (например, «Дата»)

  1. В дереве элементов формы разворачиваем таблицу списка и выбираем целевое поле (например, СписокДата).
  2. В палитре свойств элемента колонки находим свойство КартинкаЗначений (или Картинка) и выбираем библиотеку картинок СостоянияДокументов.
  3. В свойстве ПутьКДаннымКартинки указываем реквизит динамического списка Список.СостояниеДокумента.

Альтернативные варианты реализации

Рассмотрим альтернативные методы решения задачи, если использование числового выражения в основном тексте запроса списка нежелательно:

  1. Условное оформление динамического списка: в свойствах списка на вкладке «Настройки списка» можно задать правила условного оформления. Для условий (например, РучнаяКорректировка Равно Истина и Проведен Равно Истина) устанавливается оформляемое поле и задается значение свойства оформления Картинка.
  2. Обработчик ПриПолученииДанныхНаСервере: если расчет состояния требует тяжелых запросов к регистрам, вычисление индекса можно выполнять программно только для видимой порции строк таблицы непосредственно перед выводом пользователю.
← На главную