При закупке мелкой номенклатуры (крепеж, электронные компоненты, сырье) или при расчетах в валюте поставщики нередко выставляют прайс-листы с ценами, имеющими 3 или 4 знака после запятой (например, 0,0125 EUR за штуку). При попытке загрузить такой прайс-лист в 1С:ERP Управление предприятием пользователи сталкиваются с тем, что система автоматически округляет значения до сотых долей, приводя к существенным погрешностям при расчете сумм партий.
Разберем причины такого поведения платформы и детально рассмотрим типовые и надежные способы решения задачи без снятия конфигурации с поддержки.
Проанализируем структуру метаданных программы. В типовой 1С:ERP для всех реквизитов, отвечающих за хранение и регистрацию цен (в справочниках, регистре сведений ЦеныНоменклатурыПоставщиков, документах Регистрация цен номенклатуры поставщика, Заказ поставщику и Приобретение товаров и услуг), жестко задан квалификатор числа Число(15, 2).
Даже если настроить пользовательский формат отображения поля на форме, платформа физически запишет в базу данных только 2 знака после запятой, отбросив или математически округлив остальные разряды. При этом механизм расширений конфигурации в типовом режиме не позволяет напрямую изменять разрядность базовых реквизитов табличных частей и регистров сведений без изменения основной конфигурации.
Рассмотрим основной и самый правильный с точки зрения методологии 1С способ обхода данного ограничения — перевод цен на укрупненную единицу измерения с помощью упаковок.
Если базовая цена составляет 0,0125 EUR за 1 штуку, мы можем зарегистрировать цену за партию в 100, 1 000 или 10 000 штук. В таком случае цена за 1 000 штук составит 12,50 EUR, что идеально укладывается в стандартную разрядность (15, 2) и не создает погрешностей при расчете.
Разберем настройку по шагам:
1000 относительно базовой единицы шт).Заказ поставщику и Приобретение товаров и услуг с указанием единицы измерения в упаковках. При этом складской учет, списание в производство и реализация продолжают вестись в базовых единицах (штуках).Если специфика поставок не позволяет использовать упаковки, рассмотрим вариант предварительной обработки файла перед импортом:
Регистрация цен номенклатуры поставщика, а при формировании документов закупки используем условия соглашений с поставщиком.Если отделу закупок необходимо видеть точную четырехзначную цену исключительно для аналитических целей и сравнения предложений, воспользуемся механизмом дополнительных реквизитов:
Номенклатура поставщика или Номенклатура добавляем дополнительный реквизит числового типа с длиной 15 и точностью 4 (например, Индикативная цена поставщика).Выясним причину, почему снятие конфигурации с поддержки для расширения точности цен до Число(15, 4) считается крайне нежелательным: