Конфигурация БП. Есть обработка печати конвертов. Проблема кроется вот в чем: При печати конверта не всегда обновлена информация об адресе контрагента. Знаю, что адрес можно подтянуть из функции заполнения данных по ИНН. Но! Бухгалтерия требует чтобы кроме адреса ничего не менялось в информации о контрагенте. Существует ли какая экспортная функция для обновления именно адресной информации. Помогите, подскажите с чего начать.
---
Выкрутился таким образом

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

```1c
    // Предназначена для получения контактной информации объекта на дату.
    //
    // Параметры:
    // Объект - Ссылка - владелец контактной информации.
    // ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации - вид контактной информации, который нужно получить.
    // Дата - Дата - необязательный, дата с которой действует запись контактной информации,
    // используется при хранении истории изменения контактной информации.
    // Если владелец хранит историю изменений, то при несоответствии параметра
    // дате будет вызвано исключение.
    //
    // Возвращаемое значение:
    // Структура - результат:
    // * Объект - Ссылка - владелец КИ.
    // * Вид - СправочникСсылка.ВидыКонтактнойИнформации
    // * Тип - ПеречислениеСсылка.ТипыКонтактнойИнформации
    // * ЗначенияПолей - Строка - данные значений полей XML.
    // * Значение - Строка - данные значений полей JSON.
    // * Представление - Строка - представление КИ.
    //
    Функция КонтактнаяИнформацияНаДату(Объект, ВидКонтактнойИнформации, Дата = Неопределено) Экспорт

    Объекты = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект);
    ВидыКонтактнойИнформации = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ВидКонтактнойИнформации);

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

    Если КонтактнаяИнформация.Количество() > 0 Тогда
    ЗаполнитьЗначенияСвойств(Результат, КонтактнаяИнформация[0]);
    КонецЕсли;

    Возврат Результат;

    КонецФункции
```
---
ну так вы сами нашли ответ на задачу, вот вам функция адрес из истории
---
Функция берет адрес из истории. А мне нужна процедура обновления адреса.
---
Выкрутился таким образом

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