Запуск внешней обработки по расписанию 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.
Дело в том, что при создании задания по умолчанию оно «Выполняется только зарегистрированного пользователя», но не в смысле, что пользователь должен существовать, а в смысле, что он должен быть залогинен. В случае, если эта галка выставлена «Выполнять вне зависимости от регистрации пользователя», то задание от имени незалогиненного в момент срабатывания триггера планировщика пользователя выполняется без проблем.
Предлагаемое решение – выставить вышеописанную галку и до кучи поставить галку «Выполнить с наивысшими правами», расположенную там же – мне лично сразу помогло.
