Часто в оптовой торговле или при работе с импортными товарами возникает необходимость вести учет цен с точностью выше стандартных двух знаков после запятой. В системе 1С:Предприятие 8 (особенно в конфигурации "Управление торговлей 11") настройки точности могут быть заданы корректно, однако при попытке выгрузить прайс-лист в Excel пользователь обнаруживает, что система принудительно округляет значения до копеек. Разберем подробно, почему так происходит и как добиться выгрузки всех четырех знаков после запятой.
Прежде всего, нам необходимо понять, на каком этапе происходит потеря точности. В 1С данные могут храниться правильно, но визуализироваться или передаваться во внешние приложения с искажениями. Проанализируем основные "узкие места":
ЧДЦ=2 (число десятичных знаков равно двум).В современных версиях УТ 11, ERP и КА предусмотрен механизм редактирования макетов прямо в режиме "1С:Предприятие". Рассмотрим этот способ как наиболее предпочтительный, так как он не требует внесения изменений в конфигурацию и не мешает последующим обновлениям.
Перейдем в раздел Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм. В открывшемся списке нам нужно найти макет, отвечающий за прайс-лист. Обратите внимание, что он может называться "Прайс-лист" или относиться к обработке "Печать прайс-листа". Если вы используете выгрузку из документа установки цен, ищите макет документа "Установка цен номенклатуры".
Выполним следующие шаги:
[Цена].ЧЦ=15; ЧДЦ=4.Если через пользовательский режим найти нужный макет не удалось (например, в старых релизах или сильно кастомизированных базах), воспользуемся Конфигуратором. Разберем ситуацию, когда макет находится внутри обработки.
Проанализируем структуру метаданных. Чаще всего за формирование прайса отвечают обработки: ПечатьПрайсЛиста или ИзменениеЦен. Нам нужно найти вкладку "Макеты" в этих объектах. Посмотрим на свойства ячейки цены в макете. Важно убедиться, что тип значения установлен как "Число", а в поле формат явно указано ЧДЦ=4.
Бывают ситуации, когда цена перед выводом преобразуется в строку. В этом случае правки макета не помогут, и нам придется корректировать программный код. Найдем процедуру заполнения области макета (обычно это происходит в модуле менеджера или модуле обработки) и проверим, как передается параметр цены.
Рассмотрим пример кода, который может ограничивать точность:
ОбластьМакета.Параметры.Цена = Формат(Выборка.Цена, "ЧЦ=15; ЧДЦ=2");
// Данный код принудительно округляет цену до 2 знаков.
Нам необходимо изменить этот участок, обеспечив вывод нужного количества знаков:
ОбластьМакета.Параметры.Цена = Формат(Выборка.Цена, "ЧЦ=15; ЧДЦ=4");
// Теперь в макет будет передаваться число с 4 знаками.
В актуальных редакциях УТ 11 прайс-лист зачастую является сложным отчетом на базе СКД. В этом случае формат числа определяется в настройках схемы компоновки. Выясним, где именно это настраивается.
Откроем схему компоновки данных (в Конфигураторе или через редактирование варианта отчета). Перейдем на закладку "Наборы данных". Выберем поле "Цена". В колонке "Оформление" мы можем задать формат. Однако более правильным методом будет использование вкладки "Настройки" и подзакладки "Условное оформление".
Добавим новый элемент условного оформления:
ЧДЦ=4.Такой подход гарантирует, что система применит форматирование на самом последнем этапе перед выводом данных в отчет или при экспорте в Excel.
Иногда причина кроется не в макетах, а в самой логике расчета цен в 1С. Проанализируем настройки справочника "Виды цен". Для каждого вида цены в системе задаются правила округления.
Если в настройках вида цены указано "Округлять до 0.01", то система подготовит данные уже в округленном виде. Даже если в документе "Установка цен номенклатуры" вы видите 4 знака, отчет при обращении к механизмам получения цен может получить уже округленный результат. Убедимся, что в поле "Точность округления" стоит значение, позволяющее хранить 4 знака (например, 0.0001), или округление вовсе отключено.
Рассмотрим ситуацию, когда 1С выгружает данные корректно, но Excel "прячет" лишние знаки. По умолчанию Excel часто применяет финансовый или денежный формат к ячейкам, содержащим валютные значения, что автоматически скрывает все знаки после второго.
Выясним, так ли это, выделив колонку с ценами в Excel и нажав кнопку "Увеличить разрядность" (иконка с синей стрелкой влево и нулями). Если после этого знаки появились, значит, проблема в формате ячеек при экспорте. Чтобы Excel сразу понимал нужный формат, в макете 1С ячейке должен быть присвоен тип Число, а не Общий, и задан формат с жесткой точностью. При выгрузке 1С передаст эти настройки в файл .xls или .xlsx.
Подводя итог, можно сказать, что решение задачи по выгрузке 4 знаков после запятой требует комплексного подхода. Проанализируем краткий алгоритм действий:
ИзменениеЦен) и правим макет там.Формат() с параметром ЧДЦ=4.Важный нюанс: Если вы работаете в облачном сервисе (например, 1С:Фреш), где доступ к конфигуратору ограничен, единственным выходом будет использование расширений конфигурации или настройка через пользовательские макеты, как описано в первом способе.