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

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

Часто в процессе автоматизации бизнеса возникают задачи, требующие повышенной точности расчетов. Например, при торговле электроэнергией тариф может содержать пять и более знаков после запятой, тогда как типовая конфигурация 1С по умолчанию ограничивается двумя знаками. Попытка изменить разрядность через расширение при низком режиме совместимости (8.3.17 и ниже) приводит к ошибке: «Изменение типов недопустимо в режиме совместимости». Давайте разберем, почему возникает эта проблема и как ее грамотно решить.

Почему возникает ошибка изменения типа в расширении

Ошибка обусловлена тем, что платформа 1С воспринимает изменение длины или точности числового поля как изменение структуры данных в таблице базы данных. В режимах совместимости 8.3.17 и ниже расширениям запрещено вносить такие фундаментальные изменения в объекты основной конфигурации. Это ограничение введено для обеспечения целостности данных и предотвращения конфликтов при обновлении типовых решений.

Даже если бы удалось обойти данное ограничение, изменение типового реквизита Цена или Количество повлекло бы за собой:

  1. Нарушение алгоритмов расчета НДС, скидок и распределения сумм, которые жестко «зашиты» под стандартную точность.
  2. Проблемы с ЭДО: форматы обмена с государственными органами строго регламентированы и не поддерживают нестандартную точность цен.
  3. Сложности при будущих обновлениях конфигурации: расширения, модифицирующие структуру метаданных, часто требуют переработки после каждого обновления типовой базы.

Альтернативный способ №1: Использование коэффициентов и мегаединиц

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

  1. Пересчитайте тариф в мегаватт-часы (МВт*ч).
  2. Ведите учет в МВт*ч в самой ТабличнойЧасти документа.
  3. При заполнении табличной части используйте соответствующие коэффициенты пересчета.
  4. Для пользователей, которым привычнее видеть киловатты, реализуйте отображение через дополнительные формы или вспомогательные поля, доступные только для чтения.

Альтернативный способ №2: Доработка печатных форм

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

  1. Создайте ВнешнююПечатнуюФорму для нужного документа (например, РеализацияТоваровУслуг).
  2. В модуле менеджера печатной формы при формировании табличного документа используйте функцию Формат() для вывода цены с нужным количеством знаков.
  3. Если для печати требуется математический расчет, выполните его непосредственно в запросе или коде модуля ПечатнойФормы:

// Пример вычисления цены в печатной форме с повышенной точностью
ТарифМегаватт = Выборка.Цена;
ЦенаКиловатт = ТарифМегаватт / 1000;
ОбластьСтрока.Параметры.Цена = Формат(ЦенаКиловатт, "ЧЦ=15; ЧДЦ=5");

Альтернативный способ №3: Использование регистра сведений

Если данные тарифов поступают извне и требуют высокой точности для аналитики, создайте отдельный РегистрСведений. В нем вы можете задать нужную точность для ресурса Тариф (например, Число(15, 6)).

  1. При добавлении номенклатуры в документ через подписку на событие или расширение формы, подтягивайте точное значение тарифа из вашего РегистраСведений.
  2. Отображайте это значение в информационной надписи или в Выводимом поле формы, не пытаясь перезаписать типовой реквизит Цена в табличной части.
  3. Такой подход позволяет сохранить типовую логику конфигурации нетронутой, обеспечивая при этом высокую точность бизнес-данных.

Резюме

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

← На главную