Почему в динамическом списке не отображается пометка на удаление и как это исправить?

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

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

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

Причина 1. Не указана или сброшена основная таблица динамического списка

Платформа 1С формирует системную колонку с пиктограммами состояния объекта (пометка на удаление, проведение документа, предопределенный элемент, группа или элемент) автоматически. Чтобы этот механизм работал, динамический список должен однозначно определять тип и источник строки.

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

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

  1. Откроем форму списка в конфигураторе.
  2. Перейдем на вкладку Элементы или Реквизиты и выберем реквизит формы с типом ДинамическийСписок (обычно это Список).
  3. В палитре свойств найдем свойство НастройкаСписка и откроем окно редактирования.
  4. Проверим поле Основная таблица. Если поле пустое, выберем соответствующий объект метаданных (например, Справочник.Номенклатура или Документ.РеализацияТоваровУслуг).
  5. Сохраним изменения и проверим работу формы в пользовательском режиме.

Причина 2. Особенности произвольного запроса и отсутствие системных полей

Если в динамическом списке используется произвольный запрос со сложными соединениями или группировками, платформа может потерять доступ к системным полям, необходимым для расчета индекса пиктограммы. Для автоматического отображения статуса строки в секции ВЫБРАТЬ запроса обязательно должны присутствовать ключевые реквизиты объекта.

Проанализируем структуру запроса. В тексте запроса обязательно должны выбираться следующие поля:

  1. Ссылка — без ссылки платформа не сможет связать строку с конкретным объектом базы данных.
  2. ПометкаУдаления — булево поле, определяющее наличие красного крестика на значке.
  3. Предопределенный — для справочников и планов видов характеристик.
  4. ЭтоГруппа — для иерархических справочников, чтобы разделить пиктограммы папок и элементов.
  5. Проведен — для документов, чтобы отображать статус проведения.

Посмотрим на пример корректного текста запроса динамического списка:


ВЫБРАТЬ
    Спр.Ссылка КАК Ссылка,
    Спр.ПометкаУдаления КАК ПометкаУдаления,
    Спр.Предопределенный КАК Предопределенный,
    Спр.ЭтоГруппа КАК ЭтоГруппа,
    Спр.Код КАК Код,
    Спр.Наименование КАК Наименование,
    Спр.Артикул КАК Артикул
ИЗ
    Справочник.Номенклатура КАК Спр

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

Причина 3. Специфика веб-клиента и кэширование браузера

Иногда пиктограмма пометки на удаление корректно отображается в тонком клиенте, но пропадает при работе через веб-клиент. Веб-клиент выполняет рендеринг управляемых форм средствами браузера, где активную роль играют кэш статических ресурсов и сохраненные пользовательские настройки формы.

Если проблема проявляется исключительно в веб-клиенте, выполним следующие действия:

  1. Очистим кэш веб-браузера (временные файлы, стили и скрипты).
  2. В конфигураторе снимем и заново установим флаг Произвольный запрос у динамического списка, заново перевыбрав основную таблицу. Это принудительно обновит метаданные формы для веб-клиента.
  3. Перезапустим сеанс веб-клиента и проверим результат.

Причина 4. Свойства таблицы формы и пользовательские настройки

Значок пометки на удаление может не выводиться из-за настроек самого элемента формы — таблицы, отображающей динамический список.

Проверим свойства элемента таблицы в конфигураторе:

  1. Убедимся, что включено свойство ИспользоватьСтандартнуюКартинку (или корректно указан ПутьКДаннымКартинкиСтрок).
  2. Проверим, что колонка системной картинки не скрыта на уровне формы.

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

  1. В форме списка нажмем меню Еще.
  2. Выберем пункт Изменить форму....
  3. Нажмем кнопку Установить стандартные настройки в меню Еще окна настройки формы.

Альтернативное решение: выделение помеченных на удаление строк через условное оформление

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

Разберем настройку по шагам:

  1. В форме списка откроем меню Еще и перейдем в Настроить список....
  2. Перейдем на вкладку Условное оформление и добавим новый элемент оформления.
  3. В области Оформление зададим параметры: установим серый цвет текста, зачеркнутый шрифт или фоновую подсветку строки.
  4. В области Условие добавим новое условие: ПометкаУдаления Равно Да.
  5. В области Оформляемые поля оставим список пустым (для оформления всей строки) или выберем ключевые колонки (например, Наименование и Код).
  6. Нажмем Завершить редактирование и применим настройки кнопкой ОК.

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

← На главную