При работе в 1С:Комплексная автоматизация 2.5 (и аналогичных системах на базе ERP-ядра) пользователи часто сталкиваются с архитектурным ограничением платформы: стандартная точность числовых показателей для количества и коэффициентов пересчета составляет три знака после запятой. Это создает серьезные трудности при торговле товарами, физические свойства которых требуют более высокой точности пересчета. Например, при продаже утеплителя (Пеноплэкс), где базовая единица — кубические метры (м3), а продажа идет упаковками с объемом 0,2776 м3, стандартный функционал округлит коэффициент до 0,278, что приведет к значительным расхождениям на складе при больших объемах отгрузок.
В этой статье мы подробно разберем, почему возникает эта проблема, и рассмотрим два основных способа ее решения: методологический (изменение базовой единицы) и технический (использование расширений).
Прежде чем переходить к решениям, проанализируем, как 1С обрабатывает единицы измерения. В карточке номенклатуры есть понятие «Единица хранения». Именно в этой единице система ведет все записи в регистрах накопления (например, в регистре ТоварыНаСкладах). Если вы выбрали м3, то любое движение — поступление, списание или перемещение — будет округлено до 0,001 м3.
Когда мы используем «Упаковки», система при проведении документа выполняет несложную математическую операцию: КоличествоУпаковок * КоэффициентУпаковки = КоличествоВБазовыхЕдиницах. Если коэффициент упаковки 0,2776, а система позволяет записать только 0,278, то при продаже одной упаковки со склада спишется на 0,0004 м3 больше, чем фактически ушло. При продаже 1000 упаковок погрешность составит уже 0,4 м3, что недопустимо для складского учета.
Рассмотрим самый безопасный и стабильный метод, который не требует программирования и изменения кода конфигурации. Его суть заключается в переходе на более мелкую единицу измерения, которая позволит «вместить» нужную нам точность в стандартные три знака после запятой.
Вместо использования кубических метров (м3) в качестве базовой единицы, мы перейдем на кубические дециметры (дм3), которые по объему равны литрам.
Важно: Этот метод лучше всего применять до начала ведения учета по конкретной позиции. Если по товару уже есть движения в м3, потребуется полная инвентаризация для пересчета остатков в новую единицу.
Если изменить базовую единицу невозможно (например, учет уже ведется давно и позиций слишком много), можно пойти по пути доработки системы через механизм расширений. Это позволит сохранить поддержку конфигурации и не менять ее код напрямую.
Разберем по шагам, что именно нужно изменить в системе:
УпаковкиЕдиницыИзмерения. Для реквизита Коэффициент нужно изменить тип данных с Число(10, 3) на Число(15, 4) или даже Число(15, 5).Количество во всех регистрах, где фиксируются движения товаров (ТоварыНаСкладах, ТоварыОрганизаций, ВыручкаИСебестоимостьПродаж и др.).Пример программного изменения точности (в контексте расширения):
// В расширении для справочника УпаковкиЕдиницыИзмерения
// Изменяем метаданные реквизита Коэффициент
// Устанавливаем точность 4 знака
Риски данного подхода: При обновлении конфигурации 1С на новые релизы нужно внимательно следить за тем, чтобы типовые механизмы не «затерли» ваши изменения. Кроме того, увеличение точности может привести к тому, что в отчетах появятся микро-остатки типа 0,0001, которые придется периодически списывать документами корректировки.
Выясним разницу между этими двумя механизмами в 1С:КА 2.5, так как их часто путают при решении проблем с точностью:
Рассмотрим ситуацию: вы настроили коэффициент 0,2776. Если вы закупили 1 м3 товара и начали продавать его по 1 упаковке, то после продажи 3-х упаковок (3 * 0,2776 = 0,8328) у вас на складе останется 0,1672 м3. Если вы попробуете продать остаток, который не кратен упаковке, могут возникнуть сложности с округлением в последней партии.
В 1С:КА 2.5 процедура «Закрытие месяца» частично решает вопросы стоимостных остатков, но количественные остатки система сама не списывает. Мы рекомендуем раз в месяц проводить инвентаризацию таких позиций и использовать документ Списание недостач товаров для очистки склада от «хвостов», возникших из-за математических округлений.
Для решения задачи с Пеноплэксом (коэффициент 0,2776):
Товары на складах после изменения настроек, чтобы убедиться, что списание происходит с нужной вам точностью.Помните, что точность учета — это залог корректного расчета себестоимости и финансового результата всего предприятия.