В практике сопровождения устаревших или сильно доработанных конфигураций (например, ЗУП 2.5 на платформе 1С 8.2) часто возникают ситуации, когда система выполняет действия, логику которых невозможно обнаружить с первого взгляда. Одной из таких задач является поиск источника автоматической рассылки электронных писем. Рассмотрим пошагово, как провести расследование, если глобальный поиск и стандартные регламентные задания не приносят результата.
Первым делом мы обычно прибегаем к глобальному поиску по конфигурации, используя фрагменты текста из письма. Однако, если поиск выдает «нулевой результат», проанализируем возможные причины:
"Внимание! " + "Есть не отработанное...", поиск по полному предложению ничего не даст. Проанализируем текст письма на наличие уникальных слов или опечаток. В нашем примере фраза содержит ошибку: «обращени по качествы». Именно такие уникальные фрагменты (например, "качествы") являются идеальными ключами для поиска..epf), которые не индексируются глобальным поиском по конфигурации.Разберем, где в 1С 8.2 могут прятаться задачи по расписанию:
ЭлектронноеПисьмо. Если в самом документе записей нет, проверим код, который создает эти документы.ПриЗаписи) или в модуль приложения.Проанализируем ситуацию, когда рассылка инициируется внешней службой. Выясним, нет ли на сервере исполняемых файлов, содержащих команды запуска 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"
Разберем параметры этого запуска:
/S — путь к информационной базе на сервере./N и /P — имя пользователя и пароль, под которыми выполняется действие. Проанализируем права этого пользователя./Execute — самый важный параметр. Он указывает путь к внешней обработке (.epf), внутри которой и зашит весь код формирования письма.Как только мы нашли файл обработки, на который ссылается бат-ник, нам нужно изучить его содержимое. Рассмотрим алгоритм действий:
ПередОткрытием() или специализированные экспортные процедуры, если обработка вызывается программно.Выясним, каким именно способом отправляется письмо, чтобы понять, где искать настройки учетной записи:
Вариант 1: Использование встроенного объекта Почта
Почта = Новый Почта;
Почта.Подключиться();
Сообщение = Новый СообщениеПочтовое;
Сообщение.Текст = "Текст сообщения с опечаткой качествы";
Сообщение.Получатели.Добавить("user@example.com");
Почта.Послать(Сообщение);
Вариант 2: Использование ИнтернетПочта (SMTP)
Этот метод чаще используется во внешних обработках, так как он более гибкий:
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.mail.ru";
Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);
Почта.Послать(Сообщение);
Вариант 3: Использование COM-объектов (CDO.Message)
Иногда программисты используют системные компоненты Windows, чтобы не настраивать учетные записи внутри 1С. В коде это можно узнать по ключевым словам "CDO.Message" или "Outlook.Application".
Если мы все еще не уверены, какая обработка запускается, проанализируем Журнал регистрации. Выставим фильтр по пользователю (которого мы нашли в бат-файле) и по событию «Внешняя обработка». Система зафиксирует момент запуска и путь к файлу. Это позволит со стопроцентной точностью определить «виновника» лишних уведомлений.
Мы выяснили, что в старых конфигурациях 1С логика может быть скрыта вне основной базы. Если глобальный поиск не помогает, всегда проверяйте Планировщик задач Windows и наличие внешних файлов .epf. Помните, что опечатки в тексте писем — это ваши лучшие друзья при поиске места формирования сообщения. Проанализировав бат-файлы и программный код внешних обработок, вы сможете легко отключить ненужные уведомления и навести порядок в системе.