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

01.12.12

База данных - Инструменты администратора БД

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

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

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.

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

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

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

См. также

Инструменты администратора БД Системный администратор Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

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

1 стартмани

18.02.2022    4011    0    igor7777    6    

2

Инструменты администратора БД Программист Пользователь Оперативный учет 7.7 1С:Торговля и склад 7.7 Управленческий учет Абонемент ($m)

Боремся с бардаком. Работы в прошлых датах запрещены. Непроведенные документы (по разным причинам) - автоматом переносятся в начало текущего дня при запуске любого первого сеанса 1С в текущем дне. Задержка старта 1С - практически незначима. Не требует настройки, не требует допрограммирования (исключая один оператор вставки в процедуру старта системы). Можно обработку выполнять вручную с любой периодичностью.

2 стартмани

25.05.2020    5875    2    CheBurator    3    

2

Журнал регистрации Инструменты администратора БД Системный администратор Программист Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Рассмотрим систему на базе Elasticsearch, Logstash и Kibana (ELK Stack) для анализа логов 1С Предприятие 7.7 с целью визуализации и анализа событий 1С.

22.01.2019    11556    phsin    20    

28

Инструменты администратора БД Системный администратор Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Скрипт позволяет выполнить объединение конфигураций и реструктуризацию из командной строки. Объединение выполняется штатными средствами конфигуратора 1С 7.7, взаимодействие с которым происходит путем посылки нажатий клавиш. Пригодится, если есть необходимость обновить или постоянно обновлять множество ИБ.

1 стартмани

22.04.2017    15858    4    devlabnn    2    

6

Инструменты администратора БД Бухгалтер Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Украина Бухгалтерский учет Абонемент ($m)

Перепроведение по счету для конфигурации Бухгалтерский учет для Украины, 1С: Предприятие 7.7

1 стартмани

23.09.2016    3851    1    Genyak    1    

0

Инструменты администратора БД Системный администратор Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Периодически сталкивался со следующими проблемами при печати в 1С: 7.7 работающей под терминалом: 1) После замены принтера на клиентской машине 1С пытается печатать на старый принтер. 2) Отсутствует предварительный просмотр при печати. 3) Не работает печать без предварительного просмотра (пакетная печать документов). 4) В некоторых формах печатает, в некоторых нет.

1 стартмани

09.06.2016    28038    19    tux    3    

1

Инструменты администратора БД Системный администратор Программист Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Часто бывает необходимо отслеживать состояние часто повторяющихся регламентных заданий. Например, синхронизация данных с IP-телефонией, которая может производиться каждую минуту, синхронизация с сайтами, синхронизация данных с различными системами. Использовать для этих целей логирование 1С чрезвычайно неэффективно и не удобно. В таких случаях удобно использовать подход, применяемый в Unix-системах: писать логи в обычные текстовые файлы, а потом делать их обработку через эффективно работающие Unix-команды: grep, tail, cat, less и т.п.

18.05.2016    37117    rudjuk    21    

34
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. TrinitronOTV 16 20.03.12 07:48 Сейчас в теме
неплохая реализация задачи
2. andrewks 1375 20.03.12 08:26 Сейчас в теме
вместо ROM-mail советую использовать dialmail.dll - гораздо меньше глючит в современных условиях, и функционал побогаче. или ещё CDO можно заюзать
7. Yury1001 1472 20.03.12 10:48 Сейчас в теме
(2) ну я что нашёл 5 лет назад то и юзаю, а так компонента конечно может быть любая.
3. janber 20.03.12 09:53 Сейчас в теме
Вижу по тексту, что на сервере будет по расписанию открываться окно 1С,
а кто его будет закрывать?
И еще, в письмо вкладывается файл результата другой обработки, а ее кто будет запускать?
4. by_1Cnik 238 20.03.12 10:20 Сейчас в теме
Для отправки мыла не обязательно использовать ВК.
(3) Alex210, поддерживаю...
Проще использовать таймаут в 1С или если время не принципиально - засунуть обработку в процедуру ПриНачалеРаботыСистемы().
6. Yury1001 1472 20.03.12 10:47 Сейчас в теме
(4) таймаут в 1С зависает наглухо, при некоторых условиях, к тому же предполагается что 1С будет запущена всегда, а кто её запустит после перезагрузки сервера и как её останавливать при обновлениях - каждый раз, не...

ПриНачалаеРаботыСистемы засунуть можно, но изменять проще обработку - никого из базы выгонять не нужно.
5. Yury1001 1472 20.03.12 10:44 Сейчас в теме
(3) Закрывать окно 1С будет строка СтатусВозврата(0).
Запускать другую обработку будет текст первой обработки ПриОткрытии() хоть 5 штук подряд.
8. Jelu 20.03.12 10:49 Сейчас в теме
Запускать можно скриптом по планировщику виндовс.
9. Yury1001 1472 20.03.12 10:51 Сейчас в теме
(8) так об этом и публикация
14. yuraos 1003 28.03.12 17:30 Сейчас в теме
(9) Изящьное решение!
;)))
Я подобное тоже использовал в своей базе на прошлом месте работы.
Правда набор прав "автоюзера" назывался "Робот".
Причем юзер-робот по имени "Налипаефф" с утра заходил в базу целых три раза:
- первый раз делал выгрузки на сайты;
- второй раз аннулировал счета и заказы;
- третий раз выполнял рассылку прайсов, первичных документов и графиков платежей оптовикам;
Еще этого робота я мог при открытии заставить выполнить произвольный код на языке 1С из внешнего файла.
Метода описана в статье Обработка "Партионное удаление объектов" для 1С:Предприятие-7.7
в сааамом конце (над картинками).
PS:
Кроме "Робота" у меня еще был набор прав "Демон".
Он запускался в базу также планировщиком Windows,
но в отличии от "робота" он не отваливал, после выполнения положенных действий,
а оставался там в течении дня и выполнял в обработке ожидания фоновое задание
(гасил документы под названием "Заказ розничного покупателя").
10. soba 21.03.12 03:00 Сейчас в теме
Прямо в лоб и эффективно. Только вот непонятно назначение операторов Сообщить("....") Для отладики разве что. Наверное все-же лучше ЗаписьЖурналаРегистрации("Мыло отправлено")
11. Yury1001 1472 21.03.12 20:56 Сейчас в теме
(10) soba, ну да, это просто рабочий кусок по отправке почты, а в этой задаче конечно запись журнала или лог файла.
12. warden 101 22.03.12 07:54 Сейчас в теме
Таки советую использовать CDO, меньше глючит, чем компоненты. Сам использую примерно такую схему, только запускается управляющая обработка, а дальше по критериям уже запускает остальные.
13. automatizator 170 25.03.12 03:35 Сейчас в теме
Что бы само закрывалось надо дать команду
Форма.Закрыть();
15. selesta 18 30.03.12 11:23 Сейчас в теме
в добавок к таким фоновым юзерам-роботам использую обработку ожидания из ФормЕкса, все замечательно работает, например поднятие карточки звонка у оператора колл-центра
за сабж спасибо, главное не настроить планировщик в тоже время что и бекап :)
16. MrDen 435 19.09.12 14:42 Сейчас в теме
Когда то тоже не нашел пришлось делать самому
http://infostart.ru/public/15995/
Оставьте свое сообщение