При доработке системы или переносе объектов между конфигурациями (например, при переносе документа в 1С:ERP Управление предприятием) разработчики иногда сталкиваются с визуальной аномалией. Документ успешно проводится, в базе присутствуют все необходимые движения, однако в форме списка пиктограмма состояния указывает на то, что объект помечен на удаление. При повторных попытках интерактивного изменения пометки удаления значки могут переключаться хаотично, а отладчик при этом подтверждает правильность реквизитов Проведен = Истина и ПометкаУдаления = Ложь.
Рассмотрим подробно причины возникновения такого сбоя и проанализируем основные способы восстановления корректного отображения иконок документов в динамических списках.
Самая частая причина несовпадения реального состояния объекта с его пиктограммой в списке — закэшированные метаданные и визуальные настройки формы. Платформа 1С сохраняет кэш структуры форм, картинок и пользовательских отображений. При копировании или объединении объектов метаданных ссылки на внутренние коллекции картинок могут сбиться.
Решение: Очистка кэша и выполнение ТИИ
%LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8 (каталоги с наименованиями в виде GUID)./ClearCache в параметрах строки запуска клиентского приложения.При переносе форм списка из других конфигураций у пользователей сохраняются старые настройки формы (положение колонок, сохраненные отборы, условное оформление и индексы строк). Эти данные хранятся отдельно в системном хранилище базы данных.
Разберем, как сбросить сохраненный вид формы к первоначальному состоянию:
Проанализируем конфигурационные свойства динамического списка. Если динамический список использует произвольный запрос, платформа может корректно не определять системное поле СтандартнаяКартинка, если не задана привязка к объекту.
Выполним следующие проверки в режиме «Конфигуратор»:
Список (тип ДинамическийСписок).Документ.ИмяДокумента). Это необходимо для того, чтобы платформа автоматически рассчитывала картинку строки.ПутьКДаннымКартинкиСтроки должно быть указано значение Список.СтандартнаяКартинка.В некоторых конфигурациях статус документа рассчитывается явно внутри запроса динамического списка и выводится через числовой индекс коллекции картинок. Если индексы картинки проведенного документа (например, 1) и пометки удаления (например, 2) перепутаны или сдвинуты, пиктограмма будет отображаться неверно.
Проанализируем пример кода запроса, вычисляющего индекс состояния документа:
ВЫБОР
КОГДА ДокументТаблица.ПометкаУдаления ТОГДА 2
КОГДА ДокументТаблица.Проведен ТОГДА 1
ИНАЧЕ 0
КОНЕЦ КАК ИндексСостояния
При использовании такого подхода необходимо убедиться, что полученное поле ИндексСостояния связано со свойством таблицы ПутьКДаннымКартинкиСтроки, а в свойстве КартинкаСтрок выбрана правильная коллекция пиктограмм состояний документов с соответствующим порядком иконок.