При оформлении заказов клиентов или закупках в решениях на платформе 1С:Предприятие 8 (таких как 1С:ERP, 1С:Комплексная автоматизация 2 или 1С:Управление торговлей 11) менеджеры активно пользуются формой подбора товаров. Для быстрого поиска нужной позиции крайне важна панель быстрых отборов. Однако часто возникает неприятная ситуация: настроенные фильтры по свойствам и характеристикам номенклатуры начинают отображаться в хаотичном порядке. Это сильно замедляет работу пользователей, особенно если количество фильтров измеряется десятками.
В этой статье мы подробно разберем, почему сбивается порядок фильтров по свойствам, рассмотрим практический «эмпирический» метод решения этой проблемы прямо в пользовательском режиме, а также изучим стандартные административные и программные способы фиксации порядка отображения реквизитов.
Для начала проанализируем ситуацию изнутри. Панель быстрых отборов по свойствам в формах выбора или подбора номенклатуры не является статичным элементом, нарисованным в конфигураторе. Платформа 1С строит этот интерфейс динамически («на лету») при открытии формы.
Этот процесс опирается на несколько факторов:
НаборыДополнительныхРеквизитовИСведений.Порядок. Для платформы эти свойства становятся «новыми», и она выстраивает их случайным образом или по алфавиту.Рассмотрим несколько способов решения этой проблемы, начиная от простых пользовательских манипуляций и заканчивая системными настройками.
Если проблему нужно решить оперативно здесь и сейчас, без привлечения программистов и изменения кода, мы можем воспользоваться проверенным практическим методом. Этот алгоритм позволяет восстановить иерархию отображения элементов вручную.
Разберем этот процесс по шагам:
Важное предупреждение: данный метод является обходным. При добавлении новых характеристик в середину списка в будущем порядок может снова нарушиться, поэтому для долгосрочного решения рекомендуется использовать стандартные административные методы.
Чтобы зафиксировать порядок отображения свойств без риска их случайного перемешивания, администратору системы необходимо правильно настроить связи дополнительных реквизитов.
Выполним последовательно следующие действия:
Шаг А. Упорядочивание дополнительных реквизитов в наборе
Порядок вывода свойств на форму напрямую зависит от их расположения в плане видов характеристик.
Порядок.Шаг Б. Проверка значений внутри свойств
Часто путаница возникает из-за того, что значения внутри конкретного свойства (например, размеры одежды или типы коробок передач) выводятся не по порядку.
3.1 Робот, затем 3.2 Автоматическая). В быстрых фильтрах они будут выводиться строго в заданной последовательности.Если на предприятии настроена частая синхронизация данных с внешними сайтами, ручные настройки администратора будут постоянно сбрасываться. В этом случае программисту 1С необходимо вмешаться в процесс построения формы или логику обмена данными.
За построение фильтров в типовых решениях отвечает подсистема Библиотеки стандартных подсистем (БСП) УправлениеСвойствами. Основной программный код сосредоточен в общих модулях УправлениеСвойствамиСлужебный и модулях форм подбора (например, обработка ПодборТоваров).
Чтобы не снимать конфигурацию с поддержки, применим механизм расширений. Мы можем программно переопределить порядок элементов на форме в процедуре ПриСозданииНаСервере формы подбора товаров.
Посмотрим на пример кода, который принудительно упорядочивает элементы формы в группе фильтров:
&НаСервере
Процедура Расш_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// Получаем группу на форме, где динамически размещены свойства
ГруппаБыстрыхОтборов = Элементы.Найти("ГруппаБыстрыйОтборПоСвойствам");
Если ГруппаБыстрыхОтборов <> Неопределено Тогда
// Создаем массив с правильным порядком имен реквизитов
ПравильныйПорядок = Новый Массив;
ПравильныйПорядок.Добавить("Свойство_Автомобиль");
ПравильныйПорядок.Добавить("Свойство_ЦветАвтомобиля");
ПравильныйПорядок.Добавить("Свойство_ТипКПП");
// Перемещаем элементы в соответствии с нашим массивом
Для Каждого ИмяЭлемента Из ПравильныйПорядок Цикл
ЭлементФормы = Элементы.Найти(ИмяЭлемента);
Если ЭлементФормы <> Неопределено Тогда
ГруппаБыстрыхОтборов.ПодчиненныеЭлементы.Переместить(
ЭлементФормы,
ГруппаБыстрыхОтборов.ПодчиненныеЭлементы.Количество() - 1
);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Также программистам, отвечающим за интеграцию с сайтом, необходимо скорректировать логику работы модуля обмена. При обновлении информации о характеристиках из CMS программа не должна удалять и создавать элементы заново. Поиск существующих реквизитов в 1С должен выполняться строго по уникальному идентификатору (GUID), а запись реквизита Порядок у планов видов характеристик при обмене должна быть заблокирована.
Используя предложенные методы, мы сможем гарантировать стабильное и удобное отображение фильтров по свойствам номенклатуры, что значительно повысит скорость работы пользователей в оформлении документов.