При работе в интерфейсе «Обычных форм» (например, в конфигурации «Управление производственным предприятием» или «Управление торговлей 10.3») пользователи часто сталкиваются с неудобством при использовании стандартного окна «Отбор и сортировка». Это окно открывается при нажатии на кнопку с иконкой воронки в списках справочников или документов. Часто бывает так, что наиболее важные поля для поиска оказываются в самом конце длинного списка, а второстепенные — в начале.
В этой статье мы подробно разберем, по каким правилам платформа 1С формирует этот список, и выясним, какими способами программист может повлиять на порядок следования полей, чтобы сделать работу пользователя более эффективной.
Рассмотрим основной механизм, который определяет расположение реквизитов в диалоге отбора. Как было отмечено в ходе обсуждения на форуме, платформа 1С:Предприятие 8 не позволяет пользователю менять порядок полей простым перетаскиванием (Drag-and-Drop) непосредственно в самом окне «Отбор и сортировка».
Определяющим фактором является физическое расположение реквизитов в дереве метаданных конфигурации. Если мы проанализируем структуру объекта в Конфигураторе, то увидим, что поля в форме отбора обычно выводятся в следующей последовательности:
Ссылка, Дата, Номер, Код или Наименование, имеют приоритет и жестко закреплены платформой в начале списка. Изменить их положение относительно пользовательских реквизитов невозможно.Чтобы изменить порядок, нам необходимо в Конфигураторе открыть дерево метаданных нужного объекта, найти раздел «Реквизиты» и с помощью стрелок (вверх/вниз) на панели инструментов переместить нужные поля. После сохранения конфигурации порядок в форме отбора обновится.
Проанализируем технический нюанс, связанный с производительностью. Хотя порядок метаданных является базовым, платформа 1С отдает негласный приоритет индексированным полям. Реквизиты, у которых в свойствах установлено значение Индексировать или Индексировать с дополнительным упорядочиванием, технически более пригодны для быстрого поиска.
В некоторых версиях платформы и при использовании определенных механизмов (например, построителя отчета) индексированные поля могут группироваться выше тех, по которым индекс не построен. Это делается для того, чтобы подтолкнуть пользователя выбирать те критерии поиска, которые не вызовут избыточной нагрузки на сервер базы данных.
В обычных формах (особенно в УПП) за работу динамических списков и окна «Отбор и сортировка» часто отвечает объект ПостроительОтчета. Если форма списка построена на его основе, то состав и порядок доступных полей могут зависеть от текста запроса, который является источником данных.
Если нам нужно программно вмешаться в этот процесс, мы можем изменить порядок следования полей в блоке ВЫБРАТЬ текста запроса. Рассмотрим пример того, как это может выглядеть в коде:
// Пример изменения текста запроса для построителя в форме списка
ТекстЗапроса =
"ВЫБРАТЬ
| ДокументОбъект.Ссылка,
| ДокументОбъект.Дата,
| ДокументОбъект.Контрагент КАК Контрагент,
| ДокументОбъект.Организация КАК Организация,
| ДокументОбъект.СуммаДокумента
|ИЗ
| Документ.ЗаказПокупателя КАК ДокументОбъект";
ПостроительОтчета.Текст = ТекстЗапроса;
ПостроительОтчета.ЗаполнитьНастройки();
В данном случае поля в отборе будут стремиться к порядку, указанному в секции ВЫБРАТЬ, если иное не переопределено в настройках самого построителя.
Иногда задача стоит не в том, чтобы просто переместить поле, а в том, чтобы убрать лишнее, тем самым упростив поиск. Выясним, как это сделать программно. Мы можем использовать свойство НастройкаОтбора или напрямую обращаться к доступным полям построителя. Это позволяет исключить технические или служебные реквизиты из видимости пользователя.
Разберем пример кода, ограничивающего доступные поля для отбора:
// Скроем возможность отбора по конкретному полю
ПолеОтбора = ПостроительОтчета.ДоступныеПоля.Найти("СлужебныйРеквизит");
Если ПолеОтбора <> Неопределено Тогда
ПолеОтбора.Отбор = Ложь;
ПолеОтбора.Порядок = Ложь;
КонецЕсли;
Хотя этот метод напрямую не меняет очередность оставшихся элементов, он значительно сокращает список, делая его более читаемым.
В конфигурации «Управление производственным предприятием» активно используется механизм дополнительных свойств и категорий. Важно понимать, что эти данные не являются реквизитами метаданных в классическом понимании. Они хранятся в отдельных регистрах сведений.
По этой причине они не появляются в стандартном списке отбора автоматически. Для работы с ними в УПП предусмотрены специальные закладки или отдельные кнопки «Отбор по свойствам». Порядок их следования настраивается не в Конфигураторе, а в режиме «1С:Предприятие» через справочник «Назначения свойств объектов». Там можно задать числовой индекс сортировки для каждого свойства.
Подведем итог нашему анализу. Если вам необходимо изменить порядок полей в стандартном окне «воронки»:
Дата, Номер и Ссылка всегда будут в приоритете, и это поведение платформы по умолчанию.Используя эти методы, вы сможете настроить интерфейс системы таким образом, чтобы он максимально соответствовал потребностям пользователей и специфике бизнес-процессов организации.