Синхронизация УТ 11.4 и БП 3.0 - Контрагенты - электронная почта.

1. succub1_5 91 25.08.20 14:05 Сейчас в теме
Здравствуйте, собственно сабж: (все работает) НО если больше одного ящика, переносит только самый последний.
Например
1) в УТ добавили 2 ящика - в БП (был 1) в БП перенесся самый последний, затерся изначальный.
2) в БП этому же контрагенту добавили 1 который был, и еще один как в УТ. Теперь уже в УТ перенесся только 1 (самый последний).

WTF?
Вознаграждение за ответ
Показать полностью
Найденные решения
9. bill33 25.08.20 16:37 Сейчас в теме +1 $m
Теперь понятно,у меня просто этот реквизит бы без галки "несколько значений".
Придется менять правила загрузки в БП :
в модуле МенеджерОбменаЧерезУниверсальныйФормат13 есть процедура ЗаполнитьКонтактнуюИнформациюВПолученныхДанных(ПолученныеДанные, ДанныеXDTO) в ней используется процедура в конце
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ПолученныеДанные, СокрЛП(СтрокаXDTO.ЗначенияПолей), ТекВидКИ);
Надо поменять на :
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ПолученныеДанные, СокрЛП(СтрокаXDTO.ЗначенияПолей), ТекВидКИ, , Ложь);
Сейчас по умолчанию используется флаг Замещение и из за него перезаписывается конт. информация с одним типом и датой
succub1_5; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. succub1_5 91 25.08.20 14:16 Сейчас в теме
В файле выгрузки при этом все ящики.
3. vgv8 25.08.20 15:17 Сейчас в теме
4. succub1_5 91 25.08.20 15:20 Сейчас в теме
(3)адрес электронной почты
5. bill33 25.08.20 15:40 Сейчас в теме
В стандартной УТ на вкладке "Адрес,телефоны" только один реквизит подходящий : "Электронная почта". Я так понимаю добавили новый вид контактной информации? Если можно то покажите скрин карточки контрагента пожалуйста
succub1_5; +1 Ответить
6. succub1_5 91 25.08.20 15:50 Сейчас в теме
(5)Правила свежие (май 2020 года), типовые. В УТ/БП все ок, типовые. Только проблема с загрузкой нескольких ящиков у контрагентов. Выгружаются все, а загружается только последний.
Нужны правила, или что исправить в типовых?
С КД никогда не работал, всегда хватало правил/настроек типового обмена.
*Ну все вроде разжевал.
7. bill33 25.08.20 15:56 Сейчас в теме
Я в карточке контрагента вижу только один реквизит для ввода Электронной почты
Прикрепленные файлы:
succub1_5; +1 Ответить
8. succub1_5 91 25.08.20 16:25 Сейчас в теме
(7)Внизу кнопка
потом "Электронная почта" и можно добавлять сколько хочешь.
Прикрепленные файлы:
9. bill33 25.08.20 16:37 Сейчас в теме +1 $m
Теперь понятно,у меня просто этот реквизит бы без галки "несколько значений".
Придется менять правила загрузки в БП :
в модуле МенеджерОбменаЧерезУниверсальныйФормат13 есть процедура ЗаполнитьКонтактнуюИнформациюВПолученныхДанных(ПолученныеДанные, ДанныеXDTO) в ней используется процедура в конце
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ПолученныеДанные, СокрЛП(СтрокаXDTO.ЗначенияПолей), ТекВидКИ);
Надо поменять на :
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ПолученныеДанные, СокрЛП(СтрокаXDTO.ЗначенияПолей), ТекВидКИ, , Ложь);
Сейчас по умолчанию используется флаг Замещение и из за него перезаписывается конт. информация с одним типом и датой
succub1_5; +1 Ответить
10. succub1_5 91 26.08.20 09:43 Сейчас в теме
(9) Спасибо.
Для БП - сделал через расширение (&Вместо). Теперь если в УТ 2 ящика, а в БП 5 то после обмена в БП становится тоже 2 ящика, это лучше чем 1, но все еще не совсем то =)

