X
X
Xris2019-10-22 12:55:57
1C
Xris, 2019-10-22 12:55:57

How to write the CA rules for transferring counterparty contact information correctly?

How to write CA rules correctly for transferring counterparty contact information from Alfa-Auto (information register) to ERP (value table)? The Address data is filled in, but the Phone and E-mail are not. Where is the mistake?
CARRY algorithm code, used before processing

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

Запрос = Новый Запрос(
"ВЫБРАТЬ
|	КонтактнаяИнформация.Тип КАК Тип,
|	КонтактнаяИнформация.Вид КАК Вид,
|	КонтактнаяИнформация.Представление КАК Представление,
|	КонтактнаяИнформация.Поле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);
    ЗначенияПолей.Вставить("Комментарий",               СтрокаКИ.Комментарий);
    
  Иначе  
    
    ЗначенияПолей.Вставить("Представление",             СтрокаКИ.Представление);
    ЗначенияПолей.Вставить("Комментарий",               СтрокаКИ.Комментарий);
    
  КонецЕсли;
  
  Результат = "";
  Для Каждого КлючИЗначение Из ЗначенияПолей Цикл
    Если ПустаяСтрока(КлючИЗначение.Значение) Тогда
      Продолжить;
    КонецЕсли;
    Результат = Результат + ?(Результат = "", "", Символы.ПС)+ КлючИЗначение.Ключ + "=" + СтрЗаменить(КлючИЗначение.Значение, Символы.ПС, Символы.ПС + Символы.Таб);
  КонецЦикла;
  
  НоваяСтрокаКИ = КоллекцияОбъектов.Добавить();
  ЗаполнитьЗначенияСвойств(НоваяСтрокаКИ, СтрокаКИ);
  НоваяСтрокаКИ.ЗначенияПолей = Результат;
  
КонецЦикла;

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

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

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

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

5daefa75dccc1183171826.png

Answer the question

In order to leave comments, you need to log in

2 answer(s)
K
Konstantin, 2019-10-22
@Xris

The Address data is filled in, but the Phone and E-mail are not.

See what's in the rule for converting Types of Contact Information. As there the values ​​of transfer correspondence are described.
well, the code is also worth watching in tivy transfers.

D
dandykry, 2019-10-22
@dandykry

It is also not clear by what rule it will then be unloaded and how. This is not enough to help you.
My advice - take any model rules and steal from there. If my memory serves me right, then in the configurations, even in the common modules, all this is

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question