Добрый день коллеги,

подскажите пожалуйста в чем я ошибаюсь:

Есть некий документ, в которм согласно ИТС был добавлен функционал КИ.

Идея такова что при сохранении документа, в случае если было выбранно существующее физ лицо, то введенная в документе КИ должна обновить данные КИ в справочнике физ лиц. Но с самого начала я натыкаюсь на непреодолимые для себя препятствия, а именно:

1. При выборе существующего физ лица должна подтягиваться и его контактная информация. делаю следующим образом:

```1c
    ВидКИ = Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Электронная почта сотрудника");
    ТипКИ = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;

    ОбъектXDTOКИ = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOПоПредставлению("Test.User*post.com", ТипКИ);
    ЗначенияПолей = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOВXML(ОбъектXDTOКИ);
    УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(ЭтотОбъект, ЗначенияПолей, ВидКИ, ТипКИ);
```

Проверяю в отладчике, отрабатывает нормально, и в КИ Объекта данная КИ появляется, но во-первых она не отображается на форме, а во-творых исчезает после записи документа. Мистика...

2. Хорошо, есть и второй способ и даже более более правильный, с точки зрения прикладной логики, чем первый. Он заключается в том, чтобы воспользоваться штатной возможностью описанной там же на ИТС (Заполнение и редактирование контактной информации одного объекта в форме другого объекта). Звучит идеально, не надо ничего выдумывать всю информацию можно шататным методом и обновлять и вытягивать из справочника. Но и в этом случае, не все так гладко:
1. При выборе физ лица его КИ-таки отображаются. Но здесь, стоит отметить, что если я следую рекомендация с ИТС и в событии ПриЧтенииНаСервере ставлю штатный обработчик:

```1c
    // СтандартныеПодсистемы.КонтактнаяИнформация
    Если ЗначениеЗаполнено(ТекущийОбъект.ФизЛицо) Тогда
    ЗначениеВРеквизитФормы(ТекущийОбъект.ФизЛицо.ПолучитьОбъект(), "ФизическоеЛицо");
    КонецЕсли;
    УправлениеКонтактнойИнформацией.ПриЧтенииНаСервере(ЭтотОбъект, , "ГруппаКонтактнаяИнформацияФизическогоЛица");
    УправлениеКонтактнойИнформацией.ПриЧтенииНаСервере(ЭтотОбъект, Объект);
    // Конец СтандартныеПодсистемы.КонтактнаяИнформация
```

то выходит сообщение об ошибкеНедопустимое значение параметра (параметр номер '2')
{Документ.ДокТест.Форма.ФормаДокумента.Форма(182)}: ЗначениеВРеквизитФормы(ТекущийОбъект.ФизЛицо.ПолучитьОбъект(), "ФизическоеЛицо");

по причине:
Недопустимое значение параметра (параметр номер '2')
Поэтому пришлось сдселать такое вот изменение:

```1c
    // СтандартныеПодсистемы.КонтактнаяИнформация
    Если ЗначениеЗаполнено(ТекущийОбъект.ФизЛицо) Тогда
    //ЗначениеВРеквизитФормы(ТекущийОбъект.ФизЛицо.ПолучитьОбъект(), "ФизическоеЛицо");
    ЭтотОбъект.ФизическоеЛицо = ТекущийОбъект.ФизЛицо;
    //ЗначениеВРеквизитФормы(ТекущийОбъект.ФизЛицо.ПолучитьОбъект(), "ФизическоеЛицо");
    КонецЕсли;
    УправлениеКонтактнойИнформацией.ПриЧтенииНаСервере(ЭтотОбъект, , "ГруппаКонтактнаяИнформацияФизическогоЛица");
    УправлениеКонтактнойИнформацией.ПриЧтенииНаСервере(ЭтотОбъект, Объект);
    // Конец СтандартныеПодсистемы.КонтактнаяИнформация
```

Все заработало и данные в форму подтянулись, но
2. При попытке записать документ выходит ошибка:
{ОбщийМодуль.УправлениеКонтактнойИнформацией.Модуль(2025)}: Ошибка при вызове метода контекста (Очистить)
  Объект.КонтактнаяИнформация.Очистить();
по причине:
Объект недоступен для изменения.

При все при том что запись не заблокированна.

Прошу помощи, с уваженинем,
Максим
---
Вадим добрый день,

Спасибо за ваш ответ он заставил меня еще раз перечитать ИТС и свой код. Проблемма была в моей не внимательности. ИТС галсит
 создать реквизит формы ФизическоеЛицо с типом СправочникОбъект._ДемоФизическиеЛица, содержащий объект владельца редактируемой контактной информацией;
А у меня данный реквизит был СправочникСсылка

Проблемма решена, наилучшим способ, в котором обновление КИ Физ лиц, используемых в другом объекте происходит штатными, документированными методами БСП.

Спасибо,
С Уважением,
Максим
---
1. ЗначенияПолей - устаревший реквизит, используется только для обратной совместимости (если мы говорим об актуальных версиях БСП)
2. Контактную информацию лучше получать вызовом УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Ссылка, ВидКИ, Дата, ТолькоПредставление)
3. Процедура ЗаписатьКонтактнуюИнформацию обращается к ссылке на объект конфигурации, содержащий табличную часть контактная информация. В Вашем случае обращение идет к форме (ЭтотОбъект). Или речь идет об обычных формах?
4. С какой целью Вы используете ЗначениеВРеквизитФормы, если реквизит ссылочного типа? Получение объекта из ссылочного реквизита формы и преобразование его ссылки в другой реквизит формы выглядит... странно.
---
Вадим добрый день,

Спасибо за ваш ответ он заставил меня еще раз перечитать ИТС и свой код. Проблемма была в моей не внимательности. ИТС галсит
 создать реквизит формы ФизическоеЛицо с типом СправочникОбъект._ДемоФизическиеЛица, содержащий объект владельца редактируемой контактной информацией;
А у меня данный реквизит был СправочникСсылка

Проблемма решена, наилучшим способ, в котором обновление КИ Физ лиц, используемых в другом объекте происходит штатными, документированными методами БСП.

Спасибо,
С Уважением,
Максим