Вход | Регистрация



Запуск обработки по регламентному заданию

Запуск обработки по регламентному заданию
Я
   falselight
 
22.09.17 - 07:18
Стоит задача создания регламентного задания, которое будет
в заданное время запускать обработку, заполнять её табличную часть
и отправлять на почту в html формате.
Данная обработка уже есть, имеет табличные части, которые
заполняются определенными данными по кнопке заполнить.
По кнопке отправить отправляются на заданный почтовый адрес.

Подскажите по созданию регламентного задания.
Как можно автоматически запускать обработку в заданное время,
и выполнять процедуры Заполнить() и Отправить() ?
 
 
   famnam
 
1 - 22.09.17 - 07:36
отправил на мыло. Разбирайтесь
   Lexey_
 
2 - 22.09.17 - 07:36
(0) что такое "запускать обработку"?
   falselight
 
3 - 22.09.17 - 10:31
(2) Есть обработка.
По кнопке заполнить заполняются её табличные части.
По кнопке отправить, все что заполнено отправляется
в html формате на почту.
   falselight
 
4 - 22.09.17 - 10:32
(2) Задача, сделать регламентное задание, которое, будет
запускать эту обработку, и выполнять что она делает в
интерактивном режиме, только автоматически.
Именно запускать код этой обработки на выполнение!
   perester
 
5 - 22.09.17 - 12:25
(4) Проверка, чет не отправляет сообщение
   perester
 
6 - 22.09.17 - 12:30
Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = Новый Структура;
    ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
    ПараметрыРегистрации.Вставить("Назначение", Неопределено);
    ПараметрыРегистрации.Вставить("Наименование", НСтр("ru = 'Снятие резервов'"));
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
    ПараметрыРегистрации.Вставить("Информация", НСтр("ru = 'Снятие резервов'"));
    ТаблицаКоманд = ПолучитьТК();
    ДобавитьКоманду(ТаблицаКоманд,
    НСтр("ru = 'СнятиеРезервов'"),
    "СнятиеРезервов",
    "ВызовСерверногоМетода",
    Истина);
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    Возврат ПараметрыРегистрации;
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = Представление;
    НоваяКоманда.Идентификатор = Идентификатор;
    НоваяКоманда.Использование = Использование;
    НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
    НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры

Функция ПолучитьТК()
    Команды = Новый ТаблицаЗначений;
    Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
    Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
    Возврат Команды;
КонецФункции

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды = Неопределено) Экспорт
   assasu
 
7 - 22.09.17 - 12:30
(0) делаешь bat  файл. который запустит 1С. в файле пишешь ключ запуска , в котором укажешь имя обработки которую открыть  сразу после запуска. в этой обработке в процедуре ПриОткрытии пишешь свой код. запуск файла вешаешь на виндовый шедуллер. радуешься.
   perester
 
8 - 22.09.17 - 12:30
(6) +
//Тут код обработки

КонецПроцедуры
   vicof
 
9 - 22.09.17 - 12:33
Ставлю дайм, что у автора обработчики команд не обращаются к модулю обработки для выполнения заполнения и отправки, говоря красиво, у обработки нет API
   perester
 
10 - 22.09.17 - 12:33
Это в модуле объекта, потом ее в дополнительные обработки и остается лишь настроить расписание
Остается лишь скопировать код твоей обработки из формы, и внутри процедуры ВыполнитьКоманду() вписать, как я понял, 2 

строчки:
Заполнить()
Отправить()
 
 Рекламное место пустует
   falselight
 
11 - 25.09.17 - 04:21
(10) Не известный метод.
(7) Что то сильно сложно.

Смотрел имеющиеся регламентные задания.
Так там пишется просто Обработки.Модуль.Запускаемая процедура...

Я же хочу настроить это на внешнюю обработку.
Выяснить хочу как запускать программно внешнюю обработку
и выполнять её процедуры.

В (6) из за незнакомой методики, нет понимания как запустить обработку добавленную во внешние обработки.
   igorPetrov
 
12 - 25.09.17 - 04:34
(11) "Что то сильно сложно. " Вах-вах...
   falselight
 
13 - 25.09.17 - 04:42
(6) Пробую ваш метод, у меня как раз не заполнен ещё
модуль объекта.
   falselight
 
