Динамический иерархический список только с имеющимися товарами на складе с отображением остатков в элементах и группах
На примере внешней обработки представлен способ реализации формы выбора номенклатуры. При этом товары с нулевым и отрицательным остатком скрываются из списка, а если в группе в иерархии нет ни одного имеющегося на складе товара — то и группа в динамическом списке не отображается.
- Описание
- Подробнее
Описание
Представленный в этой обработке подход может понравиться пользователям, работающим с большим каталогом товаров со сложной глубокой вложенностью, не желающим видеть лишние элементы справочника. В данном случае с нулевым остатком.
Обработку можно открыть в режиме 1С:Предприятие с помощью сочетания клавиш [Ctrl]+[O], если конфигурация имеет:
- Управляемый интерфейс (управляемые формы)
- Справочник «Номенклатура»
- Справочник «Склады»
- Регистр накопления «Товары на складах»

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