Здравствуйте.
Есть задача, по автоматической замене электронных почтовых адресов контрагентов.

Для получения контактной информации, использовал функцию "УправлениеКонтактнойИнформацией":

```1c
    Спр = Справочники.Контрагенты.Выбрать();

    Пока Спр.Следующий() Цикл
    МойКонтрагент = Спр.ПолучитьОбъект();
    КонтИнформация = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(МойКонтрагент,",ТекущаяДата(),Ложь);
    ...
```

По итогу, должна быть таблица значений, но она возвращается пустой.
В чём моя ошибка?
---
Рабочий код, по замене адреса электронной почты во всём Справочники.Контрагенты.

```1c
    Спр = Справочники.Контрагенты.Выбрать();
    Пока Спр.Следующий() Цикл
    МойКонтрагент = Спр.ПолучитьОбъект();
    КонтИнформация = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(МойКонтрагент,,ТекущаяДата(),Ложь);
    Для каждого ТекСтрока ИЗ КонтИнформация Цикл
    Если Строка(ТекСтрока.Вид) = "Email" Тогда
    ТекЕмаил = ТекСтрока.Представление;
    НовыйЕмаил = "test@mail.ru";
    ТекСтрока.Представление = СтрЗаменить(ТекСтрока.Представление, ТекЕмаил, НовыйЕмаил);
    ТекСтрока.ЗначенияПолей = СтрЗаменить(ТекСтрока.ЗначенияПолей, ТекЕмаил, НовыйЕмаил);
    КонецЕсли;
    КонецЦикла;
    УправлениеКонтактнойИнформацией.УстановитьКонтактнуюИнформациюОбъекта(МойКонтрагент, КонтИнформация);
    МойКонтрагент.Записать();
    КонецЦикла;
```
---
Решение добавления контактной информации при её отсутствии.
(Заполнение адреса электронной почты)

```1c
    АдресЭП = "test@TEST.ru";
    Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
    Вид = Справочники.ВидыКонтактнойИнформации.EmailКонтрагенты;
    Представление = АдресЭП;
    ОбъектXDTOКИ = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOПоПредставлению(АдресЭП, Тип);
    ЗначенияПолей = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOВXML(ОбъектXDTOКИ);
    УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(МойКонтрагент, ЗначенияПолей, Вид, Тип);
```
---
Попробуйте так:

```1c
    КонтИнформация = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(МойКонтрагент,,ТекущаяДата(),Ложь);
```

Т.е. второй параметр оставлять пустым, а не передавать пустую строку.
---
Спасибо за подсказку.

Тогда следующий вопрос.

Используя "УправлениеКонтактнойИнформацией", как изменить только Email?

Посмотрел в конфигурации, в процедуре на клиенте обработка.

```1c
    &НаКлиенте
    Процедура Подключаемый_КонтактнаяИнформацияПриИзменении(Элемент)

    УправлениеКонтактнойИнформациейКлиент.НачатьИзменение(ЭтотОбъект, Элемент);

    УправлениеФормой(ЭтотОбъект);

    КонецПроцедуры
```

Моя обработка выполняется на сервере.
---
```1c
    УправлениеКонтактнойИнформацией.УстановитьКонтактнуюИнформациюОбъекта()
```

Т.е. вам нужно таблицу значений, полученную через КонтактнаяИнформацияОбъекта() обойти, изменить строки с Email и передать в качестве 2 параметра эту таблицу.
---
Спасибо, попробую и сообщу о результате.
---
Т.е. необходимо заменить все эл. почтовые адреса, во всех строках, а потом записать, я правильно понимаю?
А если нет контактной информации, как её создавать?
---
Рабочий код, по замене адреса электронной почты во всём Справочники.Контрагенты.

