При настройке обмена данными между конфигурациями 1С с использованием «Конвертации данных 2.1» (КД 2.1) специалисты часто сталкиваются с ситуацией, когда после загрузки документа Поступление на расчетный счет в базе-приемнике в проводках по счету 62.02 (или 60.02) вместо ожидаемого аванса «привязывается» случайный или очень старый документ реализации. Проанализируем, почему это происходит и как настроить правила обмена так, чтобы исключить подобные ошибки.
В типовых конфигурациях 1С (например, «Бухгалтерия предприятия 3.0», «ERP», «Комплексная автоматизация») логика работы расчетных документов завязана на реквизит СпособПогашенияЗадолженности в табличной части РасшифровкаПлатежа. Если при переносе данных этот реквизит не заполнен или в нем установлено значение Автоматически, то при проведении документа в базе-приемнике система запускает стандартный механизм поиска задолженности.
Процесс выглядит следующим образом: алгоритм проведения ищет по регистру «Бухгалтерские взаиморасчеты» (или аналогичным) самый ранний незакрытый остаток по данному контрагенту и договору. Если в базе-приемнике «висит» неоплаченная реализация от 2021 года, система автоматически зачтет поступивший платеж в счет этого долга. С точки зрения бухгалтерского учета это может быть верно, но с точки зрения синхронизации данных это нарушает идентичность проводок в источнике и приемнике.
Часто программисты не могут сразу найти нужный реквизит в интерфейсе программы. Рассмотрим причины, по которым табличная часть РасшифровкаПлатежа скрыта:
Для корректной настройки в КД 2.1 нам важно понимать, что даже если в интерфейсе мы видим одну строку, в правилах конвертации (ПКО) мы должны работать именно с табличной частью.
Основной способ решения проблемы — принудительная передача нужного способа погашения задолженности. Проанализируем ситуацию: если мы хотим, чтобы документ не искал старые долги, нам нужно установить значение НеПогашать.
Для этого в правилах конвертации свойств (ПКС) для реквизита СпособПогашенияЗадолженности табличной части РасшифровкаПлатежа следует прописать алгоритм. Рассмотрим пример кода в обработчике Перед выгрузкой:
// Устанавливаем способ погашения задолженности в значение "Не погашать"
// Это позволит избежать автоматического зачета старых долгов в приемнике
Значение = "НеПогашать";
Важный нюанс: В КД 2.1 при работе с перечислениями можно передавать как строковое имя значения (имя предопределенного элемента в метаданных), так и настраивать отдельное ПКО для перечисления. Если вы используете строку, убедитесь, что в базе-приемнике имя значения НеПогашать совпадает с системным именем в конфигурации.
Иногда настройка выгрузки не дает результата, так как логика типовой конфигурации в приемнике может «перебивать» загруженные значения при записи документа. В этом случае эффективнее применить программную установку параметров непосредственно перед проведением в приемнике. Разберем пример кода для обработчика После загрузки в правилах конвертации объектов (ПКО) документа:
// Проверяем наличие строк в расшифровке платежа
Если Объект.РасшифровкаПлатежа.Количество() > 0 Тогда
Для Каждого СтрокаТЧ Из Объект.РасшифровкаПлатежа Цикл
// Устанавливаем режим, при котором аванс не будет распределяться на старые реализации
СтрокаТЧ.СпособПогашенияЗадолженности = Перечисления.СпособыПогашенияЗадолженности.НеПогашать;
// Если необходимо, чтобы субконто "Документы расчетов" было пустым
// (тогда в проводках по 62.02 подставится сам этот документ)
СтрокаТЧ.ДокументРасчетов = Неопределено;
КонецЦикла;
КонецЕсли;
Этот подход гарантирует, что какие бы данные ни пришли из источника, в приемнике документ будет подготовлен к проведению с нужными параметрами.
Посмотрим на ситуацию со стороны системных механизмов 1С. Когда документ загружается через КД 2.1, часто устанавливается флаг Объект.ОбменДанными.Загрузка = Истина;. Это отключает большинство типовых проверок и автоматических заполнений при записи объекта. Однако, если после загрузки документ проводится (вручную или программно), флаг Загрузка уже не действует в процедуре ОбработкаПроведения.
Если вы хотите, чтобы проводки в приемнике были строго идентичны проводкам в источнике, рекомендуется рассмотреть возможность переноса самих проводок (набор записей регистра бухгалтерии), а не только документа. Но если задача — именно проведение документа в приемнике, то правильное заполнение СпособаПогашенияЗадолженности является единственным верным путем.
Разберем специфику работы счета 62.02 «Расчеты по авансам полученным». Третьим субконто на этом счете обычно выступает Документы расчетов с контрагентами.
СпособПогашенияЗадолженности стоит ПоДокументу, а сам ДокументРасчетов не заполнен, система при проведении автоматически подставляет в проводку ссылку на этот же самый документ. Это и создает корректный аванс.Автоматически, система затирает пустую ссылку в субконто найденной старой реализацией.Таким образом, для избавления от реализации 2021 года, мы должны либо выбрать НеПогашать, либо ПоДокументу при пустом значении документа расчетов.
Проанализировав все способы, мы можем сделать вывод: наиболее стабильным решением будет комбинация настройки ПКС в КД 2.1 и, при необходимости, программная корректировка в обработчиках загрузки. Это позволит полностью контролировать процесс формирования проводок и избежать «сюрпризов» в виде подтянутых старых долгов, которые давно закрыты или не имеют отношения к текущему обмену.