Как настроить отображение пометки на удаление при быстром выборе контрагента в 1С?

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

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

Разберем подробно несколько способ реализации этой задачи: от стандартных настроек параметров выбора до полного переопределения логики выпадающего списка с помощью программного кода.

Вариант 1. Исключение помеченных на удаление элементов через ОбработкаПолученияДанныхВыбора

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

Рассмотрим пошаговый алгоритм отключения стандартной обработки и формирования собственного списка:

  1. Открываем конфигуратор и переходим в модуль менеджера нужного справочника.
  2. Добавляем процедуру ОбработкаПолученияДанныхВыбора.
  3. Устанавливаем параметр СтандартнаяОбработка в значение Ложь, чтобы платформенное формирование списка отменилось.
  4. С помощью запроса выбираем элементы без пометки на удаление и передаем результат в параметр ДанныеВыбора.

Посмотрим на пример кода в модуле менеджера справочника:


Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    НовыйСписок = Новый СписокЗначений;
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |	Контрагенты.Ссылка КАК Ссылка
        |ИЗ
        |	Справочник.Контрагенты КАК Контрагенты
        |ГДЕ
        |	НЕ Контрагенты.ПометкаУдаления";
    
    Выборка = Запрос.Выполнить().Выгрузить();
    МассивСсылок = Выборка.ВыгрузитьКолонку("Ссылка");
    
    НовыйСписок.ЗагрузитьЗначения(МассивСсылок);
    ДанныеВыбора = НовыйСписок;

КонецПроцедуры

Вариант 2. Отображение пиктограммы пометки на удаление в списке выбора

Если необходимо, чтобы элементы с пометкой на удаление не скрывались, а выводились в выпадающем списке со специальной перечеркнутой иконкой, рассмотрим заполнение `ДанныеВыбора` элементами со структурой специальных признаков.

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

  1. Значение — ссылка на объект справочника.
  2. ПометкаУдаления — булево значение (Истина или Ложь). При передаче Истина платформа автоматически отрисует системную иконку пометки на удаление рядом с наименованием.
  3. Предупреждение — текстовая строка. Если заполнить этот ключ, то при попытке выбора данного элемента платформа покажет пользователю предупреждающее сообщение.

Разберем пример, в котором используется стандартный метод ПолучитьДанныеВыбора() для сохранения привычной логики поиска по строке с добавлением визуальных признаков:


Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    // Получаем стандартно сформированный список по введенному пользователем тексту
    СтандартныйСписок = Справочники.Контрагенты.ПолучитьДанныеВыбора(Параметры);
    ДанныеВыбора = Новый СписокЗначений;
    
    Для Каждого ЭлементИзСписка Из СтандартныйСписок Цикл
        
        СсылкаНаОбъект = ЭлементИзСписка.Значение;
        
        // Формируем структуру параметров визуализации
        ДопПараметры = Новый Структура;
        ДопПараметры.Вставить("Значение", СсылкаНаОбъект);
        ДопПараметры.Вставить("ПометкаУдаления", СсылкаНаОбъект.ПометкаУдаления);
        
        Если СсылкаНаОбъект.ПометкаУдаления Тогда
            ДопПараметры.Вставить("Предупреждение", "Выбран контрагент, помеченный на удаление!");
        КонецЕсли;
        
        ДанныеВыбора.Добавить(СсылкаНаОбъект, ЭлементИзСписка.Представление, , ДопПараметры);
        
    КонецЦикла;

КонецПроцедуры

Вариант 3. Настройка параметров выбора в конфигураторе без написания кода

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

Посмотрим на последовательность настройки через свойства реквизита или элемента формы:

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

Ограничения и важные нюансы работы

Проанализируем ключевые особенности поведения платформы 1С при работе с выпадающими списками ввода по строке:

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