При оформлении ручных проводок через документ Операция (в метаданных — ОперацияБух) в конфигурации «1С:Бухгалтерия предприятия 3.0» периодически возникает необходимость указать дробное количество номенклатуры с точностью выше стандартной — например, 4 или более знаков после запятой. Однако при попытке настроить формат поля на форме пользователи и начинающие разработчики сталкиваются с тем, что значение автоматически округляется до 3 знаков.
Разберем архитектуру хранения данных в документе Операция, выясним причину такого поведения платформы, проанализируем риски редактирования метаданных и рассмотрим безопасные альтернативные варианты решения задачи.
Проанализируем структуру документа Операция в конфигурации. Табличная часть на форме документа не является обычной табличной частью самого документа. На форме отображается набор записей регистра бухгалтерии Хозрасчетный.
В типовой конфигурации «1С:Бухгалтерия предприятия 3.0» для ресурса Количество регистра Хозрасчетный задан фиксированный тип данных Число(15, 3), то есть 3 знака после запятой. По этой причине:
Рассмотрим, с какими последствиями связано прямое изменение разрядности ресурса Количество в регистре Хозрасчетный:
Хозрасчетный — один из самых высоконагруженных и объемных объектов в информационной базе. Смена типа данных ресурса запускает полную реструктуризацию таблиц движений и итогов на уровне СУБД, что требует монопольного доступа и может занять значительное время при больших объемах данных.Окр(..., 3). Без тотальной модификации всех связанных механизмов в учете неизбежно появятся «зависшие» копеечные и микроскопические количественные остатки.Если операция носит разовый или локальный характер, вносить изменения в структуру регистра бухгалтерии не рекомендуется. Разберем корректные учетные методики обхода ограничения:
0,0005 т учет ведется в килограммах (0,5 кг) или граммах (500 г). Это полностью устраняет проблему точности в рамках стандартных трех знаков.Операция вносят с заполнением только суммовых ресурсов (без указания количества) либо распределяют операцию на несколько строк с допустимой кратностью.