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