Синхронизация УТ 11.4 и БП 3.0 - Контрагенты - электронная почта.
Здравствуйте, собственно сабж: (все работает) НО если больше одного ящика, переносит только самый последний.
Например
1) в УТ добавили 2 ящика - в БП (был 1) в БП перенесся самый последний, затерся изначальный.
2) в БП этому же контрагенту добавили 1 который был, и еще один как в УТ. Теперь уже в УТ перенесся только 1 (самый последний).
WTF?
Например
1) в УТ добавили 2 ящика - в БП (был 1) в БП перенесся самый последний, затерся изначальный.
2) в БП этому же контрагенту добавили 1 который был, и еще один как в УТ. Теперь уже в УТ перенесся только 1 (самый последний).
WTF?
Найденные решения
Теперь понятно,у меня просто этот реквизит бы без галки "несколько значений".
Придется менять правила загрузки в БП :
в модуле МенеджерОбменаЧерезУниверсальныйФормат13 есть процедура ЗаполнитьКонтактнуюИнформациюВПолученныхДанных(ПолученныеДанные, ДанныеXDTO) в ней используется процедура в конце
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ПолученныеДанные, СокрЛП(СтрокаXDTO.ЗначенияПолей), ТекВидКИ);
Надо поменять на :
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ПолученныеДанные, СокрЛП(СтрокаXDTO.ЗначенияПолей), ТекВидКИ, , Ложь);
Сейчас по умолчанию используется флаг Замещение и из за него перезаписывается конт. информация с одним типом и датой
Придется менять правила загрузки в БП :
в модуле МенеджерОбменаЧерезУниверсальныйФормат13 есть процедура ЗаполнитьКонтактнуюИнформациюВПолученныхДанных(ПолученныеДанные, ДанныеXDTO) в ней используется процедура в конце
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ПолученныеДанные, СокрЛП(СтрокаXDTO.ЗначенияПолей), ТекВидКИ);
Надо поменять на :
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ПолученныеДанные, СокрЛП(СтрокаXDTO.ЗначенияПолей), ТекВидКИ, , Ложь);
Сейчас по умолчанию используется флаг Замещение и из за него перезаписывается конт. информация с одним типом и датой
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
В стандартной УТ на вкладке "Адрес,телефоны" только один реквизит подходящий : "Электронная почта". Я так понимаю добавили новый вид контактной информации? Если можно то покажите скрин карточки контрагента пожалуйста
(5)Правила свежие (май 2020 года), типовые. В УТ/БП все ок, типовые. Только проблема с загрузкой нескольких ящиков у контрагентов. Выгружаются все, а загружается только последний.
Нужны правила, или что исправить в типовых?
С КД никогда не работал, всегда хватало правил/настроек типового обмена.
*Ну все вроде разжевал.
Нужны правила, или что исправить в типовых?
С КД никогда не работал, всегда хватало правил/настроек типового обмена.
*Ну все вроде разжевал.
Теперь понятно,у меня просто этот реквизит бы без галки "несколько значений".
Придется менять правила загрузки в БП :
в модуле МенеджерОбменаЧерезУниверсальныйФормат13 есть процедура ЗаполнитьКонтактнуюИнформациюВПолученныхДанных(ПолученныеДанные, ДанныеXDTO) в ней используется процедура в конце
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ПолученныеДанные, СокрЛП(СтрокаXDTO.ЗначенияПолей), ТекВидКИ);
Надо поменять на :
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ПолученныеДанные, СокрЛП(СтрокаXDTO.ЗначенияПолей), ТекВидКИ, , Ложь);
Сейчас по умолчанию используется флаг Замещение и из за него перезаписывается конт. информация с одним типом и датой
Придется менять правила загрузки в БП :
в модуле МенеджерОбменаЧерезУниверсальныйФормат13 есть процедура ЗаполнитьКонтактнуюИнформациюВПолученныхДанных(ПолученныеДанные, ДанныеXDTO) в ней используется процедура в конце
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ПолученныеДанные, СокрЛП(СтрокаXDTO.ЗначенияПолей), ТекВидКИ);
Надо поменять на :
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ПолученныеДанные, СокрЛП(СтрокаXDTO.ЗначенияПолей), ТекВидКИ, , Ложь);
Сейчас по умолчанию используется флаг Замещение и из за него перезаписывается конт. информация с одним типом и датой
(9) Спасибо.
Для БП - сделал через расширение (&Вместо). Теперь если в УТ 2 ящика, а в БП 5 то после обмена в БП становится тоже 2 ящика, это лучше чем 1, но все еще не совсем то =)
Для УТ сделал аналогично: только
В Расширении:
Продебажил, процедура отрабатывает, в
В Иначе заходит, НО всеравно только 1 ящик после обмена остается.
Для БП - сделал через расширение (&Вместо). Теперь если в УТ 2 ящика, а в БП 5 то после обмена в БП становится тоже 2 ящика, это лучше чем 1, но все еще не совсем то =)
Для УТ сделал аналогично: только
МенеджерОбменаЧерезУниверсальныйФормат -
Процедура ЗагрузитьКонтактнуюИнформацию(ДанныеXDTO, ПолученныеДанные, ГруппаВидовКИ)
...
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ПолученныеДанные, СокрЛП(СтрокаXDTO.ЗначенияПолей), ТекВидКИ);
В Расширении:
&Вместо("ЗагрузитьКонтактнуюИнформацию")
Процедура Расш1_ЗагрузитьКонтактнуюИнформацию(ДанныеXDTO, ПолученныеДанные, ГруппаВидовКИ)
Если Не (ДанныеXDTO.Свойство("КонтактнаяИнформация")
И ЗначениеЗаполнено(ДанныеXDTO.КонтактнаяИнформация)) Тогда
Возврат;
КонецЕсли;
Для Каждого СтрокаXDTO Из ДанныеXDTO.КонтактнаяИнформация Цикл
ВидКИСтрокой = СокрЛП(СтрокаXDTO.ВидКонтактнойИнформации.Значение);
НаименованиеКИ = СокрЛП(СтрокаXDTO.НаименованиеКонтактнойИнформации);
ТекВидКИ = ВидКонтактнойИнформацииИзСтроки(ВидКИСтрокой, НаименованиеКИ, ГруппаВидовКИ);
Если Не ЗначениеЗаполнено(ТекВидКИ) Тогда
Продолжить;
КонецЕсли;
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ПолученныеДанные, СокрЛП(СтрокаXDTO.ЗначенияПолей), ТекВидКИ,,ЛОЖЬ);
КонецЦикла;
КонецПроцедуры
ПоказатьПродебажил, процедура отрабатывает, в
Процедура ДобавитьКонтактнуюИнформацию(СсылкаИлиОбъект, ЗначениеИлиПредставление, ВидКонтактнойИнформации, Дата = Неопределено, Замещать = Истина) Экспорт
...
Если Замещать Тогда
НайденныеСтроки = НайтиСтрокиКонтактнойИнформации(ВидКонтактнойИнформации, Дата, КонтактнаяИнформация);
Для Каждого СтрокаТабличнойЧасти Из НайденныеСтроки Цикл
КонтактнаяИнформация.Удалить(СтрокаТабличнойЧасти);
КонецЦикла;
СтрокаКонтактнойИнформации = КонтактнаяИнформация.Добавить();
Иначе
Если ЗапрещенВводНесколькихЗначений(ВидКонтактнойИнформации, КонтактнаяИнформация, Дата) Тогда
Если ЭтоКонтактнаяИнформацияВXML Тогда
СтрокаКонтактнойИнформации = Объект.КонтактнаяИнформация.Найти(ЗначениеИлиПредставление, "ЗначенияПолей");
ИначеЕсли ЭтоКонтактнаяИнформацияВJSON Тогда
СтрокаКонтактнойИнформации = Объект.КонтактнаяИнформация.Найти(ЗначениеИлиПредставление, "Значение");
Иначе
СтрокаКонтактнойИнформации = Объект.КонтактнаяИнформация.Найти(ЗначениеИлиПредставление, "Представление");
КонецЕсли;
Если СтрокаКонтактнойИнформации <> Неопределено Тогда
Возврат; // Допускается только одно значение этого вида контактной информации.
КонецЕсли;
КонецЕсли;
СтрокаКонтактнойИнформации = КонтактнаяИнформация.Добавить();
КонецЕсли;
ПоказатьВ Иначе заходит, НО всеравно только 1 ящик после обмена остается.
(10)UPD 2:
В УТ еще же Партнеры есть, так при обмене/синхронизации, разработчики зачем-то удаление/добавление в одном цикле сделали... (ну да быстрее же). В расширение добавил 2 процедуру:
Теперь все работает как надо ;)
Еще раз bill33 спасибо за верное направление.
В УТ еще же Партнеры есть, так при обмене/синхронизации, разработчики зачем-то удаление/добавление в одном цикле сделали... (ну да быстрее же). В расширение добавил 2 процедуру:
&Вместо("ОтложеннаяОбработка_Контрагенты")
Процедура Расш1_ОтложеннаяОбработка_Контрагенты(Объект, КомпонентыОбмена, ОбъектМодифицирован)
...
//Для Каждого СтрокаКИКонтрагента Из Объект.КонтактнаяИнформация Цикл
// ВидКИПартнера = ВидКИПартнераПоВидуКИКонтрагента(СтрокаКИКонтрагента.Вид, ИспользоватьПартнеровКакКонтрагентов);
// Если ВидКИПартнера = Неопределено Тогда
// Продолжить;
// КонецЕсли;
//
// СтрокиКИПартнера = ПартнерОбъект.КонтактнаяИнформация.НайтиСтроки(Новый Структура("Вид", ВидКИПартнера));
// Для Каждого СтрокаКИПартнера Из СтрокиКИПартнера Цикл
// ПартнерОбъект.КонтактнаяИнформация.Удалить(СтрокаКИПартнера);
// КонецЦикла;
//
// СтрокаКИПартнера = ПартнерОбъект.КонтактнаяИнформация.Добавить();
// ЗаполнитьЗначенияСвойств(СтрокаКИПартнера, СтрокаКИКонтрагента);
// СтрокаКИПартнера.Вид = ВидКИПартнера;
//КонецЦикла;
//разделил - сперва все удалим
Для Каждого СтрокаКИКонтрагента Из Объект.КонтактнаяИнформация Цикл
ВидКИПартнера = ВидКИПартнераПоВидуКИКонтрагента(СтрокаКИКонтрагента.Вид, ИспользоватьПартнеровКакКонтрагентов);
Если ВидКИПартнера = Неопределено Тогда
Продолжить;
КонецЕсли;
СтрокиКИПартнера = ПартнерОбъект.КонтактнаяИнформация.НайтиСтроки(Новый Структура("Вид", ВидКИПартнера));
Для Каждого СтрокаКИПартнера Из СтрокиКИПартнера Цикл
ПартнерОбъект.КонтактнаяИнформация.Удалить(СтрокаКИПартнера);
КонецЦикла;
КонецЦикла;
//потом все добавим
Для Каждого СтрокаКИКонтрагента Из Объект.КонтактнаяИнформация Цикл
ВидКИПартнера = ВидКИПартнераПоВидуКИКонтрагента(СтрокаКИКонтрагента.Вид, ИспользоватьПартнеровКакКонтрагентов);
Если ВидКИПартнера = Неопределено Тогда
Продолжить;
КонецЕсли;
СтрокаКИПартнера = ПартнерОбъект.КонтактнаяИнформация.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаКИПартнера, СтрокаКИКонтрагента);
СтрокаКИПартнера.Вид = ВидКИПартнера;
КонецЦикла;
...
КонецПроцедуры
ПоказатьТеперь все работает как надо ;)
Еще раз bill33 спасибо за верное направление.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот