В типовой конфигурации 1С:Управление торговлей 11.4 отчет «Прайс-лист» по умолчанию настроен таким образом, что остатки товаров выводятся в разрезе каждого конкретного склада. Для многих торговых компаний такая детализация в клиентском прайсе избыточна — покупателю важно знать общее количество доступного товара, а не его распределение по внутренним точкам хранения. Разберем подробно, как объединить эти данные в одну колонку, используя настройки отчета и механизм СКД.
Прежде всего, проанализируем, почему стандартный отчет не всегда корректно суммирует остатки при простом изменении настроек. В системе компоновки данных (СКД) для «Прайс-листа» разработчиками 1С часто используется функция Максимум(Остаток) в ресурсах. Это сделано для того, чтобы при выводе нескольких видов цен (например, «Оптовая» и «Розничная») один и тот же остаток не суммировался дважды. Если мы просто включим общие итоги, система может показать максимум по одному из складов вместо их суммы.
Рассмотрим ситуацию по шагам: выясним, как изменить настройки отображения и какие технические правки потребуются в схеме компоновки.
Для начала попробуем решить задачу штатными средствами изменения варианта отчета. Этот способ подойдет, если в прайс-листе используется только один вид цены.
Склад или Магазин. Чтобы остатки «схлопнулись» в одну строку по товару, нам необходимо снять флажок с этой группировки или вовсе удалить ее.Важный нюанс: Если после удаления группировки отчет начал выводить вместо реального количества цифру «1» или некорректные данные, значит, в ресурсах СКД вместо поля остатка используется текстовое поле или количество строк. В этом случае потребуется вмешательство в саму схему (СКД).
Если штатные настройки не помогают и остатки по складам не суммируются, нам необходимо сохранить отчет как внешний и внести изменения в Схему компоновки данных. Проанализируем, как это сделать правильно, чтобы избежать «задвоения» остатков при наличии нескольких колонок с ценами.
Выполним следующие действия по шагам:
ПрайсЛист и сохраним его как внешний отчет (.erf).Остаток (или ВНаличии). Скорее всего, в колонке «Выражение» указано Максимум(Остаток).Максимум на Сумма, то при выводе двух типов цен остаток увеличится в два раза. Чтобы этого избежать, используем более сложную конструкцию:
Сумма(ВычислитьВыражениеСГруппировкойТаблицаЗначений("Максимум(Остаток)", "Склад"))
Это выражение приказывает системе сначала вычислить максимальный остаток в разрезе каждого склада (чтобы отсечь дубли по ценам), а затем сложить полученные результаты между собой.
Рассмотрим еще один метод, который позволяет оставить структуру отчета гибкой. Если вам нужно скрыть колонки конкретных складов, оставив только итоговую колонку «Всего», можно воспользоваться группировкой без полей.
В настройках варианта отчета (Изменить вариант отчета) попробуйте добавить новую группировку, не выбирая в ней никаких полей. Внутри этой «пустой» группировки разместите детальные записи. Это заставит систему агрегировать данные на верхнем уровне, не дробя их по конкретным местам хранения. Однако помните, что это сработает только при условии, что в ресурсах СКД настроено суммирование (Сумма), а не выборка максимального значения.
При настройке прайс-листа пользователи часто сталкиваются с тем, что база «повисает» при формировании. Проанализируем причину: 1С пытается рассчитать остатки по всем складам, всем характеристикам и всем упаковкам одновременно для формирования огромной матрицы данных.
Чтобы ускорить процесс, рекомендуем:
Номенклатура, Склад).Склад выводите данные по полю Склад.Родитель.Подводя итог, можно сказать, что решение проблемы вывода общего остатка в «Прайс-листе» УТ 11.4 требует комплексного подхода. Если ваша задача ограничена выводом одной цены — достаточно просто удалить группировку по складу в настройках варианта. Если же прайс сложный и включает в себя несколько типов цен, характеристик и складов, единственным верным решением будет изменение выражения ресурса в СКД на сумму максимумов в разрезе складов.
Для сохранения возможности автоматического обновления конфигурации, мы рекомендуем реализовывать эти изменения через Расширения, переопределяя только схему компоновки данных конкретного отчета, не затрагивая основной код системы.