КД 3.0: не замещать объекты и не создавать новые
Здравствуйте! Немного предистории: клиент работает в нескольких конфигурациях и есть доработки для централизованного ведения НСИ. Есть задача переносить банковские документы из одной конфы в другую, при этом подразумевается, что НСИ в этих базах уже заведена и синхронизируется, например, по коду. Обмен написан на КД 3.0, в источнике доработаны правила регистрации таким образом, что к выгрузке регистрируются только банковские документы, справочники к выгрузке не регистрируются.
Есть такие моменты времени, когда некоторой НСИ в приемнике нет: в этом случае конвертация НЕ ДОЛЖНА создавать новые элементы справочника. И в любом случае не должна замещать существующие.
Настроил идентификацию по полю "Код", для справочников прописал в событии "ПередЗаписьюПолученныхДанных" строку
При загрузке документов в приемник ругается, я так понимаю, при конвертации как раз НСИ, которая заполнена в документе:
Подскажите, пожалуйста, как правильно настроить конвертацию в этом случае?
Есть такие моменты времени, когда некоторой НСИ в приемнике нет: в этом случае конвертация НЕ ДОЛЖНА создавать новые элементы справочника. И в любом случае не должна замещать существующие.
Настроил идентификацию по полю "Код", для справочников прописал в событии "ПередЗаписьюПолученныхДанных" строку
ПолученныеДанные = Неопределено;
При загрузке документов в приемник ругается, я так понимаю, при конвертации как раз НСИ, которая заполнена в документе:
Направление: Получение.
ПОД: Документ_СБДСПрочееСписание_Получение.
ПКО: Документ_СБДСПрочееСписание_Получение.
Объект: Документ.СБДСПрочееСписание.
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(4558)}:
Событие: Получение.
Объект: Документ объект: Списание безналичных денежных средств, Списание безналичных ДС № от 14.06.2019 16:44:13 ().
Ошибка конвертации свойств.
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(4674)}: Ошибка конвертации свойства объекта XDTO, имя свойства: <СтатьяДвиженияДенежныхСредств>.
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(4558)}:
Событие: Получение.
Объект: Справочник объект: Статьи движения денежных средств, <> ().
Ошибка конвертации свойств.
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(4674)}: Ошибка конвертации свойства объекта XDTO, имя свойства: <Код>.
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(4588)}: Поле объекта не обнаружено (КлючевыеСвойства)
ИсточникДанных = ДанныеXDTO.КлючевыеСвойства;
ВызватьИсключение ТекстОшибки;.
ВызватьИсключение ТекстОшибки;
ВызватьИсключение ТекстОшибки;.
ВызватьИсключение ТекстОшибки;
ПоказатьПодскажите, пожалуйста, как правильно настроить конвертацию в этом случае?
По теме из базы знаний
- Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники
- Перенос данных из УПП 1.3 / КА 1.1 в БП 3. Переносятся документы, справочники и начальные остатки
- Опыт проведения сложных переносов данных на 1С
- Механизмы и транспорт обмена данными. Пример создания в КД 2.1 правил обмена данными ЗУП 2.5 -> БП 3.0. Выгрузка ведомостей и банковских счетов. Передача параметров обмена из Источника в Приемник. ВыгрузитьПоПравилу(). ПередатьОдинПараметрВПриемник().
- Работа обработки "Универсальный обмен данными в формате XML" с планом обмена "Синхронизация данных через универсальный формат"
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) При получении и идентификации Объекта по УИН (возможно и при других вариантах поиска), в случае наличия объекта в базе приемнике, Объект перезаписывается в любом случае,
Решение:
В процедуре ПКО_Справочник_Контрагенты_Получение_ПередЗаписьюПолученныхД анных
ДанныеИБ = Неопределено;
Объект при его наличии идентифицируется и Не перезаписывается.
Не создается при отсутствии.
Если в процедуре указать только:
ПолученныеДанные = Неопределено;
То объект, при его наличии в базе приемнике, все равно перезаписывается, даже в случае не изменения реквизитов.
Конвертация данных, редакция 3.1 (3.1.2.8)
Решение:
В процедуре ПКО_Справочник_Контрагенты_Получение_ПередЗаписьюПолученныхД
ДанныеИБ = Неопределено;
Объект при его наличии идентифицируется и Не перезаписывается.
Не создается при отсутствии.
Если в процедуре указать только:
ПолученныеДанные = Неопределено;
То объект, при его наличии в базе приемнике, все равно перезаписывается, даже в случае не изменения реквизитов.
Конвертация данных, редакция 3.1 (3.1.2.8)
Если ДанныеИБ <> Неопределено Тогда
// Если валюта уже существует в базе,
// то не перезатираем ее данные.
ПолученныеДанные = Неопределено;
КонецЕсли;
Вот так в типовых правилах БП сделано в справочнике Валюты.
// Если валюта уже существует в базе,
// то не перезатираем ее данные.
ПолученныеДанные = Неопределено;
КонецЕсли;
Вот так в типовых правилах БП сделано в справочнике Валюты.
Здравствуйте. Подскажите пожалуйста.
Настроен типовой обмен между ЕРП и БП. Некоторые документы не нужно чтобы перегружались, например "Ведомость в банк", "Ведомость в кассу" и "Ведомость на счета".
Раньше делал это отключением регистрации в правилах регистрации на стороне ЕРП. Но почти при каждом обновлении эти правила требовалось актуализировать, плюс бывало, что после правки правил регистрации вообще зарегистрировалось много лишнего (по организациям не указанным для обмена). Наверняка что-то сам сделал не так, но суть в том, что хочу найти другой способ решения.
Все эти 3 документа в ЕРП грузятся в один документ в БП - "ВедомостьНаВыплатуЗарплаты".
В модуле "МенеджерОбменаЧерезУниверсальныйФормат13" через расширение заменил процедуру "ПКО_Документ_ВедомостьНаВыплатуЗарплаты_Получение_ПередЗапи сьюПолученныхДанных", на
&Вместо("ПКО_Документ_ВедомостьНаВыплатуЗарплаты_Получение_ПередЗапи сьюПолученныхДанных")
Процедура Расш_ПКО_Документ_ВедомостьНаВыплатуЗарплаты_Получение_Перед ЗаписьюПолученныхДанных(ПолученныеДанные, ДанныеИБ, КонвертацияСвойств, КомпонентыОбмена)
ПолученныеДанные = Неопределено; //не загружать объекты
КонецПроцедуры
Проверил на копии, и вроде бы оно корректно работает. Но есть сомнения. Прошу подсказать допустимо ли такое решение или нет. И что может пойти не так.
Знаю что похожий способ применяется для справочников, чтобы существующие не замещались, к примеру:
Если НЕ ДанныеИБ = Неопределено Тогда // Не замещать существующие объекты в приемнике при загрузке, а только создавать новые и заполнять их
ПолученныеДанные = Неопределено;
КонецЕсли;
Настроен типовой обмен между ЕРП и БП. Некоторые документы не нужно чтобы перегружались, например "Ведомость в банк", "Ведомость в кассу" и "Ведомость на счета".
Раньше делал это отключением регистрации в правилах регистрации на стороне ЕРП. Но почти при каждом обновлении эти правила требовалось актуализировать, плюс бывало, что после правки правил регистрации вообще зарегистрировалось много лишнего (по организациям не указанным для обмена). Наверняка что-то сам сделал не так, но суть в том, что хочу найти другой способ решения.
Все эти 3 документа в ЕРП грузятся в один документ в БП - "ВедомостьНаВыплатуЗарплаты".
В модуле "МенеджерОбменаЧерезУниверсальныйФормат13" через расширение заменил процедуру "ПКО_Документ_ВедомостьНаВыплатуЗарплаты_Получение_ПередЗапи
&Вместо("ПКО_Документ_ВедомостьНаВыплатуЗарплаты_Получение_ПередЗапи
Процедура Расш_ПКО_Документ_ВедомостьНаВыплатуЗарплаты_Получение_Перед
ПолученныеДанные = Неопределено; //не загружать объекты
КонецПроцедуры
Проверил на копии, и вроде бы оно корректно работает. Но есть сомнения. Прошу подсказать допустимо ли такое решение или нет. И что может пойти не так.
Знаю что похожий способ применяется для справочников, чтобы существующие не замещались, к примеру:
Если НЕ ДанныеИБ = Неопределено Тогда // Не замещать существующие объекты в приемнике при загрузке, а только создавать новые и заполнять их
ПолученныеДанные = Неопределено;
КонецЕсли;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот