Как настроить рассылку расчетных листков в 1С:ЗУП 3.1, если Email сотрудника заполнен в нестандартном поле?

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

При переходе на автоматизированную рассылку расчетных листков в программе 1С:Зарплата и управление персоналом 3.1 пользователи часто сталкиваются с тем, что контактные данные сотрудников заполнены не в то поле, которое указано в стандартных инструкциях. Например, вместо предопределенного поля Email адрес электронной почты может храниться в поле Email физ.лица или любом другом пользовательском виде контактной информации. Разберем подробно, как решить эту задачу без ручного копирования данных и поймем внутреннюю логику хранения информации в системе.

Анализируем структуру хранения контактной информации

Для начала проанализируем, где именно в системе хранятся адреса электронной почты. В современных конфигурациях на базе Библиотеки стандартных подсистем (БСП), к которым относится и ЗУП 3.1, контактная информация физических лиц хранится не в простых реквизитах справочника, а в его табличной части КонтактнаяИнформация. Однако поиск через консоль запросов может вызвать затруднения, если не учитывать особенности метаданных.

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

Рассмотрим, почему при вводе данных в интерфейсе они могут "не находиться" через консоль запросов в табличной части. Это происходит по одной из двух причин:

  1. Данные физически записываются не в табличную часть (если в конфигурации включено хранение в отдельном регистре сведений КонтактнаяИнформация для оптимизации).
  2. Вы ищете по конкретному Виду контактной информации, а данные записаны под другим идентификатором.

Настройка рассылки отчетов: выбор правильного вида Email

Многие пользователи полагают, что для работы рассылки нужно обязательно заполнить строго определенное поле. Однако механизм Рассылки отчетов в 1С крайне гибок. Проанализируем ситуацию: если у вас уже заполнен вид контактной информации Email физ.лица, вам не нужно переносить эти данные в поле Email.

Выполним следующие шаги для настройки корректной отправки:

  1. Перейдем в раздел Администрирование — Печатные формы, отчеты и обработки — Рассылки отчетов.
  2. Откроем нужную рассылку расчетных листков (или создадим новую).
  3. Перейдем на вкладку Дополнительно (или обратим внимание на настройки получателей).
  4. Найдем параметр, отвечающий за выбор адреса электронной почты. В поле Отправлять на: система позволяет указать конкретный Вид контактной информации.
  5. Выберем из списка именно тот вид, который заполнен у ваших сотрудников (например, Email физ.лица).

Таким образом, программа будет брать адреса именно из той колонки табличной части, которую вы указали, игнорируя пустые стандартные поля.

Массовое заполнение данных через групповое изменение реквизитов

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

Разберем алгоритм действий:

  1. Откроем Групповое изменение реквизитов (раздел Администрирование — Обслуживание — Корректировка данных).
  2. Выберем объект Физические лица.
  3. Нажмем кнопку Дополнительные параметры и установим флаг Изменять служебные реквизиты. Это необходимо, чтобы получить доступ к табличной части контактной информации.
  4. В списке доступных для изменения элементов найдем таблицу Контактная информация.
  5. Настроим отбор таким образом, чтобы программа видела только те записи, где заполнен старый Email.

Важное предостережение: использование групповой обработки для изменения табличных частей — операция рискованная. Проанализируйте возможность использования программного скрипта, если база большая, так как при записи контактной информации через интерфейс БСП выполняются дополнительные проверки и нормализация адресов.

Программный способ переноса данных (для разработчиков)

Если требуется выполнить перенос данных программно, мы должны использовать методы программного интерфейса БСП. Простое добавление строк в табличную часть может привести к тому, что данные не будут корректно отображаться в формах или не попадут в индексы поиска. Выясним, как сделать это правильно.

Для записи контактной информации рекомендуется использовать метод УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию. Рассмотрим пример кода, который переносит данные из одного вида в другой:


// Пример переноса Email для физического лица
ВидСтарый = Справочники.ВидыКонтактнойИнформация.НайтиПоНаименованию("Email физ.лица");
ВидНовый = Справочники.ВидыКонтактнойИнформация.EmailФизическиеЛица; // Предопределенный

Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ФизическиеЛицаКонтактнаяИнформация.Ссылка КАК ФизЛицо,
    |	ФизическиеЛицаКонтактнаяИнформация.Представление КАК Адрес
    |ИЗ
    |	Справочник.ФизическиеЛица.КонтактнаяИнформация КАК ФизическиеЛицаКонтактнаяИнформация
    |ГДЕ
    |	ФизическиеЛицаКонтактнаяИнформация.Вид = &ВидСтарый";

Запрос.УстановитьПараметр("ВидСтарый", ВидСтарый);
Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    // Записываем данные в новый вид КИ
    УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(Выборка.ФизЛицо, Выборка.Адрес, ВидНовый, Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
КонецЦикла;

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

Особенности автоматической отправки расчетных листков

После того как мы разобрались с полями Email, проанализируем еще несколько критических моментов, без которых рассылка не заработает:

Таким образом, мы выяснили, что проблема отсутствия данных в конкретном поле "Email" решается либо перенастройкой самого механизма рассылки на существующий вид контактной информации, либо корректным программным переносом данных с использованием механизмов БСП.

← На главную