14 - 25.09.17 - 04:43
(10) А можно ли процедуры вызывать из модуля формы?
   falselight
 
15 - 25.09.17 - 04:44
(10) А как это тестировать? Если обработка встроена во
внешние обработки. Как смотреть код выполнения в отладчике?
   perester
 
16 - 25.09.17 - 05:03
(15) не знаю, можно наверное точку остановки в регламентных заданиях установить на кнопку выполнить, после отлаживать, но я таким не занимался, если обработка из формы работает просто копировал код в модуль, потом если что в жр логи есть,
бывает спрашивало про 'Разрешить открывать данную обработку" в регламентных заданиях пользователя ставил, вроде канает,
про вызов кода с формы обработки не в курсе, если получится что отпишешься
   falselight
 
17 - 25.09.17 - 05:14
(16) Пробую ваш метод.
Так как во внешниз обработках нашел такие же,
все вызывается по ВыполнитьКоманду().

'Разрешить открывать данную обработку" - это при автоматическом запуске регламентированного задания спрашивает программа?
   perester
 
18 - 25.09.17 - 05:27
(17) Это если стоит защита от опасных действий
   falselight
 
19 - 25.09.17 - 05:32
(16) Тут суть в том ещё что бы обработка правилась если что в одном месте. Не править и в модуле формы и в модуле обработки или ещё где.

А как у вас из регламентного задания запускается эта обработка, что бы она сработала по ВыполнитьКоманду()?
   falselight
 
20 - 25.09.17 - 05:34
(18) Эта защита всегда стоит.
Получается при автоматическом запуске, всегда будет вылетать это окно? Это же не подходит тогда совсем такой метод то?
Есть приемы отключать его думаю.
   falselight
 
