Как учитывать остатки товара в разрезе упаковок с разным количеством штук без адресного склада в 1С

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

В торговой деятельности часто возникает ситуация, когда один и тот же товар поступает от поставщиков в разных упаковках. Например, сегодня пришла партия в коробках по 20 штук, а завтра — в коробках по 16 штук. Стандартные механизмы 1С:Управление торговлей 11, ERP и Комплексной автоматизации при выключенном адресном складе «схлопывают» все остатки в базовую единицу измерения (обычно это штуки). В результате менеджер видит общее количество — например, 160 штук, но не может оперативно понять, сколько на складе коробок по 20, а сколько по 16.

Разберем подробно, почему так происходит, и какие инструменты (включая «костыли» и штатные механизмы) мы можем применить для решения этой задачи.

Анализ технического ограничения платформы

Для начала проанализируем, почему типовой отчет «Ведомость по товарам на складах» не показывает остатки в разных упаковках. Проблема кроется в структуре регистров накопления. В типовых конфигурациях за остатки отвечает регистр ТоварыНаСкладах. Если мы заглянем в его конфигурацию, то увидим следующие измерения:

Как мы видим, измерения Упаковка в этом списке нет. Это означает, что система физически не хранит информацию о том, в какой упаковке товар поступил на склад. Упаковка в документах поступления и отгрузки используется только как «коэффициент пересчета» в базовую единицу. Если вы приняли 10 коробок по 20 штук, в регистр запишется просто 200 штук.

Измерение Упаковка появляется только в регистре ТоварыВЯчейках, который задействуется при включении опции «Адресное хранение» (WMS). Рассмотрим, как обойти это ограничение без полноценного внедрения WMS.

Решение 1: Использование механизма серий (наиболее рекомендуемое)

Если характеристики кажутся слишком громоздкими, а адресный склад — избыточным, использование серий является самым изящным способом разделения остатков. Мы можем настроить политику учета серий так, чтобы серия идентифицировала партию товара с определенным наполнением упаковки.

Разберем этот метод по шагам:

  1. Зайдем в настройки номенклатуры и включим использование серий.
  2. Создадим Политику учета серий, где выберем тип политики «Учет себестоимости по сериям» или «Управление остатками серий».
  3. В настройках укажем, что серия идентифицирует «Партию товаров».
  4. При поступлении товара в поле серии будем записывать информацию: «Коробка 20 шт» или «Коробка 16 шт».

Поскольку Серия является измерением регистра ТоварыНаСкладах, система перестанет суммировать товар в одну кучу. В любом стандартном отчете вы сможете сделать группировку по сериям и увидеть четкое разделение остатков.

Решение 2: Упрощенный адресный склад (Костыль с одной ячейкой)

Автор вопроса упоминал идею использования адресного склада с одной ячейкой. Выясним, имеет ли это смысл. На самом деле, это вполне рабочий вариант, который требует минимум усилий по настройке топологии склада.

Рассмотрим порядок действий:

  1. В карточке склада установим вариант использования ячеек: «Использовать для хранения остатков номенклатуры».
  2. Создадим одну Область хранения и одну Ячейку (например, с кодом «ОСНОВНАЯ»).
  3. Теперь при приемке товара система будет требовать документ «Отбор (размещение) товаров», где вы будете указывать конкретную упаковку.

Важный нюанс: В этом режиме остатки будут фиксироваться в регистре ТоварыВЯчейках, где измерение Упаковка присутствует. Вы сможете строить отчет «Остатки товаров по ячейкам», который покажет количество именно в тех коробках, в которых товар был размещен. Плюс метода — точность. Минус — необходимость создавать лишний документ «Размещение» на каждое поступление.

Решение 3: Использование характеристик номенклатуры

Это классический способ разделения остатков. Мы создаем характеристики, например, «Размер упаковки: 16» и «Размер упаковки: 20».

Проанализируем ситуацию: если поставщик часто меняет количество, справочник характеристик будет быстро расти. Однако, это единственный способ заставить систему видеть разные коробки как разные объекты учета без включения дополнительных складских модулей.

Чтобы упростить работу, можно использовать Дополнительные реквизиты для характеристик, в которых хранить числовой коэффициент. Это позволит в дальнейшем доработать отчеты для автоматического пересчета.

Решение 4: Доработка отчетов через программный код

Если вы не хотите менять схему учета, можно попробовать реализовать визуализацию через запрос в отчете. Рассмотрим пример логики запроса, предложенный в обсуждении. Если пользователь сам выбирает, в какую упаковку пересчитать остаток, можно использовать функцию ТекстЗапросаКоэффициентаУпаковки.

Посмотрим на пример кода для динамического пересчета в запросе:


ТекстЗамены = Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
    "ВЫРАЗИТЬ(&Упаковка КАК Справочник.УпаковкиЕдиницыИзмерения)", 
    "ОстаткиТоваров.Номенклатура"
);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&КоэффициентУпаковки", ТекстЗамены);

Затем в самом тексте запроса мы используем умножение:


ВЫБРАТЬ
    ОстаткиТоваров.Склад,
    ОстаткиТоваров.Номенклатура,
    ОстаткиТоваров.ВНаличииОстаток * &КоэффициентУпаковки КАК КоличествоВУпаковках
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ОстаткиТоваров

Внимание: Этот метод имеет серьезный изъян. Он просто пересчитывает общий остаток в выбранную упаковку. Если у вас на складе 160 штук, а вы выберете упаковку «20 шт», отчет покажет 8 коробок. Но он не скажет вам, лежат ли там на самом деле коробки по 20 штук или это 10 коробок по 16 штук. Поэтому данный метод подходит только для справочного вывода, но не для инвентаризации физических упаковок.

Выводы и рекомендации

Выясним, какой путь выбрать в зависимости от ваших целей:

Помните, что без использования измерений (Серия, Характеристика или Упаковка в ячейке) любая попытка узнать реальный состав упаковок на складе через отчеты будет лишь математическим предположением, а не точным учетом.

← На главную