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