Настройка правила обмена КД_3 для справочника Контрагенты из НСИ в ERP

1. Stanislav1993 21.01.20 12:46 Сейчас в теме
Добрый день!
В НСИ в карточке контрагента на вкладке Контактная информация вношу зарубежный адрес (юридический, адрес отгрузки, фактический), ставлю галку "на английском языке", выбираю страну Китай, она встает как CHINA, довношу адрес. Потом сохраняю карточку, проверяю в ERP, как пришел адрес. Страна пришла ГОНКОНГ, причем на русском языке. По задаче нужно сделать, чтобы, во-первых, приходила страна CHINA, и, во-вторых, чтобы в представлении адреса она вообще не отображалась, так как адресная строка уже содержит в себе все необходимые данные, включая страну, то есть по иностранным контрагентам также необходимо привести представление адреса в ERP к полному соответствию представления адреса в НСИ. Скрины прилагаю.
Подскажите пож-та.

Алгоритм конвертации
ПодготовитьДанныеКонтактнаяИнформация


КоллекцияОбъектов = Новый ТаблицаЗначений;
КоллекцияОбъектов.Колонки.Добавить("Тип");
КоллекцияОбъектов.Колонки.Добавить("ВидКонтактнойИнформации");
КоллекцияОбъектов.Колонки.Добавить("НаименованиеКонтактнойИнформации");
КоллекцияОбъектов.Колонки.Добавить("Представление");
КоллекцияОбъектов.Колонки.Добавить("ЗначенияПолей");
КоллекцияОбъектов.Колонки.Добавить("Страна");
КоллекцияОбъектов.Колонки.Добавить("Регион");
КоллекцияОбъектов.Колонки.Добавить("Город");
КоллекцияОбъектов.Колонки.Добавить("АдресЭП");
КоллекцияОбъектов.Колонки.Добавить("ДоменноеИмяСервера");
КоллекцияОбъектов.Колонки.Добавить("НомерТелефона");
КоллекцияОбъектов.Колонки.Добавить("НомерТелефонаБезКодов");
	
