Как выгрузить прайс-лист из 1С в Excel с сохранением 4 знаков после запятой

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

Часто в оптовой торговле или при работе с импортными товарами возникает необходимость вести учет цен с точностью выше стандартных двух знаков после запятой. В системе 1С:Предприятие 8 (особенно в конфигурации "Управление торговлей 11") настройки точности могут быть заданы корректно, однако при попытке выгрузить прайс-лист в Excel пользователь обнаруживает, что система принудительно округляет значения до копеек. Разберем подробно, почему так происходит и как добиться выгрузки всех четырех знаков после запятой.

Анализируем причину округления

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

  1. Тип данных в макете: Ячейка в макете печатной формы может иметь тип "Общий", из-за чего Excel интерпретирует число по своему усмотрению.
  2. Форматная строка: В программном коде или свойствах ячейки может быть жестко прописано ограничение ЧДЦ=2 (число десятичных знаков равно двум).
  3. Настройки вида цен: Правила округления в справочнике "Виды цен" могут срабатывать в момент формирования отчета.
  4. Система компоновки данных (СКД): Если прайс-лист строится на СКД, форматирование может быть задано в условном оформлении схемы.

Способ 1. Настройка через пользовательские макеты (без конфигуратора)

В современных версиях УТ 11, ERP и КА предусмотрен механизм редактирования макетов прямо в режиме "1С:Предприятие". Рассмотрим этот способ как наиболее предпочтительный, так как он не требует внесения изменений в конфигурацию и не мешает последующим обновлениям.

Перейдем в раздел Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм. В открывшемся списке нам нужно найти макет, отвечающий за прайс-лист. Обратите внимание, что он может называться "Прайс-лист" или относиться к обработке "Печать прайс-листа". Если вы используете выгрузку из документа установки цен, ищите макет документа "Установка цен номенклатуры".

Выполним следующие шаги:

  1. Выделим нужный макет и нажмем кнопку "Изменить" (или создадим новый на основании типового).
  2. В открывшемся табличном документе найдем ячейку, в которую выводится цена. Обычно в ней написано [Цена].
  3. Нажмем на ячейку правой кнопкой мыши и выберем пункт "Свойства".
  4. В палитре свойств найдем строку "Формат". Нажмем на кнопку выбора (с тремя точками).
  5. В появившемся конструкторе форматной строки в поле "Точность" установим значение "4". Система автоматически сформирует строку вида ЧЦ=15; ЧДЦ=4.
  6. Сохраним макет и проверим выгрузку.

Способ 2. Редактирование в Конфигураторе

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

Проанализируем структуру метаданных. Чаще всего за формирование прайса отвечают обработки: ПечатьПрайсЛиста или ИзменениеЦен. Нам нужно найти вкладку "Макеты" в этих объектах. Посмотрим на свойства ячейки цены в макете. Важно убедиться, что тип значения установлен как "Число", а в поле формат явно указано ЧДЦ=4.

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

Рассмотрим пример кода, который может ограничивать точность:


ОбластьМакета.Параметры.Цена = Формат(Выборка.Цена, "ЧЦ=15; ЧДЦ=2");
// Данный код принудительно округляет цену до 2 знаков.

Нам необходимо изменить этот участок, обеспечив вывод нужного количества знаков:


ОбластьМакета.Параметры.Цена = Формат(Выборка.Цена, "ЧЦ=15; ЧДЦ=4");
// Теперь в макет будет передаваться число с 4 знаками.

Способ 3. Особенности работы через СКД (Систему компоновки данных)

В актуальных редакциях УТ 11 прайс-лист зачастую является сложным отчетом на базе СКД. В этом случае формат числа определяется в настройках схемы компоновки. Выясним, где именно это настраивается.

Откроем схему компоновки данных (в Конфигураторе или через редактирование варианта отчета). Перейдем на закладку "Наборы данных". Выберем поле "Цена". В колонке "Оформление" мы можем задать формат. Однако более правильным методом будет использование вкладки "Настройки" и подзакладки "Условное оформление".

Добавим новый элемент условного оформления:

  1. В поле "Оформление" выберем параметр "Формат" и пропишем ЧДЦ=4.
  2. В поле "Условие" ничего не указываем (оформление будет действовать всегда).
  3. В поле "Оформляемые поля" выберем "Цена".

Такой подход гарантирует, что система применит форматирование на самом последнем этапе перед выводом данных в отчет или при экспорте в Excel.

Способ 4. Проверка настроек в справочнике "Виды цен"

Иногда причина кроется не в макетах, а в самой логике расчета цен в 1С. Проанализируем настройки справочника "Виды цен". Для каждого вида цены в системе задаются правила округления.

Если в настройках вида цены указано "Округлять до 0.01", то система подготовит данные уже в округленном виде. Даже если в документе "Установка цен номенклатуры" вы видите 4 знака, отчет при обращении к механизмам получения цен может получить уже округленный результат. Убедимся, что в поле "Точность округления" стоит значение, позволяющее хранить 4 знака (например, 0.0001), или округление вовсе отключено.

Способ 5. Проблема интерпретации в самом Excel

Рассмотрим ситуацию, когда 1С выгружает данные корректно, но Excel "прячет" лишние знаки. По умолчанию Excel часто применяет финансовый или денежный формат к ячейкам, содержащим валютные значения, что автоматически скрывает все знаки после второго.

Выясним, так ли это, выделив колонку с ценами в Excel и нажав кнопку "Увеличить разрядность" (иконка с синей стрелкой влево и нулями). Если после этого знаки появились, значит, проблема в формате ячеек при экспорте. Чтобы Excel сразу понимал нужный формат, в макете 1С ячейке должен быть присвоен тип Число, а не Общий, и задан формат с жесткой точностью. При выгрузке 1С передаст эти настройки в файл .xls или .xlsx.

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

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

  1. Проверяем макет: Первым делом пробуем изменить формат через "Пользовательские макеты печатных форм" в режиме Предприятия. Это самый быстрый и безопасный способ.
  2. Ищем макет в обработке: Если типовой макет не помогает, выясняем, из какой обработки вызывается печать (часто это ИзменениеЦен) и правим макет там.
  3. Корректируем код: Если данные приходят в макет уже строкой, используем функцию Формат() с параметром ЧДЦ=4.
  4. Настраиваем СКД: В случае использования системы компоновки данных, задаем формат через условное оформление полей.

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

← На главную