Рассмотрим классическую задачу управленческого учета, с которой часто сталкиваются торговые и производственные предприятия. Клиент производит мелкоштучную продукцию (например, разноцветные карандаши различных форм, веса и материалов). Учет на производстве ведется поштучно. Однако продаются эти товары не по отдельности, а в разнообразных наборах и комплектах (например, в коробке может быть 5 синих пластиковых карандашей, 6 черных деревянных, ластик и точилка).
Главная цель — сделать так, чтобы при продаже одной строки набора в документе Реализация товаров и услуг система автоматически списывала со склада нужное количество входящих в него карандашей и других комплектующих. При этом себестоимость проданных позиций должна рассчитываться абсолютно корректно.
В этой статье мы подробно разберем, как решить эту задачу в программе 1С:Комплексная автоматизация 2.4 (и более новых версиях 2.5) с помощью стандартных механизмов, а также выясним, в чем заключалась ошибка автора темы на форуме.
Автор ветки утверждает: «Стандартный вариант набора, который уже есть в программе, не предполагает различие номенклатуры, составляющей набор». Это распространенное заблуждение. На самом деле стандартный механизм «Наборы номенклатуры» в 1С:ERP, 1С:КА и 1С:УТ создан именно для того, чтобы объединять в один виртуальный пакет абсолютно разные номенклатурные позиции.
Программа предоставляет два штатных пути решения этой задачи в зависимости от организации бизнес-процессов на складе. Проанализируем оба варианта подробно.
---
Этот вариант идеально подходит, если наборы физически не собираются на складе заранее. На складе хранятся только отдельные карандаши. Когда покупатель делает заказ, менеджер выписывает набор, а кладовщик собирает его непосредственно в момент отгрузки. При этом на складе сам набор как отдельная сущность не числится.
Настроим этот вариант по шагам:
НСИ и администрирование — Настройка НСИ и разделов — Номенклатура. В раскрывающемся списке Разрезы учета установим флажок Наборы номенклатуры.Тип номенклатуры обязательно выберем значение Набор.Номенклатура создадим новую позицию (например, «Набор карандашей Юный Художник»). Присвоим ей созданный ранее вид номенклатуры с типом Набор.Настроить состав набора. Здесь мы можем добавить любые различные комплектующие:
Только набор позволит выводить одну строку («Набор карандашей»), скрывая состав. Вариант Набор и комплектующие покажет и то, и другое.Как это работает при продаже: Менеджер добавляет в документ Реализация товаров и услуг одну строку — «Набор карандашей Юный Художник». При проведении документа программа автоматически списывает со склада физические комплектующие (синие и черные карандаши, ластик). Себестоимость рассчитывается по каждой списанной позиции, а выручка распределяется согласно настройкам долей стоимости.
---
Рассмотрим вторую ситуацию. Если наборы собираются (упаковываются в коробки) на складе заранее и хранятся там как готовая продукция, динамические наборы не подойдут. В данном случае нам нужно видеть на складе остаток именно «коробок».
Для этого используется механизм комплектации и документ Сборка (разборка) товаров:
Товар (например, «Коробка карандашей подарочная»).Варианты комплектации и создаем новую комплектацию. Указываем в табличной части все входящие в комплект карандаши и их количество.Сборка (разборка) товаров с видом операции Сборка товаров. При выборе нашего комплекта программа автоматически заполнит комплектующие по спецификации. При проведении документа со склада спишутся отдельные карандаши, а оприходуется готовая коробка. Себестоимость коробки будет равна сумме себестоимостей всех списанных комплектующих.Реализация товаров и услуг менеджер указывает товар «Коробка карандашей подарочная». Списывается готовая коробка, себестоимость которой уже сформирована на шаге сборки.---
Если клиенту критически важно вести складской учет готовых коробок (Вариант 2), но при этом он не хочет тратить время на предварительное создание документов сборки вручную, этот процесс можно автоматизировать.
Специалисты по автоматизации рекомендуют использовать механизм расширений. Мы можем написать обработчик события проведения документа Реализация товаров и услуг. Программа будет анализировать наличие готовых наборов на складе, и при их нехватке автоматически создавать и проводить документ Сборка (разборка) товаров на недостающее количество комплектов.
Рассмотрим пример программного создания документа сборки при проведении реализации:
// Пример создания документа Сборка товаров на лету
НовыйДокумент = Документы.СборкаРазборкаТоваров.СоздатьДокумент();
НовыйДокумент.Дата = ТекущаяДата();
НовыйДокумент.ВариантИспользования = Перечисления.ВариантыИспользованияСборкиРазборки.СборкаИзКомплектующих;
НовыйДокумент.Организация = СсылкаНаОрганизацию;
НовыйДокумент.Склад = СсылкаНаСклад;
НовыйДокумент.Номенклатура = СсылкаНаКомплект;
НовыйДокумент.Количество = НедостающееКоличество;
// Заполнение комплектующих по умолчанию из спецификации
НовыйДокумент.ЗаполнитьКомплектующие();
Попытка
НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ЗаписьЖурналаРегистрации("Ошибка автоматической сборки", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
КонецПопытки;
Такой подход позволяет совместить преимущества обоих вариантов: менеджеры работают с одной строкой в реализации, склад ведет точный поштучный учет комплектующих, а рутинные операции по сборке берет на себя система.