@Xris

Как правильно написать правила КД по переносу контактной информации контрагента?

Как правильно написать правила КД по переносу контактной информации контрагента из Альфа-Авто (регистр сведений) в ERP (таблица значений)? Данные Адреса заполняются, а вот Телефон и Электронная почта нет. В чем ошибка?

Код алгоритма ПереносКИ, используется перед обработкой
КоллекцияОбъектов = Новый ТаблицаЗначений;
КоллекцияОбъектов.Колонки.Добавить("Тип");
КоллекцияОбъектов.Колонки.Добавить("Вид");
КоллекцияОбъектов.Колонки.Добавить("Представление");
КоллекцияОбъектов.Колонки.Добавить("ЗначенияПолей");
КоллекцияОбъектов.Колонки.Добавить("Страна");
КоллекцияОбъектов.Колонки.Добавить("Регион");
КоллекцияОбъектов.Колонки.Добавить("Город");
КоллекцияОбъектов.Колонки.Добавить("АдресЭП");
КоллекцияОбъектов.Колонки.Добавить("ДоменноеИмяСервера");
КоллекцияОбъектов.Колонки.Добавить("НомерТелефона");
КоллекцияОбъектов.Колонки.Добавить("НомерТелефонаБезКодов");

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

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


Алгоритм "КонтактнаяИнформация_ПослеЗагрузки"

ОбъектМодифицирован = Истина;

ДанныеЗаполнения = УправлениеКонтактнойИнформацией.НоваяКонтактнаяИнформация(Ложь);

Для Каждого КИ Из Объект.КонтактнаяИнформация Цикл
	СтрокаЗаполнения = ДанныеЗаполнения.Добавить();
	СтрокаЗаполнения.Вид			= КИ.Вид;
	СтрокаЗаполнения.Тип			= КИ.Тип;
	СтрокаЗаполнения.ЗначенияПолей  = КИ.ЗначенияПолей;
	СтрокаЗаполнения.Представление  = КИ.Представление;
	//СтрокаЗаполнения.Значение 	    = КИ.Значение;
КонецЦикла;

Попытка
	УправлениеКонтактнойИнформацией.УстановитьКонтактнуюИнформациюОбъекта(Объект, ДанныеЗаполнения);
Исключение
КонецПопытки;


5daefa75dccc1183171826.png
  • Вопрос задан
  • 914 просмотров
Решения вопроса 1
fosihas
@fosihas
Автоматизации учета на 1С.
Данные Адреса заполняются, а вот Телефон и Электронная почта нет.

смотрите что в правиле конвертации ВидыКонтактнойИнформации. Как там описаны значения соответствия переноса.
5daf43412780c227932840.png

ну и кодглядет в тивых переносах тоже стоит.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dandykry
Так ж непонятно по какому правилу потом выгружаться будет и как. Этого недостаточно, чтобы вам помочь.
Мой совет - возьмите любые типовые правила и своруйте оттуда. Если память мне не изменяет, то в конфигурациях даже в общих модулях все это есть
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы