Как настроить корректное отображение цен со скидками в ТОРГ-12 при синхронизации УНФ и Бухгалтерии 3.0

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

При ведении учета в нескольких конфигурациях 1С, например, при связке 1С:Управление нашей фирмой (УНФ) и 1С:Бухгалтерия предприятия 3.0 (БП), часто возникает проблема с передачей данных о скидках. Пользователи сталкиваются с ситуацией, когда в документе «Реализация (акт, накладная)» итоговая сумма верна, но в печатной форме ТОРГ-12 в 11-м столбце (цена за единицу) отображается базовая цена без учета скидки. Это вызывает недовольство бухгалтерии и контрагентов, так как нарушается логика расчета: «Цена * Количество = Сумма».

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

Почему в ТОРГ-12 цена отображается без скидки?

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

Алгоритм формирования печатной формы ТОРГ-12 в МодулеМенеджера документа РеализацияТоваровУслуг часто использует расчетный метод. Цена для колонки 11 вычисляется как Сумма / Количество. Однако, если при обмене из УНФ данные попали в документ некорректно (например, сумма передана с учетом скидки, а цена осталась «старой»), или если в БП не установлен реквизит ВидСкидки, печатная форма может отображать данные не так, как ожидается.

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

Разбор технической причины в модуле обмена

Выясним причину на уровне кода. При обмене между УНФ и БП используется объект МенеджерОбменаЧерезУниверсальныйФормат. Рассмотрим, как происходит загрузка документа ЗаказКлиента или РеализацияТоваровУслуг.

Для того чтобы 1С:Бухгалтерия «поняла», что в строках есть скидка, в документе должен быть заполнен реквизит ВидСкидки. Это перечисление, которое может принимать значения:

  1. Без скидок;
  2. Скидка на отдельные позиции;
  3. Скидка на весь документ.

Если этот реквизит при загрузке остается в положении «Без скидок» (по умолчанию), то колонки ПроцентСкидкиНаценки и СуммаСкидкиНаценки в табличной части игнорируются интерфейсом и алгоритмами печати.

Вариант 1: Доработка менеджера обмена в 1С:Бухгалтерии

Рассмотрим подробнее процесс модификации правил обмена. Если вы столкнулись с тем, что информация о скидках теряется, необходимо внести изменения в процедуру обработки получения данных. Нам нужно заставить систему устанавливать ВидСкидки в значение Скидка на отдельные позиции при наличии данных о скидке в XML-файле обмена.

Проанализируем пример кода, который необходимо добавить в процедуру ДобавитьПКО_Документ_ЗаказКлиента_Получение (или аналогичную для Реализации) в модуле менеджера обмена:


// В обработчике ПКС (Правила конвертации свойств) табличной части
ДобавитьПКС(СвойстваТЧ, "ПроцентСкидкиНаценки", "", 1);
ДобавитьПКС(СвойстваТЧ, "СуммаСкидкиНаценки", "", 1);

// В структуре правил заполнения
ПравилаЗаполнения.Вставить("ПроцентСкидкиНаценки", "ПроцентСкидки");
ПравилаЗаполнения.Вставить("СуммаСкидкиНаценки", "СуммаСкидки");

Однако простого добавления полей недостаточно. Чтобы документ «ожил», нужно установить ВидСкидки. Проанализируем, как это сделать в логике EnterpriseData. В момент загрузки объекта (событие ПослеЗагрузкиОбъекта или внутри правил обработки данных) необходимо проверить: если хотя бы в одной строке табличной части Товары сумма скидки не равна нулю, то реквизиту ВидСкидки присваивается соответствующее значение перечисления.

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

Вариант 2: Передача «чистой» цены из УНФ

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

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

Преимущества такого подхода:

  1. Простота для бухгалтера: В ТОРГ-12 цена сразу будет соответствовать итоговой сумме.
  2. Отсутствие ошибок округления: Когда скидка рассчитывается как процент, могут возникать копейки разницы. Передача готовой цены решает эту проблему.
  3. Типовые формы: Не требуется модификация печатных форм в БП.

Правовой аспект изменения ТОРГ-12

Рассмотрим опасения пользователей относительно «законности» изменения формы. Некоторые участники обсуждения утверждают, что ТОРГ-12 регламентирована законом и ее нельзя трогать. Это не совсем так.

С 1 января 2013 года формы первичных учетных документов, содержащиеся в альбомах унифицированных форм первичной учетной документации, не являются обязательными к применению (согласно Федеральному закону № 402-ФЗ «О бухгалтерском учете»). Организация имеет право разработать свою форму на базе ТОРГ-12, добавив или убрав колонки, при условии сохранения обязательных реквизитов первичного документа.

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

Рекомендации по исправлению

Проанализировав все способы, составим пошаговый план действий для программиста:

  1. Проверьте настройки БП: Убедитесь, что в функциональности программы включен признак использования скидок в продажах.
  2. Изучите входящие данные: С помощью обработки «Редактирование данных обмена» посмотрите, приходят ли фактически ПроцентСкидки и СуммаСкидки в XML-пакете.
  3. Модифицируйте Менеджер обмена: Если данные приходят, но не записываются, необходимо расширить расширение (или использовать правила конвертации) для заполнения реквизита ВидСкидки. Используйте установку значения Перечисления.ВидыСкидокНаценок.СкидкаНаОtdelnyePozitsii.
  4. Принудительный пересчет: После загрузки документа программно вызовите метод пересчета сумм в табличной части, чтобы 1С обновила итоговые показатели строки.

Таким образом, проблема решается либо на этапе передачи данных (передаем цену с учетом скидки), либо на этапе приема (настраиваем БП на корректное восприятие скидок через реквизит ВидСкидки). Второй вариант более гибкий, так как сохраняет информацию о размере предоставленной скидки в базе данных Бухгалтерии для последующего анализа.

← На главную