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

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

В процессе интеграции «1С:Управление торговлей 10.3» и «1С:Бухгалтерия предприятия 3.0» часто возникает задача изменить стандартную логику переноса документов. Типовые правила обычно переносят «Возврат товаров от покупателя» как одноименный документ. Однако для розничного учета часто требуется, чтобы эти операции попадали в специализированную табличную часть Возвраты документа Отчет о розничных продажах. Рассмотрим подробно, как реализовать такую настройку в конфигурации «Конвертация данных 2.1» и избежать типичных ошибок при загрузке.

Шаг 1. Подготовка метаданных в конфигурации «Конвертация данных»

Первоочередная задача — убедиться, что в информационной базе КД 2.1 загружены актуальные описания метаданных для обеих систем. Если в базе-приемнике (БП 3.0) вы не видите табличную часть Возвраты в объекте ОтчетОРозничныхПродажах, это означает, что описание структуры устарело.

Проанализируем алгоритм обновления метаданных:

  1. Откроем базу «Бухгалтерия предприятия 3.0» в режиме «Предприятие».
  2. Воспользуемся обработкой ВыгрузкаОписанияСтруктурыКонфигурации.epf (она входит в комплект поставки КД 2.1).
  3. Сформируем XML-файл с описанием структуры.
  4. В базе «Конвертация данных» перейдем в справочник Конфигурации и выполним загрузку полученного файла для БП 3.0.

Важный нюанс: Иногда даже после обновления ТЧ не появляется в списке выбора ПКС (правил конвертации свойств). В этом случае попробуйте полностью перезагрузить правила обмена из файла в настройку конвертации, как это помогло автору темы. Это принудительно обновляет связи между объектами в интерфейсе настройки.

Шаг 2. Настройка ПКО для конвертации возвратов

Теперь разберем создание самого правила конвертации объектов (ПКО). Нам необходимо, чтобы документ одного типа в источнике превращался в документ другого типа в приемнике. Рассмотрим, как это настроить по шагам:

  1. Создадим новое ПКО. В качестве Источника выберем ВозвратТоваровОтПокупателя, а в качестве Приемника — ОтчетОРозничныхПродажах.
  2. В табличной части Настройка правил конвертации свойств создадим сопоставление для табличных частей.
  3. Источник Товары (из документа возврата) должен быть сопоставлен с Приемником Возвраты (в отчете о розничных продажах).

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

Шаг 3. Методология учета возвратов

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

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

Шаг 4. Решение технических ошибок в обработчиках

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

ДоговорОбъект = Объект.ДоговорКонтрагента.ПолучитьОбъект();

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


Если ЗначениеЗаполнено(Объект.ДоговорКонтрагента) Тогда
    ДоговорОбъект = Объект.ДоговорКонтрагента.ПолучитьОбъект();
    Если ДоговорОбъект <> Неопределено Тогда
        Если Не ЗначениеЗаполнено(ДоговорОбъект.ВидДоговора) Тогда
            Если СокрЛП(ДоговорОбъект.Наименование) = "С поставщиком" Тогда
                ДоговорОбъект.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком;
            Иначе
                ДоговорОбъект.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
            КонецЕсли;
        КонецЕсли;
        
        Если Не ЗначениеЗаполнено(ДоговорОбъект.ВалютаВзаиморасчетов) Тогда
            ДоговорОбъект.ВалютаВзаиморасчетов = Объект.ВалютаДокумента;
        КонецЕсли;
        
        ДоговорОбъект.Записать();
    КонецЕсли;
КонецЕсли;

Этот код проверяет наличие ссылки перед попыткой получить объект. Также важно добавить заполнение обязательных реквизитов для УСН, если ваша организация работает по этой системе:


Для Каждого СтрокаТЧ Из Объект.Товары Цикл
    СтрокаТЧ.ОтражениеВУСН = Перечисления.ОтражениеВУСН.Принимаются;
КонецЦикла;

Шаг 5. Как найти «скрытый» код в правилах

Если в интерфейсе КД 2.1 вы не видите проблемный код в обработчиках документа, выполним следующие действия для поиска «собаки», которая «порылась» глубоко в правилах:

  1. Выгрузим правила обмена в XML-файл.
  2. Откроем этот файл в любом текстовом редакторе (например, Notepad++).
  3. Запустим поиск по строке ПолучитьОбъект или по имени реквизита ДоговорКонтрагента.
  4. Найденный фрагмент укажет, к какому ПКО или Алгоритму относится код.

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

Итоги настройки

Для успешной реализации задачи мы должны выполнить три ключевых условия: актуализировать метаданные в КД 2.1, настроить сопоставление ТЧ Товары источника с ТЧ Возвраты приемника и обеспечить отказоустойчивость кода в обработчиках, добавив проверки на ЗначениеЗаполнено(). Такой подход гарантирует стабильный обмен данными между УТ 10.3 и БП 3.0 без прерывания процесса загрузки.

← На главную