В процессе разработки в среде 1С:Предприятие 8.3 часто возникает задача визуального выделения определенных признаков документа непосредственно в списке. Одной из самых популярных задач является отображение признака «Оригинал получен». Если в документ уже добавлен соответствующий реквизит типа Булево, следующим логичным шагом становится его вывод в общую форму списка или специализированную обработку.
Однако на этом этапе разработчики часто сталкиваются с двумя проблемами: вместо привычного флажка (галочки) система выводит текст «Да/Нет», а при попытке собрать данные из разных типов документов в одну колонку возникает путаница в запросах динамического списка. В этой статье мы подробно разберем, как реализовать эту задачу эффективно и профессионально.
Проанализируем ситуацию: по умолчанию динамический список отображает булевы значения как текст. Чтобы превратить их в интерактивные или просто наглядные флажки, нам нужно поработать с элементами формы. Рассмотрим два варианта решения.
Вариант А. Использование вида элемента «Поле флажка»
Это самый простой способ, встроенный в платформу. Выполним следующие шаги:
ОригиналПолучен.Поле ввода на Поле флажка.Непосредственно.Вариант Б. Условное оформление и картинки (стандарт БСП)
В современных конфигурациях часто отказываются от стандартных флажков в пользу иконок (картинок), так как это выглядит более эстетично. Разберем, как это реализовать через условное оформление:
Истина/Ложь).КартинкаЗначений и укажем стандартную картинку флажка из библиотеки.Истина.Выясним причину основной сложности автора темы: когда реквизит «Оригинал получен» добавлен в несколько разных документов (например, «Реализация товаров и услуг» и «Акт выполненных работ»), при создании общего списка или журнала документов система создает отдельные колонки для каждого типа. Наша задача — «схлопнуть» их в одно поле.
Для этого нам потребуется использовать произвольный запрос в настройках динамического списка. Рассмотрим пример кода запроса, который объединяет данные:
ВЫБРАТЬ
ДокСписок.Ссылка КАК Ссылка,
ДокСписок.Дата КАК Дата,
ДокСписок.Номер КАК Номер,
ВЫБОР
КОГДА ДокСписок.Ссылка ССЫЛКА Документ.РеализацияТоваровУслуг
ТОГДА ВЫРАЗИТЬ(ДокСписок.Ссылка КАК Документ.РеализацияТоваровУслуг).ОригиналПолучен
КОГДА ДокСписок.Ссылка ССЫЛКА Документ.АктВыполненныхРабот
ТОГДА ВЫРАЗИТЬ(ДокСписок.Ссылка КАК Документ.АктВыполненныхРабот).ОригиналПолучен
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ФлагОригинала
ИЗ
ЖурналДокументов.Продажи КАК ДокСписок
Проанализируем этот запрос. Мы используем конструкцию ВЫБОР ... КОГДА ... ТОГДА, которая проверяет тип ссылки документа. Оператор ВЫРАЗИТЬ необходим для того, чтобы система понимала, к какому именно объекту мы обращаемся и могла извлечь его специфический реквизит ОригиналПолучен. В итоге мы получаем виртуальное поле ФлагОригинала, которое будет заполнено для всех типов документов в списке.
Если ваша задача подразумевает добавление признака оригинала в десятки различных видов документов, добавление реквизита в каждый из них вручную — плохая практика. Проанализируем более профессиональный архитектурный подход.
В дереве метаданных можно создать объект Общий реквизит:
ОригиналПолучен, тип Булево.Автоматически.Преимущество этого метода в том, что в динамическом списке (даже в стандартном журнале) это поле появится автоматически как единая колонка для всех включенных в состав документов. Вам не придется писать сложные конструкции ВЫБОР в запросе.
Если вы работаете в современной типовой конфигурации (БП 3.0, УТ 11, ERP), разберем, почему «изобретение велосипеда» может быть лишним. В составе БСП есть подсистема «Состояния оригиналов первичных документов».
Посмотрим на преимущества этого механизма:
СостоянияОригиналовПервичныхДокументов.Чтобы задействовать этот механизм, достаточно включить нужный документ в состав типов регистра и добавить вызов процедур БСП в модуле формы списка. Это обеспечит бесшовную интеграцию и стандартный интерфейс для пользователей.
При работе с динамическими списками, особенно если в базе тысячи документов, важно помнить о скорости работы. Рассмотрим важные моменты:
ОригиналПолучен напрямую в документ, обязательно установите у него свойство Индексировать. Это позволит пользователям мгновенно сортировать список по наличию оригинала и делать быстрые отборы.ВЫБОР по ссылке, как показано выше, является достаточно производительным решением для платформы 1С.Таким образом, мы рассмотрели все этапы решения задачи: от визуального отображения через Поле флажка до архитектурно правильного объединения данных через Общие реквизиты или использование механизмов БСП. Выбор конкретного метода зависит от масштаба вашей задачи и того, является ли конфигурация типовой или самописной.