|   |   | 
| 
 | Создание внешней обработки для фонового регламентного задания | ☑ | ||
|---|---|---|---|---|
| 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) Ясно, спасибо!     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |