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