Каталог решений - Запуск внешней обработки по расписанию v7.7

Запуск внешней обработки по расписанию v7.7

Запуск внешней обработки по расписанию v7.7

В наличии

Неоднократно возникали задачи организовать, например ежедневную выгрузку и отправку отчетов по эл.почте, и вот…

Категория:

Описание

…представляю вашему вниманию простой и достаточно дубовый способ: 

1. Создаём в списке пользователей специальное имя, например АвтоEmail, набор прав минимальный – лишь бы хватило открыть общую внешнюю обработку.

2. В Глобальном модуле в процедуре ПриНачалеРаботыСистемы() описываем вызов отработки и завершение работы системы:

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

глПользователь = Спр.ТекущийЭлемент();

 

// Вызов и завершение работы

Если ИмяПользователя() = «АвтоEmail» Тогда
    СтатусВозврата(
0);
    ОткрытьФорму(
«Отчет», «АвтоEmail», КаталогИБ() + «ExtForms\ПродажиОстатки.ert»);
    Возврат;
КонецЕсли;

 

3. В самой обработке при открытии выполняем все нужные действия.

4. Далее собираем команду запуска 1С с параметрами:

Пример: «C:\Program Files\1Cv77\BIN\1cv7.exe» ENTERPRISE /D»D:\DataBase\Db\» /N»АвтоEmail» /P»123″

5. Осталось лишь Создать задачу в Планировщике заданий windows, указать команду запуска в действии и расписание.

 

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

Процедура ПриОткрытии()
   
// Какой нибудь Запрос
   
Таб = СоздатьОбъект(«Таблица»);
   
Таб.ВывестиСекцию(«Шапка»);
    Пока
Запрос.Группировка(1) = 1 Цикл
       
Таб.ВывестиСекцию(«Строка»);
    КонецЦикла;
   
Таб.ВывестиСекцию(«Подвал»);
   
Таб.Записать(КаталогИБ()+«ExtForms\Остатки.xls», 1);

    Попытка
        Если ЗагрузитьВнешнююКомпоненту(«ROM-Mail.dll»)=0 Тогда
            Сообщить(
«Не удалось загрузить ROM-Mail.dll»);
            Возврат;
        КонецЕсли;
    Исключение
        Возврат;
    КонецПопытки;
   
ВК = СоздатьОбъект(«AddIn.AddInMail»);
   
ВК.СерверОтправки  = «smtp.yandex.ru»;
   
ВК.ПортОтправки                  = 25;
   
ВК.Логин                 = «МойЛогин»;
   
ВК.Пароль               = «МойПароль»;
   
ВК.АутентификацияПриОтправке     = 1 ;
    Если
ВК.Подключиться(«Отправка») = 0 Тогда
        Возврат;
    КонецЕсли;
   
ВК.АдресОтправителя = «МойЛогин@yandex.ru»;
    ВК.ИмяОтправителя   = «ООО Рога и копыта»; // можно на несколько адресов через ;
   
ВК.АдресПолучателя  = СокрЛП(Мыло1) + «;» + СокрЛП(Мыло2) + «;» + СокрЛП(Мыло3);
   
ВК.Тема             = «Например, отчеты по ТМЦ на складах»;
   
ВК.Кодировка        = «windows-1251»;
   
ВК.ТипПисьма        = 2;                   // можно отправить несколько файлов через ;
   
ВК.Вложения = КаталогИБ()+«ExtForms\Движения.xls;»+КаталогИБ()+«ExtForms\Остатки.xls»;
    Если
ВК.Отправить()=1 Тогда
        Сообщить(
«Отчеты успешно отправлены.»);
    Иначе
        Сообщить(
«Не удалось отправить отчеты на почтовый сервер!», «!»);
    КонецЕсли;
   
ВК.Отключиться();
КонецПроцедуры

Компонента ROM-Mail.dll бесплатная и легко пробивается в яндексе. 

 

Возможная проблема или «запишу, чтоб не забыть».

Планировщик Windows 2008 ошибка 2147943645

Планировщику заданий не удается запустить задачу «такую-то» для пользователя «такого-то». Дополнительные сведения: значение ошибки: 2147943645.

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

Предлагаемое решение – выставить вышеописанную галку и до кучи поставить галку «Выполнить с наивысшими правами», расположенную там же – мне лично сразу помогло.

Ссылка на источник

has been added to your cart:
Оформление заказа