21 - 25.09.17 - 05:35
Сейчас я сделал модуль обработки как нужно.
В форме была привязка на табличные части и реквизиты формы.
Сейчас переделал в модуле объекта это все на переменные.
Не знаю сработает ли (

Как сейчас программно автоматически из регламентного задания запускать эту обработку?
   falselight
 
22 - 25.09.17 - 05:40
Во внешние обработки обработку добавил.
Подскажите дальнейшие действия по её запуску,
по регламентированному заданию.
Так как ранее такого не делал, трудно дается понимание, как
нужно рпавильно.
   perester
 
23 - 25.09.17 - 05:40
(20) Справочник "Дополнительные отчеты и обработки", там настраиваешь расписание, после "Защиту от опасных действий" в конфигураторе в пользователе галочку убираешь, потом в обработке "Регламентные и фоновый задания" есть кнопка выполнить, как мне кажется, если на нее точку остановки поставить и отлаживать, то он откроет эту обработку
   falselight
 
24 - 25.09.17 - 05:42
(23) Что то ничего не понял!
Обработку я настроил.
Мне её сейчас нужно настроить на регламентное задание.
   falselight
 
25 - 25.09.17 - 05:43
В коде регламентного задания, настраивается вызов этой обработки. Что бы запустилась ВыполнитьКоманду(), как
это будет?
   perester
 
26 - 25.09.17 - 05:44
Если ты настроил обработку то какие вопросы?
Справочник "Дополнительные отчеты и обработки", там настраиваешь расписание, все, готово, добавилось регламентное задание, его можно увидеть в обработке "Регламентные и фоновый задания", внутри нее есть кнопка выполнить, как мне кажется, если на нее точку остановки поставить и отлаживать, то он откроет эту обработку
   perester
 
27 - 25.09.17 - 05:45
(25) Что у тебя есть? Добавил дополнительную обработку в дополнительные обработки? настроил ее расписание?
   falselight
 
28 - 25.09.17 - 05:49
(26) Так регламентное задание это отдельный объект в конфигурации!
   falselight
 
29 - 25.09.17 - 05:51
Понял, создаю расписание.
   falselight
 
30 - 25.09.17 - 05:52
(27) Как задать что бы выполнялась каждый день?
Хочу пока протетировать её на выполнение каждый час.
   falselight
 
31 - 25.09.17 - 05:52
В расписании написано, -

c 25 сентября 2017 г. один день; с 6:00:00 каждые 60 секунд

Почему один день? Как задать что бы каждый день?
   perester
 
32 - 25.09.17 - 05:55
(31) Значит ты не настроил расписание, там все русским языком написано, почитай, побегай по настройкам
   falselight
 
33 - 25.09.17 - 05:57
(32) Ок, буду разбираться!
 
 
   falselight
 
34 - 25.09.17 - 06:00
(31) Я не поставил время окончания, завершать после, повторять с паузой, останавливать через. Не понятно почему там написалось один день!
   falselight
 
35 - 25.09.17 - 06:02
(34) Все понял, на первой вкладке, нуждно поставить что каждый день выполнять.

Буду проверять как это работает.
   falselight
 
36 - 25.09.17 - 06:06
(32) Я настроил расписание.
Настроил код в модуле обработки на ВыполнитьКоманду().
Добавил обработку во внешние обработки.

Сейчас этот код, по ВыполнитьКоманду() должен выполняться
по заданному расписанию?
   perester
 
37 - 25.09.17 - 06:20
(36) если все верно, то да, в обработке "Регламентные и фоновые задания" открой свое задание, если оно завершено с ошибками то строчке 5, что=то про сообщения пользователю, можно прочитать что за ошибка, а проверить работает ли можно посмотреть с ЖР, или по факту выполнения задания
   vyaz
 
38 - 25.09.17 - 07:51
И этот человек еще и рассылает свое резюме по открытым вакансиям, позиционирует себя как специалиста и готов работать по удаленке.
Везет же некоторым заказчикам....
   falselight
 
39 - 25.09.17 - 08:05
(37) В обработке регламентные и фоновые задания поставил новое расписание так как оно было пусто. Написалось задание
выполнено. Не знаю на сколько оно выполнено( Письма на почте нет. Поставлю на выполнение каждую минуту.
А ошибки не выполнения где либо пишутся? У обработки не нашел этого регламентные и фоновые задания.
   falselight
 
40 - 25.09.17 - 08:07
(37) Подскажите пожалуйста как открыть журнал регистрации в БП 3.0?
Если обработка не выполняется и задано для неё расписание нужно будет выявлять причину не срабытывания.
   МимохожийОднако
 
41 - 25.09.17 - 08:08
(39) Можешь использовать журнал регистрации, чтобы писать туда ход выполнения регламентного задания. В этом же коде добавь запись об успешных\не успешных процедурах по ходу выполнения. Потом останется только смотреть журнал регистрации, долго думать и исправлять зафиксированные ошибки.
   falselight
 
42 - 25.09.17 - 08:13
(41) Как его туда писать?
По идее все и так должно было отработать.
Буду смотреть сам код.

Подскажите пожалуйста что такое фоновые задания а что такое регламентные?

Веть регламентные они создаются как отдельный объект в составе конфигурации? Так было в обычном приложении. А сейчас они делаются обработками со стороны пользователя?
   МимохожийОднако
 
43 - 25.09.17 - 08:16
(42) Пиши руками ))
...
В процедурах твоего регламентного задания встать записи в журнал регистрации. Для проверки ошибок навтыкай Попытки и пиши в журнал ОписаниеОшибки()
   Redkiy
 
44 - 25.09.17 - 08:17
(38) Некоторым заказчикам только такие и нужны. Главное - до 35 и огонь в глазах.
   perester
 
45 - 25.09.17 - 08:18
(39) Извини, но показывать тебе куда надо нажать на уровне юзера это не правильно, вкуривай первые сообщения
   falselight
 
46 - 25.09.17 - 08:20
(45) Ок, разбираюсь.
Трудно так как в обычном приложении только делал регл. задание. Тут все по новой.
   falselight
 
47 - 25.09.17 - 09:19
(45) Большое спасибо за введение в новый функционал!
Теперь мне известно что выполнить команду запускается
по расписанию. Я свой код подправил, переведя все
это в другую процедуру и вызывая её с модуля формы
протестировал, отладил. Сейчас её вставил в выполнить
команду и запускаю по расписанию.
   igorPetrov
 
48 - 25.09.17 - 09:21
(47) Ты не думал, что всем пофиг на это?
   Redkiy
 
49 - 25.09.17 - 10:34
(47) заведи себе бложек
 
 Рекламное место пустует
   МимохожийОднако
 
50 - 25.09.17 - 10:50
(48) Ему на это пофиг


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует