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

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

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

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

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

Остается лишь скопировать код твоей обработки из формы, и внутри процедуры ВыполнитьКоманду() вписать, как я понял, 2

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

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

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

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

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

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

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

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

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

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

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

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

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