Содержание:
1. Открытие формы выбора с отбором
2. Динамический отбор в системе компоновки данных 1С
3. Открытие формы выбора в модальном режиме
4. Настройка отбора на серверной стороне
Форма выбора в 1С — это инструмент, позволяющий пользователю выбрать данные из справочников, документов, регистров или других объектов системы. Иногда требуется открывать форму выбора с заранее установленным отбором, чтобы пользователю отображались только определенные данные. Рассмотрим, как это реализовать программно.
Основные принципы работы с формами выбора:
Форма выбора в 1С открывается с использованием метода ОткрытьФорму(), который позволяет:
- Указать объект, для которого нужно открыть форму выбора.
- Передать параметры отбора для фильтрации данных.
- Получить результат выбора через подписку на событие или с помощью возврата значения.
Синтаксис метода ОткрытьФорму():
ОткрытьФорму(ИмяФормы, Параметры = Неопределено, Окно = Неопределено, РежимОткрытия = Неопределено, ПроцедураОбработки = Неопределено)
1. Открытие формы выбора с отбором
Чтобы задать отбор 1С, используется объект Структура, который передается в параметрах метода ОткрытьФорму().
Пример: выбор справочника с отбором
Допустим, нужно открыть форму выбора справочника "Номенклатура", отфильтровав только товары, у которых есть признак "ЭтоУслуга = Ложь".
Процедура ОткрытьФормуВыбораНоменклатуры()
// Создаем параметры отбора
Параметры = Новый Структура;
Параметры.Вставить("ЭтоУслуга", Ложь); // Указываем, что выбираем только товары
// Открываем форму выбора справочника "Номенклатура"
ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", Параметры, , , "ОбработкаВыбора");
КонецПроцедуры
Процедура ОбработкаВыбора(ВыбранныйЭлемент)
Если ВыбранныйЭлемент <> Неопределено Тогда
Сообщить("Выбранный элемент: " + ВыбранныйЭлемент);
Иначе
Сообщить("Выбор отменен");
КонецЕсли;
КонецПроцедуры
В этом примере:
- Параметр ЭтоУслуга передается в форму выбора как отбор.
- Результат выбора обрабатывается в процедуре ОбработкаВыбора.
2. Динамический отбор в системе компоновки данных 1С
Иногда нужно передавать отбор, сформированный на основании переменных или пользовательского ввода. Для этого можно использовать программное добавление параметров в структуру отбора.
Пример: выбор документов по периоду
Процедура ОткрытьФормуВыбораДокументов()
НачалоПериода = '2024-01-01';
КонецПериода = '2024-12-31';
// Формируем отбор
Параметры = Новый Структура;
Параметры.Вставить("Дата", Новый Структура("Значение1,Значение2", НачалоПериода, КонецПериода));
// Открываем форму выбора документов "ПоступлениеТоваров"
ОткрытьФорму("Документ.ПоступлениеТоваров.ФормаВыбора", Параметры, , , "ОбработкаВыбора");
КонецПроцедуры
В данном примере:
- Отбор по полю Дата задается для диапазона значений (с использованием структуры).
- Форма выбора отображает только документы в заданном периоде.
3. Открытие формы выбора в модальном режиме
В модальном режиме результат выбора возвращается непосредственно через вызов функции ОткрытьФорму(), что упрощает обработку.
Пример: модальный выбор справочника
Функция ВыбратьНоменклатуру()
// Формируем параметры отбора
Параметры = Новый Структура;
Параметры.Вставить("ЭтоУслуга", Ложь);
// Открываем форму выбора в модальном режиме
Результат = ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", Параметры, , РежимОткрытияОкна.Модальное);
Возврат Результат;
КонецФункции
Процедура ПримерИспользования()
ВыбранныйЭлемент = ВыбратьНоменклатуру();
Если ВыбранныйЭлемент <> Неопределено Тогда
Сообщить("Выбрана номенклатура: " + ВыбранныйЭлемент.Наименование);
Иначе
Сообщить("Пользователь отменил выбор");
КонецЕсли;
КонецПроцедуры
4. Настройка отбора на серверной стороне
Отбор можно установить не только при открытии формы, но и в самом коде формы на серверной стороне. Это полезно, если нужно сложное вычисление перед применением фильтра.
Пример: отбор в обработчике формы
Процедура ПередОткрытиемНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("ЭтоУслуга") Тогда
ЭлементыФормы.Список.НастроитьОтбор("ЭтоУслуга", Параметры.ЭтоУслуга);
КонецЕсли;
КонецПроцедуры
Форма выбора в 1С — это мощный инструмент для интерактивной работы с пользователем. Задание отбора при открытии формы позволяет существенно упростить поиск нужных данных и улучшить пользовательский опыт. Вы можете задавать фильтры как при открытии формы, так и в коде самой формы, комбинируя различные подходы для достижения нужной функциональности.
Специалист компании ООО "Кодерлайн"
Степан Радченко