Как массово добавить или изменить e-mail у контрагентов в 1С:Бухгалтерия?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия
← На главную

При работе в 1С:Бухгалтерия 3.0 пользователи часто сталкиваются с задачей массового обновления контактной информации. Возникает вопрос: почему стандартная обработка Групповое изменение реквизитов не позволяет просто вписать e-mail в карточку контрагента? Давайте разберем, как устроена система хранения контактных данных и как решить эту задачу правильно.

Почему не работает «Групповое изменение реквизитов»?

Основная причина кроется в архитектуре 1С:Предприятие 8.3. Контактная информация в современных конфигурациях не хранится в виде простого текстового поля в справочнике Контрагенты. Эти данные записываются в специализированный регистр сведений КонтактнаяИнформация, а в самом объекте хранится лишь служебное представление данных, часто сформированное в формате JSON или XML.

Когда вы пытаетесь изменить «электронный адрес» через стандартную обработку, система не понимает контекста — какой это тип адреса, как он связан с регистром и какой Вид контактной информации используется. Попытка прямой записи в служебное поле приводит к тому, что изменения либо игнорируются, либо не отображаются в карточке.

Решение через программную обработку

Для корректной записи данных необходимо использовать процедуры Библиотеки стандартных подсистем (БСП). Мы можем создать внешнюю обработку или воспользоваться функцией Выполнить произвольный алгоритм в Групповом изменении реквизитов.

Вариант 1: Использование кода в «Групповом изменении реквизитов»

Если вам нужно быстро внести адрес для списка выбранных контрагентов, выполните следующие шаги:

  1. Откройте Групповое изменение реквизитов.
  2. Выберите справочник Контрагенты и установите отбор (например, только для выбранных позиций).
  3. В дополнительных параметрах установите галочку Показывать служебные реквизиты.
  4. Выберите пункт Выполнить произвольный алгоритм.
  5. Вставьте следующий код:

ЭлПочта = "ваш_email@example.com"; 
Вид = Справочники.ВидыКонтактнойИнформации.EmailКонтрагенты; 
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(Объект, ЭлПочта, Вид, ТекущаяДата(), Истина); 
Объект.Записать();

Важно: Перед выполнением кода обязательно сделайте резервную копию базы данных. Массовое изменение данных — это ответственная операция.

Вариант 2: Использование внешней обработки

Для более сложных задач, где требуется массовая обработка больших объемов данных, лучше создать отдельную обработку. Давайте разберем пример серверного кода, который перебирает всех контрагентов и устанавливает им e-mail.


&НаСервере
Процедура ПочтаДляВсехНаСервере()
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ 
                   | Контрагенты.Ссылка КАК Ссылка 
                   |ИЗ 
                   | Справочник.Контрагенты КАК Контрагенты 
                   |ГДЕ 
                   | Контрагенты.ЭтоГруппа = ЛОЖЬ";
    
    Результат = Запрос.Выполнить().Выгрузить();
    
    Для Каждого Строка ИЗ Результат Цикл
        ТЗКонтрагент = Строка.Ссылка;
        НовыйАдрес = "info@company.ru";
        Вид = Справочники.ВидыКонтактнойИнформации.EmailКонтрагенты;
        
        // Используем метод БСП для добавления записи
        УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ТЗКонтрагент, НовыйАдрес, Вид, ТекущаяДата(), Истина);
        Сообщить("Обработан: " + ТЗКонтрагент);
    КонецЦикла;
КонецПроцедуры

Ключевые рекомендации

Использование процедур УправлениеКонтактнойИнформацией — это единственный надежный способ взаимодействия с данными, который гарантирует, что все служебные регистры и JSON-структуры будут обновлены верно, а данные будут корректно отображаться в интерфейсе 1С:Бухгалтерия.

← На главную