В типовой конфигурации «Управление торговлей», редакция 10.3, которая базируется на обычных формах, пользователи часто сталкиваются с особенностями выбора элементов из справочников. По умолчанию для небольших справочников, таких как Организации, система предлагает выпадающий список (быстрый выбор). Однако в процессе работы может возникнуть необходимость принудительно открывать полноценную форму выбора или накладывать специфические фильтры на выпадающий список (например, скрывать помеченные на удаление организации). В этой статье мы подробно разберем, как управлять этим поведением через Конфигуратор и программный код.
Если при нажатии на поле выбора организации в документе вместо формы справочника открывается список, значит, задействован механизм «быстрого выбора». Разберем по шагам, как его отключить и вернуть стандартное поведение открытия формы.
Шаг 1. Настройка на уровне метаданных справочника
Прежде всего, проанализируем настройки самого объекта. В Конфигураторе найдем справочник Организации. На вкладке «Формы» обратим внимание на свойство Быстрый выбор. Если оно установлено, система будет пытаться подсунуть список вместо формы. Попробуем снять эту галочку. Однако помните, что изменения в метаданных справочника повлияют на все поля во всей конфигурации, где используется этот тип данных.
Шаг 2. Настройка реквизита в конкретном документе
Часто поведение определяется настройками конкретного реквизита объекта. Найдем нужный нам документ (например, РеализацияТоваровУслуг), перейдем в список его реквизитов и выберем Организация. В палитре свойств найдем категорию «Выбор» и установим свойство Быстрый выбор в значение «Ложь».
Шаг 3. Тонкая настройка свойств элемента управления на форме
Если изменения в реквизитах не помогли (как описывал автор в сообщении 4), значит, настройки переопределены непосредственно на самой форме документа. Выясним причину, изучив свойства поля ввода:
АвтоВыборИзСписка. Если он установлен в «Да», установим в «Нет».КнопкаВыбора. Она должна быть включена (значение «Да»), чтобы отображались «три точки», открывающие форму.Способ выбора. Попробуем изменить его с «Авто» на «Обособленно». Это заставляет платформу игнорировать попытки построить список и сразу открывать форму.Иногда задача стоит иначе: оставить удобный выпадающий список, но исключить из него определенные записи, например, те, что помечены на удаление. В обычных формах УТ 10.3 это решается программным перехватом события.
Рассмотрим подробнее использование события ПриНачалеВыбораИзСписка. Нам необходимо вручную сформировать список значений, который увидит пользователь. Разберем пример кода, который нужно разместить в модуле формы документа:
Процедура ОрганизацияПриНачалеВыбораИзСписка(Элемент, СтандартнаяОбработка)
// Отключаем стандартное формирование списка платформой
СтандартнаяОбработка = Ложь;
// Создаем запрос для получения только актуальных организаций
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Организации.Ссылка КАК Ссылка,
| Организации.Наименование КАК Наименование
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.ПометкаУдаления = ЛОЖЬ";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
// Очищаем текущий список выбора элемента управления
Элемент.СписокВыбора.Очистить();
// Заполняем список актуальными данными
Пока Выборка.Следующий() Цикл
Элемент.СписокВыбора.Добавить(Выборка.Ссылка, Выборка.Наименование);
КонецЦикла;
КонецПроцедуры
Этот метод гарантирует, что пользователь увидит только те организации, которые не помечены на удаление. Проанализируем ситуацию, если нам нужно использовать стандартную форму выбора с отбором. В этом случае мы используем событие ПриНачалеВыбора:
Процедура ОрганизацияПриНачалеВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь; // Отменяем стандартное открытие
ФормаВыбора = Справочники.Организации.ПолучитьФормуВыбора(, Элемент);
// Устанавливаем отбор по пометке удаления
ФормаВыбора.Отбор.ПометкаУдаления.Использование = Истина;
ФормаВыбора.Отбор.ПометкаУдаления.Значение = Ложь;
ФормаВыбора.Открыть();
КонецПроцедуры
При работе с конфигурацией «Управление торговлей 10.3» важно помнить, что многие действия с формами автоматизированы в общих модулях. Посмотрим, на что стоит обратить внимание:
РаботаСДиалогами.ПриОткрытииФормы(ЭтаФорма). Эти механизмы могут программно устанавливать видимость кнопок или доступность элементов, перекрывая ваши настройки в Конфигураторе. Проверьте, нет ли в модуле документа кода, который принудительно включает КнопкаСпискаВыбора.Организации, вы добьетесь того, что платформа сама отфильтрует данные на уровне SQL-запроса, и вам не придется писать код в каждой форме.ПараметрыВыбора в метаданных могут не работать или работать ограниченно. В таких случаях программный способ через СтандартнаяОбработка = Ложь является самым надежным.Таким образом, мы выяснили, что управление выбором организации требует комплексного подхода: от проверки свойств реквизита и элемента управления на форме до написания обработчиков событий для тонкой настройки фильтрации данных.