Для УТ сделал аналогично: только
МенеджерОбменаЧерезУниверсальныйФормат - 
Процедура ЗагрузитьКонтактнуюИнформацию(ДанныеXDTO, ПолученныеДанные, ГруппаВидовКИ)

...
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ПолученныеДанные, СокрЛП(СтрокаXDTO.ЗначенияПолей), ТекВидКИ);


В Расширении:
&Вместо("ЗагрузитьКонтактнуюИнформацию")
Процедура Расш1_ЗагрузитьКонтактнуюИнформацию(ДанныеXDTO, ПолученныеДанные, ГруппаВидовКИ)
	Если Не (ДанныеXDTO.Свойство("КонтактнаяИнформация")
		И ЗначениеЗаполнено(ДанныеXDTO.КонтактнаяИнформация)) Тогда
		Возврат;
	КонецЕсли;
		
	Для Каждого СтрокаXDTO Из ДанныеXDTO.КонтактнаяИнформация Цикл
		ВидКИСтрокой   = СокрЛП(СтрокаXDTO.ВидКонтактнойИнформации.Значение);
		НаименованиеКИ = СокрЛП(СтрокаXDTO.НаименованиеКонтактнойИнформации);
		
		ТекВидКИ = ВидКонтактнойИнформацииИзСтроки(ВидКИСтрокой, НаименованиеКИ, ГруппаВидовКИ);
		
		Если Не ЗначениеЗаполнено(ТекВидКИ) Тогда
			Продолжить;
		КонецЕсли;
	
		УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ПолученныеДанные, СокрЛП(СтрокаXDTO.ЗначенияПолей), ТекВидКИ,,ЛОЖЬ);
	КонецЦикла;
КонецПроцедуры
Показать


Продебажил, процедура отрабатывает, в

Процедура ДобавитьКонтактнуюИнформацию(СсылкаИлиОбъект, ЗначениеИлиПредставление, ВидКонтактнойИнформации, Дата = Неопределено, Замещать = Истина) Экспорт

...

Если Замещать Тогда
		НайденныеСтроки = НайтиСтрокиКонтактнойИнформации(ВидКонтактнойИнформации, Дата, КонтактнаяИнформация);
		Для Каждого СтрокаТабличнойЧасти Из НайденныеСтроки Цикл
			КонтактнаяИнформация.Удалить(СтрокаТабличнойЧасти);
		КонецЦикла;
		СтрокаКонтактнойИнформации = КонтактнаяИнформация.Добавить();
	Иначе
		Если ЗапрещенВводНесколькихЗначений(ВидКонтактнойИнформации, КонтактнаяИнформация, Дата) Тогда
			Если ЭтоКонтактнаяИнформацияВXML Тогда
				СтрокаКонтактнойИнформации = Объект.КонтактнаяИнформация.Найти(ЗначениеИлиПредставление, "ЗначенияПолей");
			ИначеЕсли ЭтоКонтактнаяИнформацияВJSON Тогда
				СтрокаКонтактнойИнформации = Объект.КонтактнаяИнформация.Найти(ЗначениеИлиПредставление, "Значение");
			Иначе
				СтрокаКонтактнойИнформации = Объект.КонтактнаяИнформация.Найти(ЗначениеИлиПредставление, "Представление");
			КонецЕсли;
			Если СтрокаКонтактнойИнформации <> Неопределено Тогда
				Возврат; // Допускается только одно значение этого вида контактной информации.
			КонецЕсли;
		КонецЕсли;
		СтрокаКонтактнойИнформации = КонтактнаяИнформация.Добавить();
	КонецЕсли;
Показать


