При работе в производственном блоке 1С:ERP, особенно в пищевой, химической промышленности или фармацевтике, часто возникает ситуация, когда типовой точности дробных чисел не хватает. В ресурсных спецификациях на вкладке «Материалы и услуги» для поля КоличествоУпаковок разработчиками заложена точность в 3 знака после запятой. Но что делать, если технологический процесс требует указывать расход материалов до 4 или 5 знаков (например, 0.0005 кг)? Проанализируем ситуацию и выясним причину, почему прямое изменение реквизитов — не лучший выход, а также подробно разберем правильные методологические подходы.
Рассмотрим подробнее техническую сторону вопроса. Многие разработчики первым делом пытаются увеличить точность через расширение конфигурации. В современных версиях платформы (начиная с 8.3.18) действительно добавлена штатная возможность изменять длину и точность числовых реквизитов, а также переопределять типы данных прямо в расширении. Однако, если вы попытаетесь это сделать, вы можете столкнуться с ошибкой несовпадения контролируемого свойства.
Даже если технически вам удастся протолкнуть 4 знака после запятой для поля ввода в документе, давайте посмотрим на последствия такого решения:
ОкругленноеКоличество = Окр(ТекущееКоличество, 3);
Из-за этого ваши 4 знака будут постоянно отсекаться при записи движений, что вызовет нестыковки в учете и ошибки в закрытии месяца.
ВыпускПродукции, и в табличных частях выходных изделий типовая точность составляет те же 3 знака. Это значит, что введенное в документе сверхточное значение всё равно обрежется при записи в базу данных. В итоге пользы от ювелирного ввода в документе будет ноль.Разберем по шагам, как можно решить эту задачу элегантно и без программирования, используя только типовые возможности системы. Методология 1С:ERP предлагает решать проблему мелких долей через грамотные настройки нормативно-справочной информации (НСИ).
Переход на мелкие единицы измерения — это самый надежный и единственно верный путь для точного учета. Вместо того чтобы пытаться записать 0.0005 кг, переведите базовую учетную единицу в граммы, миллиграммы или миллилитры.
Посмотрим на пример из пищевой промышленности. На входе мы имеем мясо (200 кг), соль (4.5 кг) и перец (0.0842 кг). Если мы попытаемся списывать перец в килограммах, система округлит значение, и возникнет погрешность. Решение заключается в следующем:
УпаковкиНоменклатуры. Настраиваем упаковку «Мешок 50 кг» или «Коробка», устанавливая соответствующий коэффициент пересчета.Таким образом, математика внутри системы будет идеально точной, без дробных погрешностей и без вмешательства в конфигуратор.
Еще один отличный вариант, если вы не хотите менять единицы измерения — создать спецификацию не на одну единицу продукции, а на партию. При переходе на такой вариант для быстрого создания новых документов на основе существующих можно использовать обработку для копирования ресурсных спецификаций.
Рассмотрим ситуацию: для производства 1 штуки изделия требуется 0.0001 кг клея. Если вы введете это значение, то в первом же документе производства потребляемое количество округлится до нуля, что приведет к ошибке проведения документа (система сообщит, что количество не должно быть пустым).
Что мы делаем в этом случае:
РесурснаяСпецификация указываем, что норматив задается не на 1 шт, а на 1000 или 10 000 штук.В системе 1С:ERP можно настроить детальную вложенность упаковок: базовая упаковка, потребительская упаковка, транспортная тара. При правильном задании коэффициентов пересчета между ними (например, 1 ящик = 20 упаковок, 1 упаковка = 500 грамм) программа автоматически будет закрывать все потребности в долях без расширения точности чисел в конфигураторе.
Подводя итог: попытка вмешаться в базовую точность чисел в сложной ERP-системе подобна открытию ящика Пандоры. Гораздо безопаснее и правильнее выстроить процесс через адаптацию справочников НСИ. Используйте возможности, изначально заложенные в архитектуру системы: кратность выпуска, упаковки и минимальные учетные единицы. Для проверки корректности настроек после изменения параметров учета можно использовать инструмент для проверки действующих ресурсных спецификаций.