В конфигурации «1С:Управление производственным предприятием 1.3» (УПП) пользователи часто сталкиваются с ограничением при необходимости вести учет одного и того же товара в разных вариантах упаковки. Ситуация осложняется, когда стандартный механизм ХарактеристикиНоменклатуры уже используется для учета цвета, размера или других свойств товара. В таком случае типовой функционал не позволяет «из коробки» разделить остатки по типам коробов (например, короба по 3 шт. и по 5 шт.).
Проанализируем ситуацию: нам необходимо отгружать товар в разных единицах, видеть остатки именно в целых коробах в отчетах и при этом не превращать учет в хаос с дробными значениями (вроде 2,75 короба). Разберем по шагам несколько эффективных способов решения этой задачи — от настройки типовых механизмов до программирования расширений.
В УПП 1.3 существует малозаметный, но полезный механизм учета мест. В табличных частях большинства торговых документов (РеализацияТоваровУслуг, ПоступлениеТоваровУслуг, ЗаказПокупателя) есть поля Единица мест и Количество мест. По умолчанию они могут быть скрыты в форме, но их легко вывести через «Настройку списка».
Рассмотрим, как это работает на практике:
ЕдиницыИзмерения для каждой номенклатуры создаем дополнительные единицы: «Короб (3 шт)» с коэффициентом 3 и «Короб (5 шт)» с коэффициентом 5.Единица мест мы выбираем нужный короб. Программа автоматически пересчитает общее количество в базовых единицах (штуках), умножив количество мест на коэффициент единицы мест.Важный нюанс: Этот способ позволяет печатать накладные в коробах, но в регистре ТоварыНаСкладах остатки все равно будут храниться в одной общей единице. Если нам критично видеть на складе именно разделение «сколько коробов по 3 и сколько по 5», этот метод потребует дополнения в виде специализированных отчетов.
Если характеристики у нас заняты под цвет и размер, а механизм СерииНоменклатуры не используется, мы можем задействовать его для идентификации упаковки. Серия в УПП — это дополнительный разрез учета остатков на складе.
Разберем алгоритм внедрения:
Этот метод позволяет видеть остатки в разрезе коробов в любом стандартном отчете (например, в «Ведомости по товарам на складах»). Мы увидим: Товар А (Красный, р.42) — Серия «Короб 3 шт» — 15 штук (что логически означает 5 полных коробов).
Если требуется глубокая автоматизация и контроль, наиболее надежным способом является модификация структуры данных. Мы можем добавить в регистр накопления ТоварыНаСкладах новое измерение — Упаковка (тип: СправочникСсылка.ЕдиницыИзмерения).
Проанализируем, какие изменения потребуются в коде:
Единицу мест из табличной части.Пример кода для пересчета количества при проведении может выглядеть следующим образом:
// В модуле проведения документа
Для Каждого СтрокаТЧ Из Товары Цикл
Движение = Движения.ТоварыНаСкладах.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Номенклатура = СтрокаТЧ.Номенклатура;
Движение.ХарактеристикаНоменклатуры = СтрокаТЧ.ХарактеристикаНоменклатуры;
// Наше новое измерение
Движение.Упаковка = СтрокаТЧ.ЕдиницаИзмеренияМест;
Движение.Количество = СтрокаТЧ.Количество;
// ... остальные поля
КонецЦикла;
Этот подход исключает появление дробных коробов в аналитике, так как мы фиксируем конкретную упаковку в момент совершения хозяйственной операции.
Выясним, как решить задачу без изменения конфигурации и без использования серий. Мы можем создать в справочнике Склады иерархию виртуальных мест хранения. Например: «Основной склад (Короба по 3)» и «Основной склад (Короба по 5)».
При перемещении товара между такими складами мы фактически выполняем операцию «перепаковки». Плюс этого метода в том, что остатки всегда прозрачны: заглянув в остатки по конкретному складу, кладовщик точно знает, какую тару ему брать для отгрузки. Минус — необходимость делать документы ПеремещениеТоваров при каждой смене типа упаковки.
Если дорабатывать конфигурацию запрещено, а работать с остатками нужно, можно создать внешний отчет, который будет программно «раскладывать» общее количество товара на складе по возможным упаковкам. Рассмотрим алгоритм работы такого отчета:
// Пример алгоритма для отчета
ОбщийОстаток = 17;
КратностьКороба = 5;
КолВоЦелыхКоробов = Цел(ОбщийОстаток / КратностьКороба); // Результат: 3
ОстатокШтук = ОбщийОстаток % КратностьКороба; // Результат: 2
Сообщить("На складе: " + КолВоЦелыхКоробов + " кор. по 5 шт. и " + ОстатокШтук + " шт. отдельно");
Такой отчет поможет при инвентаризации и планировании логистики (загрузки машин), не требуя при этом сложной перестройки всего учета в системе.
Подводя итог, выбор метода зависит от ваших приоритетов:
Помните, что УПП 1.3 — система с жесткой архитектурой, и любое изменение в ключевых регистрах (таких как ТоварыНаСкладах) требует тщательного тестирования на копии базы, особенно в части закрытия месяца и расчета себестоимости.