|
Создание внешней обработки для фонового регламентного задания | ☑ | ||
---|---|---|---|---|
0
NIGHTHUNTER
05.05.22
✎
13:10
|
По примеру создал внешнюю обработку, необходимую для выполнения фонового регламентного задания.
// Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка"); ПараметрыРегистрации.Вставить("Наименование", "Отправка уведомления на рассчитанную дату"); ПараметрыРегистрации.Вставить("Версия", "0.2"); ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь); ПараметрыРегистрации.Вставить("Информация", "Отправка уведомления на рассчитанную дату"); ТаблицаКоманд = ПолучитьТаблицуКоманд(); ДобавитьКоманду(ТаблицаКоманд, "Отправка уведомления на рассчитанную дату", "Идентификатор", "ВызовСерверногоМетода", Истина,""); ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); Возврат ПараметрыРегистрации; КонецФункции // Функция ПолучитьТаблицуКоманд() Команды = Новый ТаблицаЗначений; Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат Команды; КонецФункции // Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "") НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецПроцедуры // // Интерфейс для запуска логики обработки. Процедура ВыполнитьКоманду(Идентификатор, ОбъектыНазначения = Неопределено) Экспорт ОтправкаУведомленияНаРаcсчитаннуюДату(); КонецПроцедуры // Процедура ОтправкаУведомленияНаРаcсчитаннуюДату() Экспорт Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Отправка уведомления на рассчитанную дату!" + ФОРМАТ(ТекущаяДата(), "ДЛФ=DT"); Сообщение.Сообщить(); КонецПроцедуры // Ставлю расписание выполнять, каждые три секунды. И думаю увидеть вывод сообщения, каждые три секунды. Но в фоновом задании пишется об ошибках. Подскажите пожалуйста, что я неправильно делаю? |
|||
1
vicof
05.05.22
✎
13:11
|
Ты делаешь ошибки
|
|||
2
NIGHTHUNTER
05.05.22
✎
13:15
|
Написана у фонового задания, такая ошибка
Недостаточно фактических параметров для метода фонового задания . Сейчас такая ошибка Изменилась строка соединения информационной базы. Возможно информационная база была перемещена. Регламентное задание "Запуск дополнительных обработок" отключено. {ОбщийМодуль.БлокировкаРаботыСВнешнимиРесурсами.Модуль(213)}: ВызватьИсключение ТекстИсключения; {ОбщийМодуль.ОбщегоНазначения.Модуль(5427)}: МодульБлокировкаРаботыСВнешнимиРесурсами.ПриНачалеВыполненияРегламентногоЗадания(РегламентноеЗадание); {ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(1744)}: ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.ЗапускДополнительныхОбработок); |
|||
3
NIGHTHUNTER
05.05.22
✎
13:16
|
фоновое задание появляется само?
Как я загружаю внешнюю обработку? |
|||
4
Kassern
05.05.22
✎
13:16
|
(0) и кому вы решили это регламентом сообщать?
Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Отправка уведомления на рассчитанную дату!" + ФОРМАТ(ТекущаяДата(), "ДЛФ=DT"); Сообщение.Сообщить(); |
|||
5
Kassern
05.05.22
✎
13:18
|
"Регламентное задание "Запуск дополнительных обработок" отключено." - так включите
|
|||
6
NIGHTHUNTER
05.05.22
✎
13:21
|
(4) Я для тестирования на экран, что оно работает проверить
(5) все вроде включено. |
|||
7
Kassern
05.05.22
✎
13:23
|
(6) так вы поймите, что вам на экран ничего не выйдет, если мне не изменяет память. Хотите проверить, попробуйте что-то в базе записать, или файлик какой-нибудь создать, письмо там отправить.
|
|||
8
NIGHTHUNTER
05.05.22
✎
13:23
|
(5) А где включить?
|
|||
9
Kassern
05.05.22
✎
13:24
|
и откуда вы взяли параметры для Выполнить команду?
Вот так вроде должно быть: // Интерфейс для запуска логики обработки. Процедура ВыполнитьКоманду(ИмяКоманды, ПараметрыВыполнения) Экспорт ..... КонецПроцедуры |
|||
10
Kassern
05.05.22
✎
13:26
|
а вот так примерно выглядит процедура со сведениями
Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.0.0.0"); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка(); ПараметрыРегистрации.Версия = "1.1"; ПараметрыРегистрации.БезопасныйРежим = Ложь; НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = НСтр("ru = Имя вашего задания'"); НоваяКоманда.Идентификатор = "ИдентификаторЗадания"; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); НоваяКоманда.ПоказыватьОповещение = Истина; Возврат ПараметрыРегистрации; КонецФункции |
|||
11
NIGHTHUNTER
05.05.22
✎
13:34
|
(9) Взял из примера, на основе которого делаю.
|
|||
12
NIGHTHUNTER
05.05.22
✎
13:34
|
(10) Я делаю по примеру имеющейся обработки.
|
|||
13
NIGHTHUNTER
05.05.22
✎
13:35
|
как появляется фоновое задание?
|
|||
14
NIGHTHUNTER
05.05.22
✎
13:36
|
как мне отладить (0) ?
|
|||
15
vicof
05.05.22
✎
13:53
|
(14) Поставить режим отладчик и запустить отладчик с подклчюенными фоновыми заданиями и отладкой на сервере.
|
|||
16
vicof
05.05.22
✎
13:54
|
режим отладки*
|
|||
17
NIGHTHUNTER
05.05.22
✎
15:40
|
(15) Буду пробовать!!!!
А то я реально осел, и стал затухать. Мне нужно разработать внешнее регламентное задание. Сделать его внешней обработкой. Что бы оно работало в фоне. Как внешняя обработка. Будет проверяться дата документа, и пользователям будут уходить уведомления. в определенный момент. Это можно сделать только регламентным заданием. Сказали делать его внешней обработкой. Что бы не захламлять внутренности. И показали одну наработку, она там что то на сайт отправляет, или считывает с него. Я ее переделал, на вывод сообщения пока. Но с фоновыми заданиями не работал же. И регламентными. ну так, не часто. Вот и сижу. глаза вылезли . От куда берется это фоновое задание, что то там нечайно удаляю, и тд. и тп. Нужно собраться и делать. Буду. |
|||
18
Kassern
05.05.22
✎
15:49
|
(14) а смысл регламентные задания так ловить и отлаживать? Не проще поместить код во внешнюю обработку и проверить, что она работает. Просто нужно учитывать как работают регламентные задания, что там можно делать, а что нельзя. Если понимание есть, то без проблем ваш код, проверенный во внешней обработке будет работать в регламентном задании.
|
|||
19
Kassern
05.05.22
✎
15:51
|
всякие там оповещения на форму и т.д. не надо пихать в регламентные задания. если уж хотите оповестить, создайте задачу зверу, или письмо ему напишите. Так же сервер может не совпадать с вашей рабочей машинкой, это тоже нужно учитывать. Так же стоить понимать, под каким юзвером будет запускаться данное рег задание и есть ли у него права на исполнение этого кода.
|
|||
20
NIGHTHUNTER
05.05.22
✎
15:57
|
(18) Я проверил во внешней обработке его. Там тольк овывод сообщения. Оно выводится. По кнопке с формы.
// &НаКлиенте Процедура ОтправитьУведомление(Команда) ОтправитьУведомлениеНаСервере(); КонецПроцедуры // Процедура ОтправитьУведомлениеНаСервере() ДанныйОбъект = РеквизитФормыВЗначение("Объект"); ДанныйОбъект.ОтправкаУведомленияНаРаcсчитаннуюДату(); КонецПроцедуры // Дальше, я уже переделав, код модуля на тот что в (0), загружаю обработку во внешние. И делаю расписание. Запускать каждые три секунды например. И надеюсь вывод даты времени в сообщении, каждые три секунды на экране. Но что то не идет. Какие то ошибки. Я с непривычки, в шоке и не понимаю. что смотреть. Что где не так?! |
|||
21
NIGHTHUNTER
05.05.22
✎
15:58
|
(19) Пока просто доступ к регламентному фоновому заданию в отладке хотел получить и увидеть что выводятся сообщения.
И уже настраиваться на свою задачу. На проверку даты в документе. И отправки уведомлений. |
|||
22
Kassern
05.05.22
✎
15:59
|
(20) блин услышьте меня, не будет вам регламентное задание возвращать сообщение на форму, оно к ней не привязано
|
|||
23
Kassern
05.05.22
✎
15:59
|
(20) хотите проверить, тупо создайте текстовый файлик с сообщением на жестком диске.
|
|||
24
Fish
05.05.22
✎
16:01
|
Блин. ТС - это же LivingStar
|
|||
25
Kassern
05.05.22
✎
16:02
|
вы когда обычной обработкой сообщение пользователю делаете, у вас оно возвращается обратно на клиент, а регламентное задание без всякого клиента запускается, сразу на сервере, ему некуда возвращать сообщение
|
|||
26
Kassern
05.05.22
✎
16:03
|
(24) видите какой уже прогресс, уже с ЕРП работает)
|
|||
27
NIGHTHUNTER
05.05.22
✎
16:09
|
(22) Понял! Извините, я не знал. Спасибо, за подсказку. Буду проверять как то тогда.
Там какие то ошибки, шли, может из за этого конечно. |
|||
28
nodrama
05.05.22
✎
16:17
|
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1"); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка(); ПараметрыРегистрации.БезопасныйРежим = Ложь; НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); //представление команды в пользовательском режиме НоваяКоманда.Представление = "Команда1НаСервере"; НоваяКоманда.Идентификатор = НоваяКоманда.Представление; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); Возврат ПараметрыРегистрации; КонецФункции Функция ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды) Экспорт Если ИдентификаторКоманды = "Команда1НаСервере" Тогда Команда1НаСервере(); КонецЕсли; КонецФункции &НаСервере Процедура Команда1НаСервере() // Тут то что нужно сделать регламентным заданием. КонецПроцедуры Все работает, пользуйся, мб пригодится Далее расписание в обработке настраиваешь и усе |
|||
29
NIGHTHUNTER
05.05.22
✎
16:19
|
(28) Спасибо, я буду пробовать!
В (0) взято сказали из работающей внешней обработки регламентного задания. Там больше процедур чем у вас, пока не знаю на сколько они все важны. Я буду проверять. |
|||
30
nodrama
05.05.22
✎
16:30
|
(29) Ну моя точно работает, вчера создавал себе ))
|
|||
31
NIGHTHUNTER
05.05.22
✎
16:35
|
Ок, завтра буду проверять.
Но отсутствующие процедуры, что в (0) тоже для чего то нужны. Что то куда то добавляют. Завтра буду настраивать. |
|||
32
hhhh
05.05.22
✎
17:23
|
(31) в (0) у вас вообще старинный какой-то пример, наверно где-то 2009 года. Скопипастите более свежий пример этой функции СведенияОВнешнейОбработке() . в демобазе БСП посмотрите.
|
|||
33
Kassern
05.05.22
✎
17:24
|
(32) я ему уже привел выше прям код для этой процедуры верный
|
|||
34
NIGHTHUNTER
06.05.22
✎
03:31
|
Буду собирать сегодня.
|
|||
35
NIGHTHUNTER
06.05.22
✎
10:11
|
Создал я прототип необходимого регламентного фонового задания.
Как сейчас его подключать? Загрузить в Администрирование - Печатные формы и обработки - Дополнительные отчеты и обработки ? Как оно должно появиться в Администрирование - Обслуживание - Регламентные операции - Регламентные и фоновые задания ? |
|||
36
NIGHTHUNTER
06.05.22
✎
10:12
|
Как написали в (28) добавить нужно только в Администрирование - Печатные формы и обработки - Дополнительные отчеты и обработки и настроить расписание ?
Тут само появится Администрирование - Обслуживание - Регламентные операции - Регламентные и фоновые задания ? |
|||
37
Kassern
06.05.22
✎
10:13
|
(35) а вы добавьте и все увидите
|
|||
38
NIGHTHUNTER
06.05.22
✎
10:22
|
(37) Ясно, спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |