Найти в Дзене
Полезное и не очень*

Как программно изменить реквизиты документа: 1С Программирование

Оглавление

Такая задача возникает постоянно. Можно это делать внешней обработкой или внутри конфигурации. В целом алгоритм одинаковый.

Самый простой пример.

Картинка от нейросети Шедеврум
Картинка от нейросети Шедеврум

1. Получить документ

Выбираем все документы:

ДокументыДляИзменения = Документы.ПоступлениеВКассу.Выбрать();

Дальше в цикле надо обязательно получить документ, чтобы производить с ним любые манипуляции:

ТекДок = ДокументыДляИзменения.ПолучитьОбъект();

2. Изменить реквизиты

После того как получили документ устанавливаем нужный нам реквизит:

ТекДок.Контрагент = Объект.Контрагент;

Все изменения документов производят либо на сервере, либо в толстом клиенте.

3. Записать документ

После изменения документ надо обязательно записать в базу. И это надо сделать в режиме проведения, чтобы изменились движения по регистрам. Если они есть:

ТекДок.Записать(РежимЗаписиДокумента.Проведение);

Совет: для наглядности всегда лучше использовать метод Сообщить.

Например так: Сообщить("Изменен контрагент в документе " + ТекДок.Ссылка + ".Установлен " + ТекДок.Контрагент);

Пример кода из внешней обработки:

Пример кода из внешней обработки
Пример кода из внешней обработки

4. Подробное видео

Показал как можно это сделать во внешней обработке. В том числе с использованием таблицы значений в управляемой форме.