Представленный в этой обработке подход может понравиться пользователям, работающим с большим каталогом товаров со сложной глубокой вложенностью, не желающим видеть лишние элементы справочника. В данном случае с нулевым остатком.
Обработку можно открыть в режиме 1С:Предприятие с помощью сочетания клавиш [Ctrl]+[O], если конфигурация имеет:
- Управляемый интерфейс (управляемые формы)
- Справочник «Номенклатура»
- Справочник «Склады»
- Регистр накопления «Товары на складах»
Известно, что в динамическом списке нельзя использовать суммирование итогов в иерархии. Следовательно, нельзя напрямую отфильтровать элементы справочника по наличию остатков так как для всех групп остаток будет равен нулю. Если отфильтровать только ненулевые остатки то в результате такого отбора останутся только элементы справочника без групп. Такой список нельзя будет сделать иерархическим в динамическом списке. Будет возникать ошибка «Обнаружено рассогласование данных».
Но как всё-таки сделать итоги по иерархии в СКД или остатки в иерархии динамического списка?
Решением стал подход использования события динамического списка ПриПолученииДанныхНаСервере() и дозаполнения остатками, полученными в обычном запросе, в котором уже использовались ИТОГИ СУММА(Остаток) ПО Номенклатура ИЕРАРХИЯ.
После того как выяснилось в каком элементе или группе справочника находился нулевой остаток выполняется программное сокрытие элементов.
Если интересно посмотреть на код, то вы можете скачать обработку.
Обработка тестировалась на платформе 8.3.18.1563 и конфигурации Розница, редакция 2.3 (2.3.9.42).