Как передать и установить ГУИД объекту при синхронизации данных по правилам обмена КД2
Настроена синхронизация данных между самописной базой (на базе УТ 10.3) и Бухгалтери 3.0.
Описание проблемы: В "Базе1" есть документ Инвойс, в табличной части данного документа собираются данные из документов "Поступление доп. расходов" из другой базы "База2", т. е. каждая строка - это отдельный документ, в каждой строке также содержится ГУИД этого документа из базы "База2".
Появилась необходимость передавать при синхронизации между базой "База1" и Бухгалтери 3.0 каждую строку из табличной части документа Инвойс в отдельный документ "ПоступлениеТоваровИУслуг". Как и где в правилах обмена в КД2 прописать передачу и присвоение новому объекту ГУИД, из строки табличной части.
Через параметры объекта не получается.
Описание проблемы: В "Базе1" есть документ Инвойс, в табличной части данного документа собираются данные из документов "Поступление доп. расходов" из другой базы "База2", т. е. каждая строка - это отдельный документ, в каждой строке также содержится ГУИД этого документа из базы "База2".
Появилась необходимость передавать при синхронизации между базой "База1" и Бухгалтери 3.0 каждую строку из табличной части документа Инвойс в отдельный документ "ПоступлениеТоваровИУслуг". Как и где в правилах обмена в КД2 прописать передачу и присвоение новому объекту ГУИД, из строки табличной части.
Через параметры объекта не получается.
По теме из базы знаний
Найденные решения
Вопрос решен.
Была ошибка в коде при записи свойств в XML.
Вот правильный код:
Теперь документы передаются и создаются с нужным ГУИД.
Спасибо пользователю Ivanov_OM
Была ошибка в коде при записи свойств в XML.
Вот правильный код:
ГУИД = ВходящиеДанные.ГУИД;
// Создаем узел "Ссылка"
УзелСсылкиXML = Новый ЗаписьXML;
УзелСсылкиXML.УстановитьСтроку();
УзелСсылкиXML.ЗаписатьНачалоЭлемента("Ссылка");
// Устанавливаем атрибут "Нпп"
СтрокаЗаписи = XMLСтрока(УзелСсылки);
УзелСсылкиXML.ЗаписатьАтрибут("Нпп", СтрокаЗаписи);
// Создаем узел "Свойство"
УзелСсылкиXML.ЗаписатьНачалоЭлемента("Свойство");
// Устанавливаем атрибут "Строка","Имя"
СтрокаЗаписи = XMLСтрока("Строка");
УзелСсылкиXML.ЗаписатьАтрибут("Тип", СтрокаЗаписи);
СтрокаЗаписи = XMLСтрока("{УникальныйИдентификатор}");
УзелСсылкиXML.ЗаписатьАтрибут("Имя", СтрокаЗаписи);
СтрокаЗаписи = XMLСтрока(ПКО.ТипИсточника);
УзелСсылкиXML.ЗаписатьАтрибут("ТипИсточника", СтрокаЗаписи);
СтрокаЗаписи = XMLСтрока(ПКО.ТипПриемника);
УзелСсылкиXML.ЗаписатьАтрибут("ТипПриемника", СтрокаЗаписи);
// Запишем "Значение" - ГУИД
УзелСсылкиXML.ЗаписатьНачалоЭлемента("Значение");
Стр = XMLСтрока(ГУИД);
УзелСсылкиXML.ЗаписатьТекст(Стр);
УзелСсылкиXML.ЗаписатьКонецЭлемента();
УзелСсылкиXML.ЗаписатьКонецЭлемента(); // Записать конец элемента "Свойство"
Если ТипЗнч(УзелСсылкиXML) <> Тип("Строка") Тогда
УзелСсылкиXML.ЗаписатьКонецЭлемента();
ИнформацияДляЗаписиВФайл = УзелСсылкиXML.Закрыть();
Иначе
ИнформацияДляЗаписиВФайл = УзелСсылкиXML;
КонецЕсли;
Приемник.ЗаписатьБезОбработки(ИнформацияДляЗаписиВФайл);
ПоказатьТеперь документы передаются и создаются с нужным ГУИД.
Спасибо пользователю Ivanov_OM
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) В Обработчике ПриВыгрузке.
У меня так перегружается Номенклатура, которая создается при обмене из другого справочника.
Обязательно снять флажок ПоискПоВнутреннемуИдентификатору.
У меня так перегружается Номенклатура, которая создается при обмене из другого справочника.
УзелСсылкиXML = СоздатьУзел("Ссылка");
УстановитьАтрибут(УзелСсылкиXML,"Нпп",НПП);
УзелГуид = ДобавитьУзел(УзелСсылкиXML,"Свойство");
УстановитьАтрибут(УзелГуид,"Тип","Строка");
УстановитьАтрибут(УзелГуид,"Имя","{УникальныйИдентификатор}");
одЗаписатьЭлемент(УзелГуид,"Значение", Источник.ЮС_УдалитьGUIDНоменклатуры);
УзелСсылкиXML.ЗаписатьКонецЭлемента();
УзелСсылкиXML.ЗаписатьКонецЭлемента();
УзелСсылки = УзелСсылкиXML.Закрыть();
ДобавитьПодчиненный(Приемник,УзелСсылки);
ПоказатьОбязательно снять флажок ПоискПоВнутреннемуИдентификатору.
В базе "Базе1" в документ инвойс собираются данные из многих документов из другой базы в табличную часть, где и присутствует исходный ГУИД, во его-то мне и нужно передавать в бухгалтерию в документ Поступление товаров и услуг. А вот если включить поля поиска, например контрагент, входящий номер и входящая дата, то документы передаются и создаются. А вот по ГУИД не создаются.
Обмен идет не через обработку УниверсальныйОбменДаннымиXML. Используется обработка ОбработчикиВыгрузкиВБухгалтерияПредприятия30 (как в УТ 10.3).
Флажок ПоискПоВнутреннемуИдентификатору снят. Сняты флаги поиска со всех реквизитов.
В обработчике "При выгрузке":
Но в сообщение обмена не прописывается свойство с уникальным идентификатором
Флажок ПоискПоВнутреннемуИдентификатору снят. Сняты флаги поиска со всех реквизитов.
В обработчике "При выгрузке":
ГУИД = ВходящиеДанные.ГУИД;
// Создаем узел "Ссылка"
УзелСсылкиXML = Новый ЗаписьXML;
УзелСсылкиXML.УстановитьСтроку();
УзелСсылкиXML.ЗаписатьНачалоЭлемента("Ссылка");
// Устанавливаем атрибут "Нпп"
СтрокаЗаписи = XMLСтрока(УзелСсылки);
УзелСсылкиXML.ЗаписатьАтрибут("Нпп", СтрокаЗаписи);
// Создаем узел "Свойство"
УзелГуид = Новый ЗаписьXML;
УзелГуид.УстановитьСтроку();
УзелГуид.ЗаписатьНачалоЭлемента("Свойство");
// Устанавливаем атрибут "Строка","Имя"
СтрокаЗаписи = XMLСтрока("Строка");
УзелГуид.ЗаписатьАтрибут("Тип", СтрокаЗаписи);
СтрокаЗаписи = XMLСтрока("{УникальныйИдентификатор}");
УзелГуид.ЗаписатьАтрибут("Имя", СтрокаЗаписи);
СтрокаЗаписи = XMLСтрока(ПКО.ТипИсточника);
УзелГуид.ЗаписатьАтрибут("ТипИсточника", СтрокаЗаписи);
СтрокаЗаписи = XMLСтрока(ПКО.ТипПриемника);
УзелГуид.ЗаписатьАтрибут("ТипПриемника", СтрокаЗаписи);
// Запишем "Значение" - ГУИД
УзелГуид.ЗаписатьНачалоЭлемента("Значение");
Стр = XMLСтрока(ГУИД);
УзелГуид.ЗаписатьТекст(Стр);
УзелГуид.ЗаписатьКонецЭлемента();
УзелГуид.ЗаписатьКонецЭлемента(); // Записать конец элемента "Свойство"
Если ТипЗнч(УзелСсылкиXML) <> Тип("Строка") Тогда
УзелСсылкиXML.ЗаписатьКонецЭлемента();
ИнформацияДляЗаписиВФайл = УзелСсылкиXML.Закрыть();
Иначе
ИнформацияДляЗаписиВФайл = УзелСсылкиXML;
КонецЕсли;
Приемник.ЗаписатьБезОбработки(ИнформацияДляЗаписиВФайл);
ПоказатьНо в сообщение обмена не прописывается свойство с уникальным идентификатором
Вопрос решен.
Была ошибка в коде при записи свойств в XML.
Вот правильный код:
Теперь документы передаются и создаются с нужным ГУИД.
Спасибо пользователю Ivanov_OM
Была ошибка в коде при записи свойств в XML.
Вот правильный код:
ГУИД = ВходящиеДанные.ГУИД;
// Создаем узел "Ссылка"
УзелСсылкиXML = Новый ЗаписьXML;
УзелСсылкиXML.УстановитьСтроку();
УзелСсылкиXML.ЗаписатьНачалоЭлемента("Ссылка");
// Устанавливаем атрибут "Нпп"
СтрокаЗаписи = XMLСтрока(УзелСсылки);
УзелСсылкиXML.ЗаписатьАтрибут("Нпп", СтрокаЗаписи);
// Создаем узел "Свойство"
УзелСсылкиXML.ЗаписатьНачалоЭлемента("Свойство");
// Устанавливаем атрибут "Строка","Имя"
СтрокаЗаписи = XMLСтрока("Строка");
УзелСсылкиXML.ЗаписатьАтрибут("Тип", СтрокаЗаписи);
СтрокаЗаписи = XMLСтрока("{УникальныйИдентификатор}");
УзелСсылкиXML.ЗаписатьАтрибут("Имя", СтрокаЗаписи);
СтрокаЗаписи = XMLСтрока(ПКО.ТипИсточника);
УзелСсылкиXML.ЗаписатьАтрибут("ТипИсточника", СтрокаЗаписи);
СтрокаЗаписи = XMLСтрока(ПКО.ТипПриемника);
УзелСсылкиXML.ЗаписатьАтрибут("ТипПриемника", СтрокаЗаписи);
// Запишем "Значение" - ГУИД
УзелСсылкиXML.ЗаписатьНачалоЭлемента("Значение");
Стр = XMLСтрока(ГУИД);
УзелСсылкиXML.ЗаписатьТекст(Стр);
УзелСсылкиXML.ЗаписатьКонецЭлемента();
УзелСсылкиXML.ЗаписатьКонецЭлемента(); // Записать конец элемента "Свойство"
Если ТипЗнч(УзелСсылкиXML) <> Тип("Строка") Тогда
УзелСсылкиXML.ЗаписатьКонецЭлемента();
ИнформацияДляЗаписиВФайл = УзелСсылкиXML.Закрыть();
Иначе
ИнформацияДляЗаписиВФайл = УзелСсылкиXML;
КонецЕсли;
Приемник.ЗаписатьБезОбработки(ИнформацияДляЗаписиВФайл);
ПоказатьТеперь документы передаются и создаются с нужным ГУИД.
Спасибо пользователю Ivanov_OM
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот