Создать внешнюю обработку и сделать ее работу в фоновом режиме

1. user1302499 02.03.20 09:48 Сейчас в теме
Добрый день.

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

Использование РЗ не подходит, так как в расширении создать его нельзя....
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. VictorRGB2 14 02.03.20 09:53 Сейчас в теме
для расширения делали так
1. в расширении модуль с выполнением самого кода в задании
2. внешнюю обработку, где в сведениях добавляется команда, которая пинает модуль из расширения
3. внешняя добавляется как обычно в дополнительные и для нее настраивается расписание выполнения
4. нюанс, надо обязательно указывать пользователя выполнения задания
3. erik74 12 02.03.20 09:54 Сейчас в теме
// Функция возвращает сведения о внешней обработке.
Функция СведенияОВнешнейОбработке() Экспорт
	
    ПараметрыРегистрации = Новый Структура;
    ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");

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


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


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


Процедура ВыполнитьКоманду(Идентификатор, ОбъектыНазначения) Экспорт
	
	// Твоя команда 
					
КонецПроцедуры
Показать
4. user1302499 02.03.20 10:34 Сейчас в теме
(3)
Процедура ВыполнитьКоманду(Идентификатор, ОбъектыНазначения) Экспорт


Как она запускаться будет? Просто добавить в список внешние обработки и отчеты?
Где тут интервал настроить можно?
5. erik74 12 02.03.20 10:38 Сейчас в теме
6. erik74 12 02.03.20 10:39 Сейчас в теме
(4) да! И там появиться возможность настроить расписание регламентного задания
9. user1302499 02.03.20 11:49 Сейчас в теме
(6)Добавил, настроил, но почему-то не выполняется) Если в ручную запустить, выдает ошибку

{Справочник.ДополнительныеОтчетыИОбработки.Форма.ФормаЭлемента.Форма(1023)}: Не удалось выполнить команду по причине:
Недостаточно фактических параметров.
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
10. erik74 12 02.03.20 11:55 Сейчас в теме
(9)
Недостаточно фактических параметров.
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(



Процедура ВыполнитьКоманду(Идентификатор, ПараметрыВыполненияКоманды = Неопределено)
11. user1302499 02.03.20 13:04 Сейчас в теме
(10)
ИдентификаторКоманды, ПараметрыВыполненияКоманды = Неопределено



Поставил интервал 60 сек. Ничего не происходит. Запускаю в ручную, и ничего... Пишет иол успешно все запущенно. Но оно как будто мимо кода пролетает. Понаставил Сообщить(), ни одно не вывелось
12. erik74 12 02.03.20 13:11 Сейчас в теме
(11)
подскажите, как у внешней обработки настроить работу по расписанию, так сказать, чтобы она работала, как регламентное задание


Как сделать внешнюю обработку с возможностью работы через регламентное задание вам показали!

А что там у вас в коде.... к сожалению знаете только Вы ...
13. user1302499 02.03.20 13:13 Сейчас в теме
(12) Что Вы скинули, то и есть в коде)
14. user1302499 02.03.20 13:15 Сейчас в теме
(12)
// Функция возвращает сведения о внешней обработке.
Функция СведенияОВнешнейОбработке() Экспорт
	
    ПараметрыРегистрации = Новый Структура;
    ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");

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


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


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



Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды = Неопределено) Экспорт	
	  Сообщить("Привет");  
	     
КонецПроцедуры
Показать
15. erik74 12 02.03.20 13:34 Сейчас в теме
(14)


// Функция возвращает сведения об обработке для использования
// в подсистеме Дополнительные отчеты и обработки
// 
// Возвращаемое значение:
//   Структура. 
//
Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("1.1.1.1");
	
	РегистрационныеДанные = Новый Структура;
	ПараметрыРегистрации.Информация = НСтр("ru = 'Проверка'"); 
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
	ПараметрыРегистрации.Версия = "1.1.1.1";
	ПараметрыРегистрации.БезопасныйРежим = Ложь;

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

// Функция для вызова методов обработки в подсистеме 
// Дополнительные отчеты и обработки
//
// Параметры:
//  ИдентификаторКоманды. Строка.  
//  ПараметрыКоманды	  
// 
// Возвращаемое значение:
//   Булево. Результат выполнения метода.
//
Функция ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды = Неопределено) Экспорт
	
	Проверяем();
		
КонецФункции


Процедура Проверяем() Экспорт 

  
   ЗаписьЖурналаРегистрации(НСтр("ru = 'Мой механизм.Проверка'",),
  УровеньЖурналаРегистрации.Информация, , ,
  НСтр("ru = 'Проверка выполнена'"));
  	
КонецПроцедуры
Показать
16. user1302499 02.03.20 13:48 Сейчас в теме
(15)
Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("1.1.1.1");

РегистрационныеДанные = Новый Структура;
ПараметрыРегистрации.Информация = НСтр("ru = 'Проверка'");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "1.1.1.1";
ПараметрыРегистрации.БезопасныйРежим = Ложь;


Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Идентификатор = "Проверка";
Команда.Представление = НСтр("ru = 'Проверка'");
Команда.ПоказыватьОповещение = Истина;
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();

Возврат ПараметрыРегистрации;

КонецФункции

// Функция для вызова методов обработки в подсистеме
// Дополнительные отчеты и обработки
//
// Параметры:
// ИдентификаторКоманды. Строка.
// ПараметрыКоманды
//
// Возвращаемое значение:
// Булево. Результат выполнения метода.
//
Функция ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды = Неопределено) Экспорт

Проверяем();

КонецФункции


Процедура Проверяем() Экспорт


ЗаписьЖурналаРегистрации(НСтр("ru = 'Мой механизм.Проверка'",),
УровеньЖурналаРегистрации.Информация, , ,
НСтр("ru = 'Проверка выполнена'"));

КонецПроцедуры
Показать



Все равно ничего не происходит.... В процедуру Проверяем() добавил Сообщить() ничего не вывело
17. erik74 12 02.03.20 14:08 Сейчас в теме
(16) И где должно выводиться Ваше ("Сообщить") ? Если это регламентное задание!!!

см. Журнал регистрации "Мой механизм.Проверка"
18. user1302499 02.03.20 14:12 Сейчас в теме
(17) в предприятии, когда только добавил, выводило, потом бах и перестало!
19. user1302499 02.03.20 14:13 Сейчас в теме
(17) Как мне еще понять, что оно работает?
20. erik74 12 02.03.20 14:13 Сейчас в теме
(19)см. Журнал регистрации "Мой механизм.Проверка"
21. user1302499 02.03.20 14:22 Сейчас в теме
(20) а, точно, все работает, спасибо)
22. Новичок1с 4 12.03.24 10:26 Сейчас в теме
(15)

Доброго дня.
Функция ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды = Неопределено) Экспорт
..........
Процедура Проверяем() Экспорт 



Подскажите пожалуйста, где размещаються эти функции и процедуры??
в модуле объекта или в модуле формы объекта??
Тестирую, ничего не происходит.
Внешняя обработка только отрывается, а после этого никакие действия не происходят.

Или ВыполнитьКоманду необходимо как-то дополнительно вызывать?
8. Torin 758 02.03.20 10:41 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот