При настройке обмена данными между конфигурациями 1С:Бухгалтерия предприятия 3.0 и 1С:Управление торговлей 11 через Универсальный формат (Enterprise Data) специалисты часто сталкиваются с ситуацией, когда определенные типы документов упорно игнорируются системой. Одной из наиболее специфических проблем является отсутствие выгрузки документа Поступление безналичных денежных средств с видом операции Возврат займа контрагентом.
В этой статье мы подробно разберем, почему объекты могут регистрироваться к обмену, но не попадать в файл выгрузки, проанализируем внутреннюю логику менеджера обмена и найдем способ решения этой задачи.
Рассмотрим ситуацию: бухгалтер или администратор видит, что изменения в документе успешно фиксируются в Плане обмена. При попытке синхронизации система сообщает об успешном завершении процесса, однако в базе-приемнике документ не появляется. Если мы откроем файл выгрузки (XML), то обнаружим, что узла с данным документом там просто не существует.
Выясним причину такого поведения. В механизме Enterprise Data процесс выгрузки разделен на два этапа:
В случае с операцией Возврат займа контрагентом проблема чаще всего кроется в жесткой фильтрации внутри программного кода конфигурации БП 3.0.
Проанализируем программный код, отвечающий за выгрузку денежных документов. Основная логика сосредоточена в общем модуле МенеджерОбменаЧерезУниверсальныйФормат. Именно здесь описываются правила, по которым данные из таблиц информационной базы преобразуются в структуру XDTO.
Ключевым моментом является процедура ПОД_Документ_ПРС_Отправка_ПриОбработке (ПРС — Поступление Расчетный Счет). Посмотрим на типичный фрагмент кода, который вызывает затруднения в релизах линейки 3.0.60 и смежных:
Процедура ПОД_Документ_ПРС_Отправка_ПриОбработке(ДанныеИБ, ИспользованиеПКО, КомпонентыОбмена)
// Проверка вида операции документа
Если ДанныеИБ.ВидОперации = Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ОплатаПокупателя
Или ДанныеИБ.ВидОперации = Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ВозвратОтПоставщика
Или ДанныеИБ.ВидОперации = Перечисления.ВидыОперацийПоступлениеДенежныхСредств.РасчетыПоКредитамИЗаймам
Или ДанныеИБ.ВидОперации = Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ПрочиеРасчетыСКонтрагентами
ИЛИ ДанныеИБ.ВидОперации = Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ПолучениеКредита
ИЛИ ДанныеИБ.ВидОперации = Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ПолучениеЗайма
ИЛИ ДанныеИБ.ВидОперации = Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ОплатаОтФакторинговойКомпании Тогда
// Если операция входит в список, разрешаем использование ПКО
ИспользованиеПКО.Документ_ПРСРасчетыСКонтрагентами_Отправка = Истина;
КонецЕсли;
КонецПроцедуры
Как мы видим из кода, вид операции ВозвратЗаймаКонтрагентом в данном списке отсутствует. Разработчики типовой конфигурации в некоторых версиях полагали, что операции по возврату выданных займов (счет 58.03) относятся исключительно к регламентированному учету и не должны транслироваться в торговый контур УТ 11. Однако на практике управленческий учет в УТ 11 часто требует полной картины движения денежных средств.
Чтобы заставить систему выгружать эти документы, нам необходимо добавить недостающий вид операции в условие фильтрации. Рассмотрим наиболее правильный метод — использование расширения конфигурации, чтобы не снимать основную базу с поддержки.
Разберем по шагам, как это реализовать:
МенеджерОбменаЧерезУниверсальныйФормат.&После для процедуры ПОД_Документ_ПРС_Отправка_ПриОбработке.Пример кода в расширении:
&После("ПОД_Документ_ПРС_Отправка_ПриОбработке")
Процедура Расш_ПОД_Документ_ПРС_Отправка_ПриОбработке(ДанныеИБ, ИспользованиеПКО, КомпонентыОбмена)
Если ДанныеИБ.ВидОперации = Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ВозвратЗаймаКонтрагентом Тогда
// Принудительно включаем правило конвертации объектов
ИспользованиеПКО.Документ_ПРСРасчетыСКонтрагентами_Отправка = Истина;
КонецЕсли;
КонецПроцедуры
Важный нюанс: Одного разрешения на выгрузку может быть недостаточно, если в самой схеме обмена (XDTO) нет сопоставления для этого вида операции. В этом случае документ выгрузится как ПрочиеРасчетыСКонтрагентами, что в целом приемлемо для УТ 11, где такие операции обычно закрываются по договорам с типом "Прочее".
Если правка кода по каким-то причинам невозможна (например, закрытая облачная база или отсутствие программиста), можно рассмотреть обходные пути:
Попробуем изменить вид операции в Поступлении безналичных ДС на Прочее поступление. При этом счет расчетов (например, 58.03) и контрагента оставляем прежними. Операция ПрочиеРасчетыСКонтрагентами по умолчанию включена во все правила обмена. После выполнения синхронизации документ попадет в УТ 11, где его можно будет корректно разнести. Однако этот метод требует ручного вмешательства в учет и может быть неудобен при больших объемах данных.
Выясним, какая версия формата используется в текущей настройке обмена. В разделе Администрирование — Синхронизация данных проверим параметры подключения. Если используется версия 1.5 или ниже, рекомендуется обновить конфигурации (и БП, и УТ) до актуальных и пересоздать настройку обмена, выбрав версию формата 1.8 или 1.10. В новых версиях формата разработчики 1С расширили состав выгружаемых операций, и проблема может исчезнуть сама собой.
Проанализируем данные самого документа. Часто менеджер обмена блокирует выгрузку, если Вид договора не соответствует виду операции. Для возврата займа в 1С:Бухгалтерии договор должен иметь вид Прочее. Если по ошибке выбран договор с видом С покупателем, внутренние механизмы контроля EnterpriseData могут посчитать такой объект некорректным и не включить его в файл выгрузки.
Ситуация, когда документы «не выгружаются никак», почти всегда связана с программными фильтрами в модуле МенеджерОбменаЧерезУниверсальныйФормат. Для решения проблемы мы рекомендуем:
ПОД_..._ПриОбработке является самым быстрым и надежным техническим решением.Прочее) и счета учета (58.03), которые поддерживаются правилами сопоставления.