При ведении учета химической продукции на производстве, особенно когда сырье хранится в бочках с переменным весом и требует индивидуальной идентификации, мы сталкиваемся с рядом специфических задач. Если к тому же в системе используется специализированный модуль, такой как 1С:LIMS, привязанный к сериям поставщика, ситуация становится еще более сложной. В этой статье мы подробно разберем, как можно решить эту комплексную проблему в 1С:ERP, учитывая все требования к отслеживанию каждой бочки, ее веса, печати QR-кодов и интеграции с лабораторным контролем.
Давайте вместе проанализируем ситуацию, выясним причины возникновения трудностей и найдем оптимальные подходы к решению, используя гибкие механизмы 1С:ERP.
Основная сложность заключается в необходимости совместить два противоречивых требования к учету:
Первая мысль, которая возникает для решения индивидуального учета, — это присвоить каждой бочке свою отдельную серию в системе 1С. Однако у этого подхода есть существенные подводные камни:
Таким образом, наша задача — найти решение, которое позволит одновременно и индивидуально отслеживать каждую бочку, и сохранять целостность учета по сериям поставщика для LIMS.
Ключ к решению проблемы заключается в абстрагировании от синонимов и четком разграничении понятия "серия поставщика" от "серии учета" или "индивидуального идентификатора" в нашей системе. Мы будем использовать двухуровневый подход.
Давайте рассмотрим концепцию, где серия поставщика выступает как групповой признак для целей LIMS и общего понимания партии, а внутренний идентификатор или "серия учета" — как серийный номер конкретного изделия (бочки). Мы можем провести аналогию с телевизором: есть партия выпуска (номенклатурная группа или серия поставщика) и есть серийный номер конкретного изделия (индивидуальная бочка).
Как это можно реализовать в 1С:ERP:
Этот подход предполагает объединение информации о серии поставщика и индивидуальном идентификаторе бочки в одном поле "Серия" объекта 1С. Мы можем создать уникальную строку серии, которая будет включать в себя оба идентификатора.
XYZ123, то индивидуальные серии бочек будут XYZ123/001, XYZ123/002, XYZ123/003 и так далее.Предположим, у нас есть поле Номенклатура.Серия. Мы можем настроить его заполнение таким образом:
// При поступлении товара
// Предположим, у нас есть СерияПоставщика = "BATCH202301"
// ИдентификаторБочки = 1, 2, 3...
Для Каждой Бочки Из Поставки Цикл
УникальныйИдентификаторБочки = СформироватьУникальныйНомерБочки(); // Генерация, например, 001, 002
СерияУчета = СерияПоставщика + "/" + УникальныйИдентификаторБочки;
// Записываем СерияУчета в поле Серия для данной бочки
// Например, в табличную часть документа поступления
// НоваяСтрокаТЧ.Серия = СерияУчета;
// НоваяСтрокаТЧ.Количество = 1;
// НоваяСтрокаТЧ.Вес = ФактическийВесБочки;
КонецЦикла;
При печати QR-кода на бочку мы будем использовать значение СерияУчета. При считывании QR-кода мы получим это значение и сможем извлечь как серию поставщика, так и индивидуальный номер бочки для получения всей информации.
Этот подход может быть рассмотрен для учета переменного веса, но он менее удобен для индивидуальной идентификации каждой бочки с помощью QR-кодов, так как характеристики привязаны к номенклатуре в целом, а не к каждой физической единице.
Для более гибкого решения, особенно если стандартные механизмы учета серий не полностью покрывают потребности, мы можем рассмотреть создание собственного механизма.
ИдентификаторБочки).Исходя из требований, оптимальным представляется Вариант 1 (вложенный идентификатор в поле "Серия"), так как он использует стандартный механизм серийного учета, минимизируя глобальные доработки, но требует адаптации для LIMS и процессов ввода данных.
Для учета фактического веса каждой бочки, которая может быть неполной, 1С:ERP предлагает гибкие механизмы:
В системе 1С:ERP поддерживается учет товаров с переменными размерами, такими как рулоны или отрезки. Эта функциональность может быть адаптирована и для бочек. В случае, если каждая бочка получает свою уникальную "серию" (как в Варианте 1: СерияПоставщика/ИдентификаторБочки), то в этой серии может храниться не только ее уникальный номер, но и фактический оставшийся вес или количество материала. Система позволяет настроить различные единицы измерения и упаковки, включая вложенные структуры, а также автоматический пересчет между ними.
Если мы выбираем подход с индивидуальной "серией" для каждой бочки (например, XYZ123/001), то именно в рамках этой серийной записи мы можем хранить фактический вес данной конкретной бочки. В 1С:ERP при партионном или серийном учете можно указывать количество в базовых единицах (например, штуки) и дополнительную информацию (вес, объем) в других единицах измерения, которые могут быть привязаны к серии.
СерияПоставщика/ИдентификаторБочки).Таким образом, в системе будет четко зафиксировано: "Серия XYZ123/001: 1 бочка, вес 180 кг"; "Серия XYZ123/002: 1 бочка, вес 150 кг" и т.д.
Одной из ключевых сложностей является необходимость интеграции нового подхода с модулем 1С:LIMS, который уже настроен на работу с "сериями поставщика".
Мы должны сохранить текущий механизм привязки LIMS к серии поставщика. Это позволит модулю 1С:LIMS продолжать работать с результатами анализов, статусом годности и паспортами партии для группы бочек, как он это делал ранее. Если LIMS настроен на работу с серией поставщика (например, XYZ123), то эта связь может быть сохранена, а индивидуальный учет бочек (XYZ123/001) будет дополнением к ней.
Подход: Продолжаем хранить паспорта и статусы годности, привязанные к "серии поставщика". Это означает, что для LIMS серия XYZ123 является единицей контроля качества.
Сотруднику лаборатории будет сложно устанавливать статус и прикреплять паспорт на все 40 бочек одной партии, если каждая из них имеет свой уникальный внутренний идентификатор. Здесь нам потребуется доработка для оптимизации их работы.
Решение: Разработайте специальную обработку (инструмент), которая будет использоваться сотрудником лаборатории. Эта обработка позволит ему работать с "серией поставщика" (например, XYZ123) как с единым объектом, но при этом автоматически применять все действия (установка статуса "годен/негоден", прикрепление паспорта) ко всем индивидуальным "бочковым" сериям (XYZ123/001, XYZ123/002 и т.д.), которые относятся к этой серии поставщика.
XYZ123/001).Мы можем использовать запросы для получения списка индивидуальных серий, связанных с одной серией поставщика. Затем для каждой найденной серии можно программно изменить реквизиты или создать нужные документы.
// Примерный псевдокод для обработки
Функция ПолучитьИндивидуальныеСерииПоСерииПоставщика(СерияПоставщика)
// Запрос к регистру накопления или справочнику серий
// для получения всех серий, начинающихся с СерияПоставщика + "/"
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СерииНоменклатуры.Ссылка КАК Серия
|ИЗ
| Справочник.СерииНоменклатуры КАК СерииНоменклатуры
|ГДЕ
| НачалоСтроки(СерииНоменклатуры.Наименование, &СерияПоставщикаНачало)";
Запрос.УстановитьПараметр("СерияПоставщикаНачало", СерияПоставщика + "/");
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат;
КонецФункции;
// В обработке по нажатию кнопки "Установить статус"
СерияПоставщикаДляРаботы = "XYZ123"; // Получаем от пользователя
СписокИндивидуальныхСерий = ПолучитьИндивидуальныеСерииПоСерииПоставщика(СерияПоставщикаДляРаботы);
Для Каждой СтрокиСерии Из СписокИндивидуальныхСерий Цикл
ТекущаяСерия = СтрокаСерии.Серия;
// Здесь вызываем методы LIMS или изменяем реквизиты СерииНоменклатуры
// Например, УстановитьСтатусГодности(ТекущаяСерия, "Годен");
// ПрикрепитьПаспорт(ТекущаяСерия, ПутьКПаспорту);
КонецЦикла;
Также можно настроить печатные формы паспортов, чтобы они агрегировали информацию по серии поставщика, но при необходимости могли выводить детализацию по каждой отдельной бочке.
Ручной ввод 100 индивидуальных серий для каждой поставки будет крайне трудозатратным и подвержен ошибкам. Процесс создания индивидуальных серий для каждой бочки необходимо автоматизировать.
001, 002, ...).СерияПоставщика/001, СерияПоставщика/002 и т.д.).Мы будем работать с табличной частью документа поступления товаров, программно создавая новые строки и заполняя поля Номенклатура, Количество (1 бочка), ЕдиницаИзмерения (бочка/шт), Серия (СерияПоставщика/ИдентификаторБочки) и Вес.
// Примерный псевдокод для обработки поступления
// В обработке по нажатию кнопки "Заполнить серии бочек"
ДокументПоступления = Объект.Ссылка; // Текущий документ поступления
НоменклатураПоставки = ...; // Выбираем номенклатуру
СерияПоставщика = ...; // Вводим серию поставщика
КоличествоБочек = ...; // Вводим общее количество бочек
Для Инд = 1 По КоличествоБочек Цикл
НоваяСтрока = ДокументПоступления.Товары.Добавить();
НоваяСтрока.Номенклатура = НоменклатураПоставки;
НоваяСтрока.Количество = 1; // Одна бочка
// НоваяСтрока.ЕдиницаИзмерения = ПолучитьЕдиницуИзмеренияБочка();
УникальныйНомерБочки = Формат(Инд, "ЧЦ=3; ЧВН=; ЧГ=0"); // Например, 001, 002
НоваяСтрока.Серия = СерияПоставщика + "/" + УникальныйНомерБочки;
// Предполагаемый или средний вес, который затем можно скорректировать
// НоваяСтрока.Вес = СреднийВесБочки;
КонецЦикла;
// ДокументПоступления.Записать();
При использовании индивидуального серийного учета для каждой бочки, табличные части документов действительно будут содержать много строк. Однако мы можем оптимизировать их отображение и аналитику.
Решение: Настройте печатные формы документов (например, накладных, актов поступления) и отчеты таким образом, чтобы они могли агрегировать данные по основной серии (серии поставщика), сохраняя при этом возможность детализации по каждой отдельной бочке в системе.
Мы рассмотрели несколько подходов к решению задачи учета химической продукции в бочках. Очевидно, что идеальное "коробочное" решение, полностью удовлетворяющее всем требованиям без каких-либо доработок, встречается крайне редко.
Критически важно определить, какая "серия" для вашей организации является первичной для оперативного учета и отслеживания физических остатков (индивидуальная бочка), а какая — для целей контроля качества и документации (серия поставщика для LIMS).
Как показывает практика, в аналогичных случаях (например, учет пленки в рулонах) часто приходится идти по пути доработок конфигурации. Это может включать:
Помните, что инвестиции в эти доработки окупаются за счет повышения точности учета, сокращения ошибок, улучшения качества данных и оптимизации рабочих процессов. Принимая решение, мы должны тщательно взвесить все "за" и "против" каждого подхода, исходя из специфики бизнес-процессов, ресурсов на разработку и требований к детализации учета.