Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 окт 2021, 15:20

Обмен данными, БСП и выгрузка объектов из ПКС

Автор TiraelWorm, 30 июл 2021, 12:56

0 Пользователей и 1 гость просматривают эту тему.

TiraelWorm

Здравствуйте.

Столкнулся с проблемой в настройке обмена, после 3го круга поиска и часа отправки всяких вариантов вопросов гуглу, решил спросить.

Есть ERP+PM типовая, нужно устроить обмен с давно не обновляемой УТ 11.1. Сделал планы обмена в базах (изначально думал через EnterpiseData, но УТ поддерживает только 1.0 версию, а обновлять этого динозавра не вариант), в ERP встроил в бсп. Написал правила на нужные объекты в кд2, все встроил, обмен запустился. Но есть ложка дегтя: при отправке объекта система по вложенным ссылкам отправляет только саму ссылку и поля поиска (все настроено через БСП). При этом, если не нашлось по УИД и полям поиска, то и объекты не создаются. В то же время, если через универсальную выгрузку XML сделать выгрузку по тем же правилам, то выгружается вся структура, на всю глубину вложенности. То есть, правила рабочие, но БСП какими-то настройками срезает все выгрузки по ПКО, указанные в ПКС. План обмена делал копированием с типового, настройки выгрузки: НСИ - только по необходимости, документы - все с даты и ограничения по организации.

Есть вариант писать регистрацию всех документов, чтобы они регистрировали все вложенные ссылки, но там 2 десятка типов документов, описывать регистрацию всех вложенных НСИ прокатит, но это не совсем правильное решение. Нужно чтобы система искала их, если нашла, то использовала существующую ссылку, не меняя объект за ней, а если не нашлось, то создавала необходимый объект, заполняя все поля.

Возможно я долблюсь в глаза, и где-то надо всего лишь включить какую-то опцию, но у меня найти не получается.

Заранее спасибо.

ef0din

Вроде так и работают планы обмена: объект "по ссылке" не выгружается. Он должен быть явно зарегистрирован на обмен. Это, если верно понял о чем речь.
А, любопытства ради, в ЕРП зачем БСП встраивать? Она не на БСП изначально? И что такое РМ?

TiraelWorm

@ef0din, если использовать правила и универсальный обмен XML - выгрузка происходит правильно: объекты по ссылке ищутся, и, если не нашлось, то объект создается. Суть в том, что БСП где-то срезает выгрузку, меняет настройки правила. Это и нужно найти и изменить.

БСП в ERP изначально есть, просто в БСП "Обмен данными" я добавил свой план обмена, чтобы мой план обмена через БСП работал. Это снимает кучу всяких мелких настроек и дописок. Но зато привело к проблеме с объектами по ссылке. К тому же регистрировать все элементы справочников из объектов вручную ведет к тому, что все они будут перегружены и заменены. А мне нужно, чтобы он только создавал недостающие, не перезаписывая элементы, которые найдены. Кроме случаев, если элемент справочника был принудительно зарегистрирован, тогда пусть перезаписывает. В принципе, все так и работает, кроме пункта, когда элемент не найден: он просто приписывает битую ссылку и все. При этом, в файле выгрузки есть только ссылка и поля поиска, значит в приемнике он просто не сможет создать элемент нормально. Итого: нужно чтобы источник выгружал все реквизиты, а не только поля поиска, а приемник создавал элементы, если они не найдены по ссылке и полям поиска.

ERP+PM - отраслевая разработка, по сути это ЕРП с проектным модулем, решение называется "ERP+PM Управление проектной организацией". Но в моем случае обмен идет только по типовым документам ЕРП, так что ПМ тут просто как часть имени.

TiraelWorm

Добавлю к первому замечанию: планы обмена в 1С используются для учета, что нужно отправлять, то есть, регистрация изменений. Правила обмена - это средства механизма передачи. Поскольку одни и те же правила при использовании через обработку универсального обмена и через БСП "Обмен данными" дают разные результаты, то значит БСП меняет настройки правил. Все бы хорошо, но я не могу найти точку входа, где эти настройки меняются. Копал в модулях обмена данных, но не нашел: они не такие уж маленькие. Знать бы хотя бы как они называются, чтобы было проще найти.

ef0din

Цитата: TiraelWorm от 30 июл 2021, 14:32@ef0din, если использовать правила и универсальный обмен XML - выгрузка происходит правильно: объекты по ссылке ищутся, и, если не нашлось, то объект создается. Суть в том, что БСП где-то срезает выгрузку, меняет настройки правила. Это и нужно найти и изменить.

Вот именно. Через универсальный обмен XML по ссылке идет выгрузка и создание, а через планы обмена - нет. Я когда-то тоже столкнулся с этим и тоже очень удивился. Если я ошибаюсь, - пусть меня местные сторожилы поправят.


К слову, совсем недавно настраивал типовой обмен Розница - УХ. И да, тоже самое: если объект в плане не зарегистрирован, и его нет уже в базе - приемнике: будут битые ссылки.

TiraelWorm

Решение найдено: в событие "Перед выгрузкой" в нужные ПКО прописать команду:
ТолькоПолучитьУзелСсылки = Ложь;Тогда выгрузка по этим ПКО происходит как через универсальный обмен XML, с выгрузкой всех объектов.
Работает хорошо, я еще добавил защиту от перезаписи: в исходящие данные в ПКС дописываю свое свойство (инициализирую как структура, если еще не сделано), а в ПКО "Перед выгрузкой", если во входящих данных есть это свойство, то устанавливаю флаг "НеЗамещатьОбъектПриЗагрузке", то есть, замещение не происходит, только создание новых.

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск