Как вести учет количества с точностью до 4 знаков после запятой в 1С без изменения типовой конфигурации?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Промышленность, строительство и АПК
← На главную

При работе со строительными материалами (утеплители, листовые материалы), технологическими жидкостями, металлопрокатом или химическим сырьем пользователи 1С регулярно сталкиваются с ситуацией, когда поставщики выставляют документы с количеством, имеющим 4 знака после запятой (например, 0.0036 м³ или 1.2345 т). В типовых конфигурациях 1С («1С:Управление торговлей», «1С:ERP», «1С:Комплексная автоматизация») точность поля Количество стандартно ограничена тремя знаками после запятой — Число(15, 3).

Рассмотрим подробнее, почему возникают сложности при попытке изменить разрядность в базе и какими практическими способами можно решить эту задачу без снятия типового решения с поддержки.

Почему не стоит менять разрядность реквизитов в Конфигураторе?

На первый взгляд, самое простое решение — зайти в конфигуратор и изменить разрядность ресурса Количество с Число(15, 3) на Число(15, 4) во всех документах и регистрах. Однако на практике такой подход влечет за собой серьезные риски:

  1. Снятие с поддержки и сложности с обновлениями: При снятии конфигурации с поддержки каждое регулярное обновление типового решения (например, при выходе новых релизов «УТ 11») будет требовать ручной проверки сотен объектов и таблиц.
  2. Жесткое приведение типов в коде (Hardcode в запросах): В механизмах расчета себестоимости, партионного учета, НДС и закрытия месяца разработчики 1С массово используют явное приведение разрядности вида ВЫРАЗИТЬ(Таблица.Количество КАК ЧИСЛО(15, 3)). Даже после смены типа данных в конфигураторе стандартные запросы продолжат обрезать 4-й знак.
  3. Проблемы с ЭДО и требованиями ФНС: Форматы электронных документов (УПД, счета-фактуры) строго регламентированы. Выгрузка измененной разрядности может приводить к отклонению документов операторами ЭДО.
  4. Длительная реструктуризация СУБД: Изменение типа ресурса в регистрах накопления и сведений заставляет платформу пересчитывать огромные таблицы баз данных, что на рабочих базах занимает много времени.

Разберем безопасные альтернативные варианты учета, которые позволяют сохранить конфигурацию типовой.

Вариант 1. Переход на более мелкие единицы измерения

Самый простой архитектурный способ — изменить базовую единицу хранения остатков на более мелкую, оставив крупную единицу для отображения в печатных формах и отчетах.

Проанализируем этот вариант на примере учетных единиц объема:

  1. В качестве базовой единицы хранения остатков выбираем дм³ (или см³) либо л вместо м³. Так как 1 м³ = 1000 дм³, значение 0.0036 м³ в системе превращается в целое число 3.6 дм³ или 3600 см³.
  2. Для документов заводится упаковка или единица для отчетов (м³) с коэффициентом пересчета 1000.
  3. При вводе документов пересчет происходит автоматически, а в печатных формах настраивается формат вывода чисел.

Вариант 2. Использование индивидуальных упаковок и коэффициентов

Если товары приходят в специфических размерах (например, утеплительные плиты 1185х585х100 мм), кубатура одной штуки часто имеет 5–6 знаков после запятой.

Разберем по шагам, как настроить учет через механизмы упаковок:

  1. Включаем в программе использование упаковок номенклатуры.
  2. Создаем для номенклатуры упаковку (например, Пачка (0.0036 м³)) с соответствующим коэффициентом пересчета относительно базовой единицы.
  3. В документах поступления и реализации учет ведется в упаковках (целыми или дробными значениями упаковок с точностью до 3 знаков), а итоговый пересчет в объем выполняется с необходимой точностью.

Вариант 3. Использование дополнительных реквизитов и пересчета при печати

Если высокоточный учет требуется только для отдельных групп товаров и строго для формирования печатных форм или обмена с контрагентом, можно применить схему с дополнительными реквизитами:

  1. К справочнику Номенклатура или табличным частям документов через пользовательский режим добавляем дополнительный реквизит (например, ТочноеКоличество с типом Число(15, 4)).
  2. Основное поле Количество заполняется стандартным значением с округлением до 3 знаков для типовых движений по регистрам и расчета себестоимости.
  3. Для внешних печатных форм и файлов выгрузки контрагентам подправляем алгоритмы, чтобы они подтягивали точное значение из дополнительного реквизита.

Вариант 4. Применение расширения конфигурации (.cfe)

Если необходимо добавить поля точного количества в документы, не снимая конфигурацию с поддержки, используем механизмы платформы 1С:Предприятие 8.3 — **Расширения**.

Рассмотрим пример создания программного пересчета в расширении. Добавим в табличную часть документа реквизит ТочноеКоличество и пересчитаем его при изменении:


&НаКлиенте
Процедура Расширение_ТочноеКоличествоПриИзменении(Элемент)
    
    СтрокаТаблицы = Элементы.Товары.ТекущиеДанные;
    Если СтрокаТаблицы = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    // Сохраняем точное значение в доп. поле
    // В стандартное количество записываем округленное значение для типовых движений
    СтрокаТаблицы.Количество = Окр(СтрокаТаблицы.ТочноеКоличество, 3);
    
    // Пересчитываем сумму документа исходя из точной цены или точного количества
    РасчитатьСуммуСтроки(СтрокаТаблицы);
    
КонецПроцедуры

Преимущества расширения: Основная конфигурация остается на полной поддержке и обновляется без затруднений. Все дополнительные данные и специфические алгоритмы изолированы в отдельном модуле расширения.

Вариант 5. Корректировка итоговой суммы и цены

В случаях, когда 4-й знак после запятой нужен исключительно для того, чтобы зафиксировать точную итоговую сумму документа при взаиморасчетах с поставщиком:

  1. Указываем в документе округленное количество до 3 знаков в поле Количество.
  2. Фиксируем итоговую Сумму и Сумму НДС вручную в соответствии с первичными документами поставщика.
  3. Так как в 1С приоритетным значением при проведении расчетов является итоговая сумма документа, взаиморасчеты с контрагентом и книги покупок/продаж сходятся копейка в копейку.

Резюме и рекомендации

Проанализировав все способы, мы видим, что снимать конфигурацию с поддержки ради изменения разрядности не требуется. Выбор метода зависит от ваших задач:

← На главную