Как при выгрузке возврата поставщику в КД 2.0 программно установить флаг выставления счета-фактуры и выгрузить подчиненный документ

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

При переносе данных между конфигурациями, построенными на классической архитектуре (например, УПП 1.3 или КА 1.1), часто возникает задача корректного отражения операций возврата товаров поставщику. Одной из ключевых особенностей этих систем является наличие реквизита ПоставщикуВыставляетсяСчетФактураНаВозврат в документе ВозвратТоваровПоставщику. Если этот флаг установлен, система ожидает наличие связанного документа СчетФактураВыданный.

В рамках данной статьи мы разберем, как с помощью «Конвертации данных 2.0» автоматизировать процесс установки этого флага и обеспечить гарантированную выгрузку подчиненного счета-фактуры вместе с основным документом возврата.

Зачем нужен флаг «Поставщику выставляется счет-фактура на возврат»?

Перед тем как переходить к коду, проанализируем методологическую значимость этого реквизита. В конфигурациях УПП и КА установка этого флага в значение Истина радикально меняет логику проведения документа по регистрам НДС:

  1. Формирование записей Книги продаж: Документ начинает трактоваться как «обратная реализация», и сумма НДС попадает в Книгу продаж, а не сторнирует записи в Книге покупок.
  2. Бухгалтерские проводки: Программа формирует проводку по кредиту счета 68.02 (НДС к уплате), что требует наличия корректно оформленного и выгруженного счета-фактуры.
  3. Связь объектов: Для корректной работы отчетов по НДС в базе-приемнике необходимо, чтобы объект СчетФактураВыданный имел ссылку на ВозвратТоваровПоставщику в качестве документа-основания.

Если мы просто перенесем документы по отдельности, существует риск, что флаг не будет установлен, и учет НДС «поплывет». Поэтому нам необходимо реализовать логику «связки» непосредственно в правилах обмена (ПКО).

Шаг 1: Поиск подчиненного документа в источнике

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

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


Подчиненный = Неопределено;
// Используем функцию для поиска связанного счета-фактуры
// В типовых решениях это можно сделать запросом к регистру или через критерии отбора
Если мвДоработки.ПодчиненныйДокумент(Источник.Ссылка, "СчетФактураВыданный", Подчиненный) Тогда
    Значение = Истина; // Устанавливаем флаг в документе-приемнике
КонецЕсли;

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

Шаг 2: Программная выгрузка счета-фактуры через ВыгрузитьПоПравилу

Просто установить флаг Истина недостаточно. Нам нужно гарантировать, что найденный документ Подчиненный также попадет в файл обмена, причем по конкретному правилу конвертации. Для этого используется мощный механизм КД 2.0 — функция ВыгрузитьПоПравилу.

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

Выясним, как правильно вызвать выгрузку:


// В обработчике ПКС или ПКО
Если Подчиненный <> Неопределено Тогда
    // Выгружаем найденный счет-фактуру по правилу "СчетФактураВыданный"
    ВыгрузитьПоПравилу(Подчиненный, , , , "СчетФактураВыданный");
КонецЕсли;

Разберем подробнее параметры этой функции:

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

Шаг 3: Синхронизация и поиск в базе-приемнике

Когда мы вызываем ВыгрузитьПоПравилу, КД помещает данные счета-фактуры в файл обмена. Чтобы при загрузке в УПП или КА этот документ «нашел» свой документ-основание, проверьте следующие настройки в ПКО для СчетФактураВыданный:

  1. Найдите свойство ДокументОснование.
  2. Убедитесь, что для него указано правило конвертации, соответствующее вашему ВозвратуТоваровПоставщику.
  3. В ПКО счета-фактуры настройте Поля поиска. Обычно это Номер, Дата и Организация. Если вы переносите данные между идентичными конфигурациями, можно использовать поиск по УникальномуИдентификатору.

Проанализируем ситуацию с дублями: если выгружаемый счет-фактура уже был выгружен ранее (например, через общую выборку документов), КД 2.0 автоматически обработает это. Функция ВыгрузитьПоПравилу проверит, был ли данный объект помещен в файл в рамках текущей сессии, и если да, то повторно полные данные выгружаться не будут — запишется только ссылка.

Итоговый алгоритм реализации

Суммируя все вышесказанное, составим финальный план действий для настройки правил обмена:

  1. В ПКО ВозвратТоваровПоставщику найдите ПКС ПоставщикуВыставляетсяСчетФактураНаВозврат.
  2. В обработчике «Перед выгрузкой» напишите код поиска подчиненного СФ.
  3. Установите Значение = Истина, если документ найден.
  4. Вызовите ВыгрузитьПоПравилу(НайденнаяСсылка, , , , "ИмяВашегоПКО_СФ").
  5. Проверьте, что в приемнике после загрузки документ не только создается, но и проводится. Иногда в обработчике «После загрузки» в приемнике полезно добавить вызов Объект.Записать(РежимЗаписиДокумента.Проведение), если бизнес-логика требует немедленного отражения в учете НДС.

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

← На главную