КД 3.0: не замещать объекты и не создавать новые

1. RocKeR_13 1325 17.06.19 17:03 Сейчас в теме
Здравствуйте! Немного предистории: клиент работает в нескольких конфигурациях и есть доработки для централизованного ведения НСИ. Есть задача переносить банковские документы из одной конфы в другую, при этом подразумевается, что НСИ в этих базах уже заведена и синхронизируется, например, по коду. Обмен написан на КД 3.0, в источнике доработаны правила регистрации таким образом, что к выгрузке регистрируются только банковские документы, справочники к выгрузке не регистрируются.
Есть такие моменты времени, когда некоторой НСИ в приемнике нет: в этом случае конвертация НЕ ДОЛЖНА создавать новые элементы справочника. И в любом случае не должна замещать существующие.
Настроил идентификацию по полю "Код", для справочников прописал в событии "ПередЗаписьюПолученныхДанных" строку
ПолученныеДанные = Неопределено;

При загрузке документов в приемник ругается, я так понимаю, при конвертации как раз НСИ, которая заполнена в документе:
Направление: Получение.
ПОД: Документ_СБДСПрочееСписание_Получение.
ПКО: Документ_СБДСПрочееСписание_Получение.
Объект: Документ.СБДСПрочееСписание.

{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(4558)}: 
Событие: Получение.
Объект: Документ объект: Списание безналичных денежных средств, Списание безналичных ДС № от 14.06.2019 16:44:13 ().

Ошибка конвертации свойств.
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(4674)}: Ошибка конвертации свойства объекта XDTO, имя свойства: <СтатьяДвиженияДенежныхСредств>.

{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(4558)}: 
Событие: Получение.
Объект: Справочник объект: Статьи движения денежных средств, <> ().

Ошибка конвертации свойств.
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(4674)}: Ошибка конвертации свойства объекта XDTO, имя свойства: <Код>.

{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(4588)}: Поле объекта не обнаружено (КлючевыеСвойства)
				ИсточникДанных = ДанныеXDTO.КлючевыеСвойства;
		ВызватьИсключение ТекстОшибки;.
		ВызватьИсключение ТекстОшибки;
		ВызватьИсключение ТекстОшибки;.
		ВызватьИсключение ТекстОшибки;
Показать

Подскажите, пожалуйста, как правильно настроить конвертацию в этом случае?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Alexandr671 08.09.22 10:58 Сейчас в теме
(1) При получении и идентификации Объекта по УИН (возможно и при других вариантах поиска), в случае наличия объекта в базе приемнике, Объект перезаписывается в любом случае,

Решение:

В процедуре ПКО_Справочник_Контрагенты_Получение_ПередЗаписьюПолученныхД­анных

ДанныеИБ = Неопределено;

Объект при его наличии идентифицируется и Не перезаписывается.
Не создается при отсутствии.

Если в процедуре указать только:
ПолученныеДанные = Неопределено;
То объект, при его наличии в базе приемнике, все равно перезаписывается, даже в случае не изменения реквизитов.


Конвертация данных, редакция 3.1 (3.1.2.8)
2. Viktor_Ermakov 364 17.04.20 12:24 Сейчас в теме
Если ДанныеИБ <> Неопределено Тогда
// Если валюта уже существует в базе,
// то не перезатираем ее данные.
ПолученныеДанные = Неопределено;
КонецЕсли;

Вот так в типовых правилах БП сделано в справочнике Валюты.
Istur; fuser; alex_newita; +3 Ответить
3. MaxS 2855 25.04.20 19:16 Сейчас в теме
Не замещать существующие описано выше.
"Не создавать новые" - нужно анализировать в ПОД, дальше будет поздно. Типовой процедурой ищем наличие, если нет, все ПКО в ИспользованиеПКО устанавливаем в Ложь.
5. user1884051 28.03.24 16:42 Сейчас в теме
Здравствуйте. Подскажите пожалуйста.
Настроен типовой обмен между ЕРП и БП. Некоторые документы не нужно чтобы перегружались, например "Ведомость в банк", "Ведомость в кассу" и "Ведомость на счета".

Раньше делал это отключением регистрации в правилах регистрации на стороне ЕРП. Но почти при каждом обновлении эти правила требовалось актуализировать, плюс бывало, что после правки правил регистрации вообще зарегистрировалось много лишнего (по организациям не указанным для обмена). Наверняка что-то сам сделал не так, но суть в том, что хочу найти другой способ решения.

Все эти 3 документа в ЕРП грузятся в один документ в БП - "ВедомостьНаВыплатуЗарплаты".

В модуле "МенеджерОбменаЧерезУниверсальныйФормат13" через расширение заменил процедуру "ПКО_Документ_ВедомостьНаВыплатуЗарплаты_Получение_ПередЗапи­сьюПолученныхДанных", на
&Вместо("ПКО_Документ_ВедомостьНаВыплатуЗарплаты_Получение_ПередЗапи­сьюПолученныхДанных")
Процедура Расш_ПКО_Документ_ВедомостьНаВыплатуЗарплаты_Получение_Перед­ЗаписьюПолученныхДанных(ПолученныеДанные, ДанныеИБ, КонвертацияСвойств, КомпонентыОбмена)
ПолученныеДанные = Неопределено; //не загружать объекты
КонецПроцедуры

Проверил на копии, и вроде бы оно корректно работает. Но есть сомнения. Прошу подсказать допустимо ли такое решение или нет. И что может пойти не так.

Знаю что похожий способ применяется для справочников, чтобы существующие не замещались, к примеру:

Если НЕ ДанныеИБ = Неопределено Тогда // Не замещать существующие объекты в приемнике при загрузке, а только создавать новые и заполнять их
ПолученныеДанные = Неопределено;
КонецЕсли;
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот