Открытие списка с отбором

Открытие управляемой формы списка с установленным отбором 1С.

Приветствую всех заглянувших на огонёк!  🙂

Тема открытия списка документов, справочников, регистра с отбором на управляемых формах (УФ) давно «избита». Но нюансы как всегда появляются.

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

Отбор устанавливается программно.

Установка программного отбора на управляемых формах имеет на мой взгляд одно неоспоримое преимущество: нет необходимости изменять целевую форму (форму списка), достаточно прописать несколько строчек кода в том месте, откуда вызывается отбор. Это может очень пригодиться, когда ведется доработка типовой конфигурации и желательно изменять как можно меньше объектов с максимумом эффективности. Открытие списка с отбором может пригодиться в разных задачах, но как правило это подбор нужного документа (или элемента справочника) в вашу форму.

Чаще всего применяется второй способ, но иногда необходим и первый.

На форумах информация есть, но она чаще всего сильно разрозненная и не полная (

А точнее:

Открытие списка с отборомВ первом случае выделенный раздел выводится, во втором случае — нет.

1. Если необходимо отразить примененный отбор на форме списка:

    Форма = ОткрытьФорму("Документ.ПоступлениеТоваровУслуг.Форма.ФормаВыбора",, Элементы.Товары);  //Здесь указываете свою форму

    ПользовательскийОтбор = Форма.СписокДокументыПоступления.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Форма.СписокДокументыПоступления.КомпоновщикНастроек.Настройки.Отбор.ИдентификаторПользовательскойНастройки); //Если вам известен идентификатор, указываете здесь. Но можно не заполнять
    ПользовательскийОтбор.Элементы.Очистить();  //Очищаются ранее установленные нстройки

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

    //Этот блок можно повторять столько раз, сколько требуется установить отборов. Идентификатор в каждом отоборе должен быть разный.

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

2. Если необходимо открыть без отображения отбора:

    Форма = ОткрытьФорму("Документ.ПоступлениеТоваровУслуг.Форма.ФормаВыбора",, Элементы.Товары);  //Здесь указываете свою форму

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

    //Этот блок можно повторять столько раз, сколько требуется установить отборов

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

На этом все, тема Открытие списка с отбором — на мой взгляд раскрыта 🙂

Если есть вопросы, задавайте в комментариях.

PS. А для тех кто занимается поддержкой расчета зарплаты на предприятии (не только программисты), напоминаю что по этой тематике выделен отдельный ресурс Pro-Zup.info.

Если у Вас возникают по этой теме вопросы, Вы заинтересованы в расширении возможностей типовой программы или есть пожелания по устранению проблем — добро пожаловать на ресурс https://pro-zup.info/

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *