Как найти, где формируется и отправляется электронное письмо в 1С:Предприятие 8.2?

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

В практике сопровождения устаревших или сильно доработанных конфигураций (например, ЗУП 2.5 на платформе 1С 8.2) часто возникают ситуации, когда система выполняет действия, логику которых невозможно обнаружить с первого взгляда. Одной из таких задач является поиск источника автоматической рассылки электронных писем. Рассмотрим пошагово, как провести расследование, если глобальный поиск и стандартные регламентные задания не приносят результата.

Анализируем причины неудачи глобального поиска

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

  1. Динамическое формирование строк. Если фраза в коде собирается из частей, например, "Внимание! " + "Есть не отработанное...", поиск по полному предложению ничего не даст. Проанализируем текст письма на наличие уникальных слов или опечаток. В нашем примере фраза содержит ошибку: «обращени по качествы». Именно такие уникальные фрагменты (например, "качествы") являются идеальными ключами для поиска.
  2. Хранение текста в объектах базы данных. Текст может находиться не в программном коде, а в данных: в справочниках (например, «Шаблоны сообщений»), регистрах сведений или в макетах. Проверим общие макеты и макеты конкретных документов.
  3. Внешние компоненты и файлы. Самая коварная причина — логика вынесена за пределы основной конфигурации. Это могут быть внешние обработки (.epf), которые не индексируются глобальным поиском по конфигурации.

Проверка регламентных заданий: стандартных и скрытых

Разберем, где в 1С 8.2 могут прятаться задачи по расписанию:

  1. Стандартные регламентные задания. Зайдем через консоль заданий и проверим список активных процессов. В ЗУП 2.5 часто используется механизм рассылки из документа ЭлектронноеПисьмо. Если в самом документе записей нет, проверим код, который создает эти документы.
  2. Доработки в коде конфигурации. Иногда программисты добавляют вызов процедур отправки в модули обычных документов (например, ПриЗаписи) или в модуль приложения.
  3. Планировщик задач Windows (Task Scheduler). Если в 1С чисто, необходимо проверить сервер, на котором установлена база. Часто для обхода ограничений платформы 8.2 или для работы с файловыми базами используют бат-файлы (.bat), которые запускают 1С в режиме предприятия с определенными параметрами.

Изучаем механизм запуска через командную строку (Batch + EPF)

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


"C:\Program Files (x86)\1cv82\8.2.19.130\bin\1cv8.exe" ENTERPRISE /S "SERVER\BASE_NAME" /N "RobotUser" /P "Password" /Execute "C:\1C_Scripts\SendNotifications.epf"

Разберем параметры этого запуска:

Работа с внешней обработкой (.epf)

Как только мы нашли файл обработки, на который ссылается бат-ник, нам нужно изучить его содержимое. Рассмотрим алгоритм действий:

  1. Откроем файл через Конфигуратор (меню Файл -> Открыть).
  2. Перейдем в Модуль объекта.
  3. Ищем процедуры, которые выполняются при запуске. Обычно это ПередОткрытием() или специализированные экспортные процедуры, если обработка вызывается программно.
  4. Проанализируем используемые методы отправки почты. В 1С 8.2 их может быть несколько.

Технические способы отправки почты в коде

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

Вариант 1: Использование встроенного объекта Почта


Почта = Новый Почта;
Почта.Подключиться();
Сообщение = Новый СообщениеПочтовое;
Сообщение.Текст = "Текст сообщения с опечаткой качествы";
Сообщение.Получатели.Добавить("user@example.com");
Почта.Послать(Сообщение);

Вариант 2: Использование ИнтернетПочта (SMTP)

Этот метод чаще используется во внешних обработках, так как он более гибкий:


Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.mail.ru";
Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);
Почта.Послать(Сообщение);

Вариант 3: Использование COM-объектов (CDO.Message)

Иногда программисты используют системные компоненты Windows, чтобы не настраивать учетные записи внутри 1С. В коде это можно узнать по ключевым словам "CDO.Message" или "Outlook.Application".

Использование Журнала регистрации для поиска

Если мы все еще не уверены, какая обработка запускается, проанализируем Журнал регистрации. Выставим фильтр по пользователю (которого мы нашли в бат-файле) и по событию «Внешняя обработка». Система зафиксирует момент запуска и путь к файлу. Это позволит со стопроцентной точностью определить «виновника» лишних уведомлений.

Заключение

Мы выяснили, что в старых конфигурациях 1С логика может быть скрыта вне основной базы. Если глобальный поиск не помогает, всегда проверяйте Планировщик задач Windows и наличие внешних файлов .epf. Помните, что опечатки в тексте писем — это ваши лучшие друзья при поиске места формирования сообщения. Проанализировав бат-файлы и программный код внешних обработок, вы сможете легко отключить ненужные уведомления и навести порядок в системе.

← На главную