В этой статье я буду описывать свой поход к отправке отчетов, сделанных на СКД, по расписанию. Статья будет про неуправляемые формы обычное приложение. Будут описаны некоторые объекты 1С, будет много кода. Готовы? Тогда под кат.

Для начала определимся с целью. Какой функционал у нас должен получиться в результате? Я для себя решил примерно так:

  1. Отчет должен отправляться на почтовые адреса, указанные в настройках
  2. В одном письме может быть несколько отчетов
  3. При добавлении новых отчетов для отправки конфигурация не должна изменяться.
  4. Формат отчета должен быть pdf, xls, html и т.д.
  5. Для отправки отчетов должна быть гибкая настройка расписания.

Теперь немного изменим конфигурацию 1С:

  1. Создать справочник “Настройки отправки отчетов”
    1. Реквизиты: РегламентноеЗадание (Строка 40), ИспользоватьРегламентныеЗадания (Булево)
    2. Табличные части: ОтчетыДляОтправки, ПочтовыеАдреса
    3. Реквизиты табличной части “ОтчетыДляОтправки”: Отчет (СправочникСсылка.ВнешниеОбработки), ФорматФайла (Строка 10)
    4. Реквизиты табличной части “ПочтовыеАдреса”: Адрес (Строка 50)
  2. Создать регламентное задание “ОтправкаОтчетовПоРассписанию”. Именно этот объект будет отвечать за действия выполняемые по расписанию. В нашем случае за отправку отчетов
  3. Создать процедуру для работы регламентного задания, нажав на кнопку в поле “Имя метода”. Далее приведу код процедуры и вызываемой ею функции

    Немного поясню: Процедура ОтправкаОтчетовПоРассписанию создается тогда, когда Вы нажимаете на кнопку в поле “Имя метода”. Другие две процедуры Вы должн
    Ну и вставить свои учетные данные почтового сервера вместо этих: adres@otpravitelya.ru, user, server, password, smtp_server, smtp_user, smtp_password
  4. Создаем форму элемента справочника “Настройки отправки отчетов” и раскидываем по ней все реквизиты и табличные части. Использовать в коде будем только процедуру формы “ПриОткрытии” и событие галочки “ИспользоватьРегламентныеЗадания”. Также добавьте на форму надпись “НадписьРасписаниеРегламентногоЗаданияНастройки”, т.к. будем использовать ее событие “ПриНажатии”. Приведу код

    Ну и код модуля справочника “Настройки отправки отчетов”:

     
  5. Обновляем конфигурацию и пробуем то, что у нас получилось. Отправляются ли отчеты