Запрос = Новый Запрос("
|ВЫБРАТЬ
|	ВЫБОР
|		КОГДА НЕ ВЫРАЗИТЬ(КонтактнаяИнформация.Объект КАК Справочник.Контрагенты).КЗ_СтранаРезидентства.Наименование ЕСТЬ NULL
|			ТОГДА ВЫБОР
|					КОГДА НЕ КонтактнаяИнформация.Представление ПОДОБНО ""%"" + ВЫРАЗИТЬ(КонтактнаяИнформация.Объект КАК Справочник.Контрагенты).КЗ_СтранаРезидентства.Наименование + ""%""
|						ТОГДА ВЫРАЗИТЬ(КонтактнаяИнформация.Объект КАК Справочник.Контрагенты).КЗ_СтранаРезидентства.Наименование
|				КОНЕЦ
|	КОНЕЦ КАК СтранаНаРусском,
|	КонтактнаяИнформация.Тип КАК Тип,
|	КонтактнаяИнформация.Вид КАК ВидКонтактнойИнформации,
|	КонтактнаяИнформация.Вид.Наименование КАК НаименованиеКонтактнойИнформации,
|	КонтактнаяИнформация.Представление КАК Представление,
|	КонтактнаяИнформация.Поле1,
|	КонтактнаяИнформация.Поле2,
|	КонтактнаяИнформация.Поле3,
|	КонтактнаяИнформация.Поле4,
|	КонтактнаяИнформация.Поле5,
|	КонтактнаяИнформация.Поле6,
|	КонтактнаяИнформация.Поле7,
|	КонтактнаяИнформация.Поле8,
|	КонтактнаяИнформация.Поле9,
|	КонтактнаяИнформация.Поле10,
|	КонтактнаяИнформация.ТипДома,
|	КонтактнаяИнформация.ТипКорпуса,
|	КонтактнаяИнформация.ТипКвартиры,
|	КонтактнаяИнформация.Комментарий
|ИЗ
|	РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|			ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлассификаторСтранМира КАК КлассификаторСтранМира
|			ПО (КонтактнаяИнформация.Поле2 ПОДОБНО ""%"" + КлассификаторСтранМира.Наименование + ""%"")
|  ГДЕ КонтактнаяИнформация.Объект = &Контрагент");
Запрос.УстановитьПараметр("Контрагент", ДанныеИБ.Ссылка);

СтрокиКИ = Запрос.Выполнить().Выгрузить();
Для Каждого СтрокаКИ Из СтрокиКИ Цикл
	ТипКИ = СтрокаКИ.Тип;
	
	СвойстваВидаКИ = СтрокаКИ.ВидКонтактнойИнформации;
	
	Если СвойстваВидаКИ.Предопределенный Тогда 
		
		ВидКонтактнойИнформацииКИ = СвойстваВидаКИ;
		
	Иначе
		
		// Получение наименования значения перечисления.
		ИндексТипаКИ = Перечисления.ТипыКонтактнойИнформации.Индекс(СвойстваВидаКИ.Тип);
		ИмяТипаКИ = Метаданные.Перечисления.ТипыКонтактнойИнформации.ЗначенияПеречисления[ИндексТипаКИ].Имя;
		
		ВидКонтактнойИнформацииКИ = "ПользовательскаяКИ" + ИмяТипаКИ;
	КонецЕсли;
	
	//ПредопределенныеДанные
		
	Если ВидКонтактнойИнформацииКИ = "ПользовательскаяКИАдрес" и СтрокаКИ.НаименованиеКонтактнойИнформации = "Почтовый адрес" Тогда 
		ВидКонтактнойИнформацииКИ = Справочники.ВидыКонтактнойИнформации.БИТ_СТ_ГМКФактическийАдрес;
	КонецЕсли;
	Если ВидКонтактнойИнформацииКИ = "ПользовательскаяКИАдрес" и СтрокаКИ.НаименованиеКонтактнойИнформации = "ГМК Фактический адрес" Тогда 
		ВидКонтактнойИнформацииКИ = Справочники.ВидыКонтактнойИнформации.БИТ_СТ_ГМКФактическийАдрес;
	КонецЕсли;

	Если ВидКонтактнойИнформацииКИ = "ПользовательскаяКИТелефон" и СтрокаКИ.НаименованиеКонтактнойИнформации = "ГМК Телефоны" Тогда 
		ВидКонтактнойИнформацииКИ = Справочники.ВидыКонтактнойИнформации.БИТ_СТ_ГМКТелефоны;
	КонецЕсли;

	Если ВидКонтактнойИнформацииКИ = "ПользовательскаяКИАдресЭлектроннойПочты" и СтрокаКИ.НаименованиеКонтактнойИнформации = "ГМК Электронный адрес" Тогда 
		ВидКонтактнойИнформацииКИ = Справочники.ВидыКонтактнойИнформации.БИТ_СТ_ГМКЭлектронныйАдрес;
	КонецЕсли;
	Если ВидКонтактнойИнформацииКИ = "ПользовательскаяКИВебСтраница" и СтрокаКИ.НаименованиеКонтактнойИнформации = "Сайт" Тогда 
		ВидКонтактнойИнформацииКИ = Справочники.ВидыКонтактнойИнформации.БИТ_СТ_ГМКСайт;
	КонецЕсли;

	Если ЗначениеЗаполнено(ВидКонтактнойИнформацииКИ) И ЗначениеЗаполнено(СтрокаКИ.Представление) Тогда
	
		ЗначенияПолей = Новый СписокЗначений;
		ЗначенияПолей.Добавить(СтрокаКИ.Представление, "Представление");
		Если СтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда
			ЗначенияПолей.Добавить(СтрокаКИ.Поле1, "Индекс");
			ЗначенияПолей.Добавить(СтрокаКИ.Поле2, "Регион");
			ЗначенияПолей.Добавить(СтрокаКИ.Поле3, "Район");
			ЗначенияПолей.Добавить(СтрокаКИ.Поле4, "Город");
			ЗначенияПолей.Добавить(СтрокаКИ.Поле5, "НаселенныйПункт");
			ЗначенияПолей.Добавить(СтрокаКИ.Поле6, "Улица");
			ЗначенияПолей.Добавить(СтрокаКИ.Поле7, "Дом");
			ЗначенияПолей.Добавить(СтрокаКИ.Поле8, "Корпус");
			ЗначенияПолей.Добавить(СтрокаКИ.Поле9, "Квартира");
			ЗначенияПолей.Добавить(СтрокаКИ.ТипДома, "ТипДома");
			ЗначенияПолей.Добавить(СтрокаКИ.ТипКорпуса, "ТипКорпуса");
			ЗначенияПолей.Добавить(СтрокаКИ.ТипКвартиры, "ТипКвартиры");
		ИначеЕсли СтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
			ЗначенияПолей.Добавить(СтрокаКИ.Поле1, "КодСтраны");
			ЗначенияПолей.Добавить(СтрокаКИ.Поле2, "КодГорода");
			ЗначенияПолей.Добавить(СтрокаКИ.Поле3, "НомерТелефона");
			ЗначенияПолей.Добавить(СтрокаКИ.Поле4, "Добавочный");
			ЗначенияПолей.Добавить(СтрокаКИ.Поле5, "Комментарий");
		КонецЕсли;
	
		НоваяСтрокаКИ = КоллекцияОбъектов.Добавить();
						
		НоваяСтрокаКИ.НаименованиеКонтактнойИнформации = СтрокаКИ.НаименованиеКонтактнойИнформации;
		
		НоваяСтрокаКИ.ВидКонтактнойИнформации = ВидКонтактнойИнформацииКИ;
		
		НоваяСтрокаКИ.Страна = СтрокаКИ.СтранаНаРусском;
		
		Если СтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес И ЗначениеЗаполнено(СтрокаКИ.СтранаНаРусском) И НРег(СтрокаКИ.СтранаНаРусском) <> "россия" Тогда
			НоваяСтрокаКИ.Представление = СтрокаКИ.СтранаНаРусском + ", " + СтрокаКИ.Представление;
		Иначе 
			НоваяСтрокаКИ.Представление = СтрокаКИ.Представление;
		КонецЕсли;	
		 
		НоваяСтрокаКИ.ЗначенияПолей = ПреобразоватьСписокПолейВСтроку(ЗначенияПолей);
		
	КонецЕсли;	
	
КонецЦикла;

КоллекцияОбъектов = КоллекцияОбъектов.Скопировать(,"ВидКонтактнойИнформации, НаименованиеКонтактнойИнформации, Представление, ЗначенияПолей, Страна");

ДанныеXDTO.Вставить("КонтактнаяИнформация", КоллекцияОбъектов);

Показать
Прикрепленные файлы:
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение

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