```1c
    Спр = Справочники.Контрагенты.Выбрать();
    Пока Спр.Следующий() Цикл
    МойКонтрагент = Спр.ПолучитьОбъект();
    КонтИнформация = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(МойКонтрагент,,ТекущаяДата(),Ложь);
    Для каждого ТекСтрока ИЗ КонтИнформация Цикл
    Если Строка(ТекСтрока.Вид) = "Email" Тогда
    ТекЕмаил = ТекСтрока.Представление;
    НовыйЕмаил = "test@mail.ru";
    ТекСтрока.Представление = СтрЗаменить(ТекСтрока.Представление, ТекЕмаил, НовыйЕмаил);
    ТекСтрока.ЗначенияПолей = СтрЗаменить(ТекСтрока.ЗначенияПолей, ТекЕмаил, НовыйЕмаил);
    КонецЕсли;
    КонецЦикла;
    УправлениеКонтактнойИнформацией.УстановитьКонтактнуюИнформациюОбъекта(МойКонтрагент, КонтИнформация);
    МойКонтрагент.Записать();
    КонецЦикла;
```
---
Здравствуйте.
Пытаюсь заполнить контактную информацию контрагента полученную из excel файла.

(Пока тренируюсь на e-mail.)
Код:

```1c
    НовыйЕмаил = "test@TEST.ru";
    тСхема = "<КонтактнаяИнформация xmlns="http://www.v8.1c.ru/ssl/contactinfo" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Представление="" + НовыйЕмаил + ""><Состав xsi:type="ЭлектроннаяПочта" Значение="" + НовыйЕмаил + ""/></КонтактнаяИнформация>";
    КонтИнформация = Новый ТаблицаЗначений;
    КонтИнформация.Колонки.Добавить("Тип");
    КонтИнформация.Колонки.Добавить("Вид");
    КонтИнформация.Колонки.Добавить("Представление");
    КонтИнформация.Колонки.Добавить("ЗначенияПолей");
    КонтИнформация.Колонки.Добавить("Значение");
    КонтИнформация.Колонки.Добавить("Дата");
    ТЗстр = КонтИнформация.Добавить();
    ТЗстр.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;//"Адрес электронной почты";
    ТЗстр.Вид = "Email";
    ТЗстр.Представление = НовыйЕмаил;
    ТЗстр.ЗначенияПолей = тСхема;
    ТЗстр.Значение = "{"value": "" + НовыйЕмаил + "","type": "АдресЭлектроннойПочты"}";
    ТЗстр.Дата = ТекущаяДата();

    УправлениеКонтактнойИнформацией.УстановитьКонтактнуюИнформациюОбъекта(МойКонтрагент, КонтИнформация);
```

Текст ошибки:
Значение не является значением объектного типа (РазрешитьВводНесколькихЗначений)
{ОбщийМодуль.УправлениеКонтактнойИнформациейСлужебный.Модуль(2340)}: Если ВидКонтактнойИнформации.РазрешитьВводНесколькихЗначений Тогда
{ОбщийМодуль.УправлениеКонтактнойИнформациейСлужебный.Модуль(2192)}: Если ЗапрещенВводНесколькихЗначений(СтрокаКонтактнойИнформацииОбъекта.Вид, Объект.КонтактнаяИнформация, СтрокаКонтактнойИнформацииОбъекта.Дата, ХранитьИсториюИзменений, ИдентификаторСтрокиТабличнойЧасти) Тогда
{ОбщийМодуль.УправлениеКонтактнойИнформацией.Модуль(430)}: УправлениеКонтактнойИнформациейСлужебный.УстановитьКонтактнуюИнформациюОбъекта(СсылкаИлиОбъект, КонтактнаяИнформация, ОбъектМетаданных, Замещать);
{ВнешняяОбработка.Тест.Форма.Форма.Форма(1228)}: УправлениеКонтактнойИнформацией.УстановитьКонтактнуюИнформациюОбъекта(МойКонтрагент, КонтИнформация);
{ВнешняяОбработка.Тест.Форма.Форма.Форма(1255)}: ЗаполнитьЕПочтуНаСервере();

Что я делаю не так и есть ли более простой способ?
---
Решение добавления контактной информации при её отсутствии.
(Заполнение адреса электронной почты)

```1c
    АдресЭП = "test@TEST.ru";
    Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
    Вид = Справочники.ВидыКонтактнойИнформации.EmailКонтрагенты;
    Представление = АдресЭП;
    ОбъектXDTOКИ = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOПоПредставлению(АдресЭП, Тип);
    ЗначенияПолей = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOВXML(ОбъектXDTOКИ);
    УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(МойКонтрагент, ЗначенияПолей, Вид, Тип);
```