Как увеличить количество знаков после запятой для цены в документе Счет на оплату в 1С:БГУ 2.0

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

В практике ведения учета в государственных учреждениях часто возникает необходимость использования высокоточных цен. Это особенно актуально для организаций, работающих с тарифами на электроэнергию, газ, водоснабжение, а также в сфере гособоронзаказа или фармации, где цена за единицу продукции может иметь 5, 6 и более знаков после запятой. Типовое решение 1С:Бухгалтерия государственного учреждения 2.0 (БГУ 2.0) по умолчанию ограничивает разрядность цены двумя знаками после запятой, что соответствует стандартным правилам денежных расчетов.

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

Анализ технического ограничения платформы и конфигурации

Для начала проанализируем, почему простая настройка формы не решает проблему. В системе 1С разрядность любого числового поля определяется в Метаданных. Если в свойствах реквизита Цена установлено значение 15.2 (всего 15 знаков, из них 2 после запятой), то даже если вы визуально расширите поле на форме, платформа будет принудительно округлять вводимое значение до двух знаков при попытке записи или выполнения расчетов.

Многие разработчики надеются решить этот вопрос с помощью Механизма расширений. Однако здесь нас ждет серьезное ограничение: платформа 1С:Предприятие 8.3 не позволяет изменять точность и длину стандартных реквизитов, входящих в состав типовой конфигурации, через расширение. Поскольку изменение точности влияет на структуру таблиц в базе данных (SQL), такие правки допустимы только в основной конфигурации после снятия ее с поддержки (или включения возможности изменения).

Способ 1: Изменение метаданных в основной конфигурации

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

  1. Откроем конфигуратор и включим возможность изменения конфигурации (меню Конфигурация — Поддержка — Настройка поддержки).
  2. Найдем необходимый документ, например, СчетНаОплату. В его табличной части Услуги или Номенклатура выберем реквизит Цена.
  3. В окне свойств изменим параметр Точность с 2 на 5 (или необходимое количество знаков).
  4. Важный этап: Чтобы цена не «терялась» при проведении документа, аналогичные изменения необходимо внести во все связанные регистры. Проанализируем движения документа и найдем соответствующие регистры накопления и регистры сведений (например, ЦеныНоменклатуры).
  5. Изменим точность ресурса Цена в найденных регистрах.

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

Способ 2: Использование коэффициентов и единиц измерения (Обходной путь)

Проанализируем методику, которую часто рекомендуют опытные методологи 1С, чтобы избежать «снятия с замка» конфигурации. Если тариф за 1 кВт/ч составляет 0,12345 рубля, мы можем изменить подход к учету самой единицы измерения.

Разберем по шагам:

  1. В справочнике Единицы измерения создадим новую единицу, например, «1000 кВт/ч».
  2. Установим коэффициент относительно базовой единицы равным 1000.
  3. В документе будем указывать цену за 1000 единиц. В нашем примере цена составит 123,45 рубля.

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

Проблема «разъезда» математики и копеек

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

Посмотрим на пример: Количество: 10,235 Цена: 10,12345 Математический итог: 103,61351075

В бухгалтерской проводке сумма будет округлена до 103,61. Если ваш контрагент попробует восстановить цену, разделив сумму на количество в своей системе, он получит 10,123107..., что создаст расхождения при сверке взаиморасчетов. Именно поэтому при использовании высокой разрядности в 1С:БГУ важно четко определить алгоритм округления суммы в программном коде документа.

Влияние на печатные формы и ЭДО

Даже если мы успешно изменили разрядность в базе данных, нам предстоит столкнуться с проблемой вывода данных. Рассмотрим основные сложности:

  1. Макеты печати: В типовых макетах (Счет, УПД, Торг-12) для полей цены часто жестко прописан формат ЧЦ=15; ЧДЦ=2. Это означает, что программа принудительно обрежет ваши 5 знаков до 2 при формировании печатной формы. Вам придется редактировать программный код в модулях менеджеров документов, отвечающих за печать — для этого подойдёт редактор макетов печатных форм без программирования.
  2. Электронный документооборот (ЭДО): Это критический момент. Форматы электронных документов (УПД, счета-фактуры), утвержденные ФНС, имеют строгие XSD-схемы. Если формат предполагает 2 знака в цене, то документ с 5 знаками просто не пройдет валидацию у оператора ЭДО или на стороне приемки контрагента. Перед внесением изменений обязательно проверьте требования ваших контрагентов к формату XML.

Реализация через дополнительные реквизиты

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

  1. В разделе Администрирование — Общие настройки включим «Дополнительные реквизиты и сведения».
  2. Для документа Счет на оплату добавим новый реквизит Тариф (высокая точность) с типом Число (15, 5).
  3. Пользователь сможет вводить точную цену в это поле, а для расчета суммы использовать стандартное поле Цена, округленное до 2 знаков.

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


// Пример упрощенного алгоритма расчета суммы во внешней обработке
Процедура РассчитатьСуммуПоТочнойЦене(СтрокаТабличнойЧасти)
    ТочнаяЦена = СтрокаТабличнойЧасти.ДополнительныеРеквизиты.Найти(СсылкаНаСвойство).Значение;
    Если ТочнаяЦена <> 0 Тогда
        МатематическаяСумма = ТочнаяЦена * СтрокаТабличнойЧасти.Количество;
        // Округляем до копеек согласно правилам бухучета
        СтрокаТабличнойЧасти.Сумма = Окр(МатематическаяСумма, 2, РежимОкругления.Окр15как20);
    КонецЕсли;
КонецПроцедуры

Выводы и рекомендации

Подводя итог, отметим, что изменение разрядности цены в 1С:БГУ 2.0 — это задача, имеющая больше методологических рисков, чем технических. Если учреждению критически важно использовать 5 знаков, мы рекомендуем следующий приоритет действий:

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

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

← На главную