При работе со строительными материалами (утеплители, листовые материалы), технологическими жидкостями, металлопрокатом или химическим сырьем пользователи 1С регулярно сталкиваются с ситуацией, когда поставщики выставляют документы с количеством, имеющим 4 знака после запятой (например, 0.0036 м³ или 1.2345 т). В типовых конфигурациях 1С («1С:Управление торговлей», «1С:ERP», «1С:Комплексная автоматизация») точность поля Количество стандартно ограничена тремя знаками после запятой — Число(15, 3).
Рассмотрим подробнее, почему возникают сложности при попытке изменить разрядность в базе и какими практическими способами можно решить эту задачу без снятия типового решения с поддержки.
На первый взгляд, самое простое решение — зайти в конфигуратор и изменить разрядность ресурса Количество с Число(15, 3) на Число(15, 4) во всех документах и регистрах. Однако на практике такой подход влечет за собой серьезные риски:
ВЫРАЗИТЬ(Таблица.Количество КАК ЧИСЛО(15, 3)). Даже после смены типа данных в конфигураторе стандартные запросы продолжат обрезать 4-й знак.Разберем безопасные альтернативные варианты учета, которые позволяют сохранить конфигурацию типовой.
Самый простой архитектурный способ — изменить базовую единицу хранения остатков на более мелкую, оставив крупную единицу для отображения в печатных формах и отчетах.
Проанализируем этот вариант на примере учетных единиц объема:
дм³ (или см³) либо л вместо м³. Так как 1 м³ = 1000 дм³, значение 0.0036 м³ в системе превращается в целое число 3.6 дм³ или 3600 см³.м³) с коэффициентом пересчета 1000.Если товары приходят в специфических размерах (например, утеплительные плиты 1185х585х100 мм), кубатура одной штуки часто имеет 5–6 знаков после запятой.
Разберем по шагам, как настроить учет через механизмы упаковок:
Пачка (0.0036 м³)) с соответствующим коэффициентом пересчета относительно базовой единицы.Если высокоточный учет требуется только для отдельных групп товаров и строго для формирования печатных форм или обмена с контрагентом, можно применить схему с дополнительными реквизитами:
Номенклатура или табличным частям документов через пользовательский режим добавляем дополнительный реквизит (например, ТочноеКоличество с типом Число(15, 4)).Количество заполняется стандартным значением с округлением до 3 знаков для типовых движений по регистрам и расчета себестоимости.Если необходимо добавить поля точного количества в документы, не снимая конфигурацию с поддержки, используем механизмы платформы 1С:Предприятие 8.3 — **Расширения**.
Рассмотрим пример создания программного пересчета в расширении. Добавим в табличную часть документа реквизит ТочноеКоличество и пересчитаем его при изменении:
&НаКлиенте
Процедура Расширение_ТочноеКоличествоПриИзменении(Элемент)
СтрокаТаблицы = Элементы.Товары.ТекущиеДанные;
Если СтрокаТаблицы = Неопределено Тогда
Возврат;
КонецЕсли;
// Сохраняем точное значение в доп. поле
// В стандартное количество записываем округленное значение для типовых движений
СтрокаТаблицы.Количество = Окр(СтрокаТаблицы.ТочноеКоличество, 3);
// Пересчитываем сумму документа исходя из точной цены или точного количества
РасчитатьСуммуСтроки(СтрокаТаблицы);
КонецПроцедуры
Преимущества расширения: Основная конфигурация остается на полной поддержке и обновляется без затруднений. Все дополнительные данные и специфические алгоритмы изолированы в отдельном модуле расширения.
В случаях, когда 4-й знак после запятой нужен исключительно для того, чтобы зафиксировать точную итоговую сумму документа при взаиморасчетах с поставщиком:
Количество.Проанализировав все способы, мы видим, что снимать конфигурацию с поддержки ради изменения разрядности не требуется. Выбор метода зависит от ваших задач:
дм³, г, мм).