В Иначе заходит, НО всеравно только 1 ящик после обмена остается.
11. succub1_5 91 26.08.20 11:35 Сейчас в теме
(10)UPD.
Ящики все создаются, но чего-то не хватает - в самой карточке отображается только 1. Консолью запросов - выводит все.
14. succub1_5 91 26.08.20 14:18 Сейчас в теме
(10)UPD 2:
В УТ еще же Партнеры есть, так при обмене/синхронизации, разработчики зачем-то удаление/добавление в одном цикле сделали... (ну да быстрее же). В расширение добавил 2 процедуру:
&Вместо("ОтложеннаяОбработка_Контрагенты")
Процедура Расш1_ОтложеннаяОбработка_Контрагенты(Объект, КомпонентыОбмена, ОбъектМодифицирован)
...
//Для Каждого СтрокаКИКонтрагента Из Объект.КонтактнаяИнформация Цикл
		//	ВидКИПартнера = ВидКИПартнераПоВидуКИКонтрагента(СтрокаКИКонтрагента.Вид, ИспользоватьПартнеровКакКонтрагентов);
		//	Если ВидКИПартнера = Неопределено Тогда
		//		Продолжить;
		//	КонецЕсли;
		//	
		//	СтрокиКИПартнера = ПартнерОбъект.КонтактнаяИнформация.НайтиСтроки(Новый Структура("Вид", ВидКИПартнера));
		//	Для Каждого СтрокаКИПартнера Из СтрокиКИПартнера Цикл
		//		ПартнерОбъект.КонтактнаяИнформация.Удалить(СтрокаКИПартнера);
		//	КонецЦикла;
		//	
		//	СтрокаКИПартнера = ПартнерОбъект.КонтактнаяИнформация.Добавить();
		//	ЗаполнитьЗначенияСвойств(СтрокаКИПартнера, СтрокаКИКонтрагента);
		//	СтрокаКИПартнера.Вид = ВидКИПартнера;
		//КонецЦикла;
		
		//разделил - сперва все удалим 
		Для Каждого СтрокаКИКонтрагента Из Объект.КонтактнаяИнформация Цикл
			ВидКИПартнера = ВидКИПартнераПоВидуКИКонтрагента(СтрокаКИКонтрагента.Вид, ИспользоватьПартнеровКакКонтрагентов);
			Если ВидКИПартнера = Неопределено Тогда
				Продолжить;
			КонецЕсли;
			
			СтрокиКИПартнера = ПартнерОбъект.КонтактнаяИнформация.НайтиСтроки(Новый Структура("Вид", ВидКИПартнера));
			Для Каждого СтрокаКИПартнера Из СтрокиКИПартнера Цикл
				ПартнерОбъект.КонтактнаяИнформация.Удалить(СтрокаКИПартнера);
			КонецЦикла;
		КонецЦикла;
		
		//потом все добавим
		Для Каждого СтрокаКИКонтрагента Из Объект.КонтактнаяИнформация Цикл
			ВидКИПартнера = ВидКИПартнераПоВидуКИКонтрагента(СтрокаКИКонтрагента.Вид, ИспользоватьПартнеровКакКонтрагентов);
			Если ВидКИПартнера = Неопределено Тогда
				Продолжить;
			КонецЕсли;
			
			СтрокаКИПартнера = ПартнерОбъект.КонтактнаяИнформация.Добавить();
			ЗаполнитьЗначенияСвойств(СтрокаКИПартнера, СтрокаКИКонтрагента);
			СтрокаКИПартнера.Вид = ВидКИПартнера;
		КонецЦикла;
...
КонецПроцедуры
Показать


Теперь все работает как надо ;)

Еще раз bill33 спасибо за верное направление.
12. bill33 26.08.20 11:53 Сейчас в теме
Если в БП отображается только 1 почт. ящик. посмотрите стоит ли галка ?
Прикрепленные файлы:
succub1_5; +1 Ответить
13. succub1_5 91 26.08.20 12:21 Сейчас в теме
(12)Не, не, в БП то все ок. Это в УТ - консоль - все показывает, а в карточке 1 отображается.
*Если руками вбивать, то отобразятся только те какие руками вбили.
Разбираюсь в чем разница, между синхр. созданием и ручным...
15. bill33 26.08.20 14:26 Сейчас в теме
Странно, у меня в УТ все норм загружается, и видны все адреса
16. succub1_5 91 26.08.20 15:31 Сейчас в теме
17. bill33 26.08.20 16:39 Сейчас в теме
18. succub1_5 91 26.08.20 16:50 Сейчас в теме
(17)а процедура такая же? точнее алгоритм.
19. bill33 26.08.20 16:59 Сейчас в теме
(18) В процедуре ОтложеннаяОбработка_Контрагенты все по другому, процедура ДобавитьКонтактнуюИнформацию такая же
Оставьте свое сообщение

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