При разработке собственных инструментов в 1С, например, обработок с динамическими списками, программисты часто сталкиваются с тем, что настроенные отборы не отображаются в верхней части формы автоматически. В типовых решениях (например, в списке справочника «Контрагенты») мы привыкли видеть удобные поля для быстрой фильтрации прямо над таблицей. Однако в новых формах, созданных «с нуля» или через расширения, эти поля могут отсутствовать, даже если в схеме компоновки данных (СКД) установлены все необходимые флаги «Включать в пользовательские настройки». Для более глубокой кастомизации таких интерфейсов можно использовать методы программного добавления полей в динамический список.
В этой статье мы подробно разберем механизм управления размещением пользовательских настроек и выясним, какие свойства элементов формы отвечают за визуализацию отборов, параметров и группировок динамического списка.
Рассмотрим стандартное поведение платформы 1С. Когда мы создаем форму списка для стандартного объекта метаданных, система применяет стандартные шаблоны размещения. В случае же с произвольной формой или формой обработки, где динамический список является лишь одним из реквизитов, платформа «не знает», куда именно нужно вывести элементы управления настройками. Если место для вывода не указано явно, настройки остаются доступными только через команду «Настроить список» в меню «Ещё».
Для решения задачи нам потребуется выполнить два этапа: правильно настроить компоновщик настроек в схеме и связать элемент формы (таблицу) со специальной группой размещения.
Прежде чем выводить что-либо в шапку, убедимся, что сами отборы подготовлены для отображения пользователю. Проанализируем настройки динамического списка:
После этого настройки считаются «пользовательскими», но они все еще привязаны к самому списку, а не к интерфейсу формы.
Теперь перейдем к самому важному этапу — визуальному связыванию. Рассмотрим алгоритм действий в редакторе управляемой формы:
ГруппаБыстрыхОтборов.Теперь нам нужно указать таблице динамического списка, что свои пользовательские настройки она должна «транслировать» именно в созданную нами группу. Проанализируем свойства элемента формы типа Таблица, который отображает наш список:
ГруппаПользовательскихНастроек).ГруппуБыстрыхОтборов.Результат: После выполнения этих действий платформа автоматически перенесет все элементы, помеченные как «пользовательские настройки» с быстрым доступом, из контекстного меню «Ещё» прямо в указанную группу на форме.
Выясним, как сделать интерфейс еще более удобным. У группы, в которую выводятся настройки, есть свойство «Отображение управления». Посмотрим, на что оно влияет:
Также стоит помнить о программном управлении. Если вы создаете форму динамически, вы можете установить эту связь с помощью встроенного языка 1С:
// Пример программной привязки группы настроек
Элементы.СписокКонтрагентов.ГруппаПользовательскихНастроек = Элементы.ГруппаШапкаОтборы;
Проанализируем ситуацию, когда на одной форме расположено два и более динамических списка (например, список заказов и список товаров в выбранном заказе). Критически важно создавать для каждого списка свою отдельную группу пользовательских настроек. Если вы укажете одну и ту же группу для двух разных таблиц, платформа не сможет корректно отрисовать элементы управления, и в лучшем случае вы увидите настройки только одного (последнего инициализированного) списка.
Подведем итог. Для появления отборов в шапке необходимо три составляющих: флаг «Включать в пользовательские настройки» в СКД, наличие Группы на форме и заполнение свойства «Группа пользовательских настроек» у элемента таблицы. Эти простые шаги позволяют превратить стандартный список в полноценное рабочее место с удобной фильтрацией данных. При необходимости перенести полученный результат с отборами в полноценный отчет можно использовать способ вывода динамического списка в отчет СКД.