Создать внешнюю обработку и сделать ее работу в фоновом режиме
По теме из базы знаний
- [ТАКСИ] Шаблон внешней обработки...и не только
- Приемы обработки больших данных в 1С
- Образец внешней обработки с длительной операцией на базе БСП 2.3 (Переработанная)
- Как быстро развернуть автоматическую линию проверки своего решения на 1С, затратив 8 часов и получив выигрыш в 1 человеко/месяц
- Эффективное управление фоновыми заданиями и коммуникация сеансов сервера с Фоном с помощью Структуры обмена (ноу-хау) + Бонус: Альтернативный вариант через Хранилище настроек
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
для расширения делали так
1. в расширении модуль с выполнением самого кода в задании
2. внешнюю обработку, где в сведениях добавляется команда, которая пинает модуль из расширения
3. внешняя добавляется как обычно в дополнительные и для нее настраивается расписание выполнения
4. нюанс, надо обязательно указывать пользователя выполнения задания
1. в расширении модуль с выполнением самого кода в задании
2. внешнюю обработку, где в сведениях добавляется команда, которая пинает модуль из расширения
3. внешняя добавляется как обычно в дополнительные и для нее настраивается расписание выполнения
4. нюанс, надо обязательно указывать пользователя выполнения задания
// Функция возвращает сведения о внешней обработке.
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
ПараметрыРегистрации.Вставить("Наименование", "Регламентная обработка");
ПараметрыРегистрации.Вставить("Версия", "1.1");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вставить("Информация", "Регламентная обработка");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд,
"Регламентная обработка",
"Идентификатор",
"ВызовСерверногоМетода",
Истина,"");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Процедура ВыполнитьКоманду(Идентификатор, ОбъектыНазначения) Экспорт
// Твоя команда
КонецПроцедуры
Показать
(6)Добавил, настроил, но почему-то не выполняется) Если в ручную запустить, выдает ошибку
{Справочник.ДополнительныеОтчетыИОбработки.Форма.ФормаЭлемента.Форма(1023)}: Не удалось выполнить команду по причине:
Недостаточно фактических параметров.
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
{Справочник.ДополнительныеОтчетыИОбработки.Форма.ФормаЭлемента.Форма(1023)}: Не удалось выполнить команду по причине:
Недостаточно фактических параметров.
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
(10)
Поставил интервал 60 сек. Ничего не происходит. Запускаю в ручную, и ничего... Пишет иол успешно все запущенно. Но оно как будто мимо кода пролетает. Понаставил Сообщить(), ни одно не вывелось
ИдентификаторКоманды, ПараметрыВыполненияКоманды = Неопределено
Поставил интервал 60 сек. Ничего не происходит. Запускаю в ручную, и ничего... Пишет иол успешно все запущенно. Но оно как будто мимо кода пролетает. Понаставил Сообщить(), ни одно не вывелось
(11)
Как сделать внешнюю обработку с возможностью работы через регламентное задание вам показали!
А что там у вас в коде.... к сожалению знаете только Вы ...
подскажите, как у внешней обработки настроить работу по расписанию, так сказать, чтобы она работала, как регламентное задание
Как сделать внешнюю обработку с возможностью работы через регламентное задание вам показали!
А что там у вас в коде.... к сожалению знаете только Вы ...
(12)
// Функция возвращает сведения о внешней обработке.
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
ПараметрыРегистрации.Вставить("Наименование", "ОбновитьСтатусЗаказов");
ПараметрыРегистрации.Вставить("Версия", "1.1");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вставить("Информация", "Обновить статус заказов");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
Сообщить("фвы");
ДобавитьКоманду(ТаблицаКоманд,
"Регламентная обработка",
"Идентификатор",
"ВызовСерверногоМетода",
Истина,"");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды = Неопределено) Экспорт
Сообщить("Привет");
КонецПроцедуры
Показать
(14)
// Функция возвращает сведения об обработке для использования
// в подсистеме Дополнительные отчеты и обработки
//
// Возвращаемое значение:
// Структура.
//
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("1.1.1.1");
РегистрационныеДанные = Новый Структура;
ПараметрыРегистрации.Информация = НСтр("ru = 'Проверка'");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "1.1.1.1";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Идентификатор = "Проверка";
Команда.Представление = НСтр("ru = 'Проверка'");
Команда.ПоказыватьОповещение = Истина;
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Возврат ПараметрыРегистрации;
КонецФункции
// Функция для вызова методов обработки в подсистеме
// Дополнительные отчеты и обработки
//
// Параметры:
// ИдентификаторКоманды. Строка.
// ПараметрыКоманды
//
// Возвращаемое значение:
// Булево. Результат выполнения метода.
//
Функция ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды = Неопределено) Экспорт
Проверяем();
КонецФункции
Процедура Проверяем() Экспорт
ЗаписьЖурналаРегистрации(НСтр("ru = 'Мой механизм.Проверка'",),
УровеньЖурналаРегистрации.Информация, , ,
НСтр("ru = 'Проверка выполнена'"));
КонецПроцедуры
Показать
(15)
Все равно ничего не происходит.... В процедуру Проверяем() добавил Сообщить() ничего не вывело
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("1.1.1.1");
РегистрационныеДанные = Новый Структура;
ПараметрыРегистрации.Информация = НСтр("ru = 'Проверка'");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "1.1.1.1";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Идентификатор = "Проверка";
Команда.Представление = НСтр("ru = 'Проверка'");
Команда.ПоказыватьОповещение = Истина;
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Возврат ПараметрыРегистрации;
КонецФункции
// Функция для вызова методов обработки в подсистеме
// Дополнительные отчеты и обработки
//
// Параметры:
// ИдентификаторКоманды. Строка.
// ПараметрыКоманды
//
// Возвращаемое значение:
// Булево. Результат выполнения метода.
//
Функция ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды = Неопределено) Экспорт
Проверяем();
КонецФункции
Процедура Проверяем() Экспорт
ЗаписьЖурналаРегистрации(НСтр("ru = 'Мой механизм.Проверка'",),
УровеньЖурналаРегистрации.Информация, , ,
НСтр("ru = 'Проверка выполнена'"));
КонецПроцедуры
ПоказатьПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("1.1.1.1");
РегистрационныеДанные = Новый Структура;
ПараметрыРегистрации.Информация = НСтр("ru = 'Проверка'");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "1.1.1.1";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Идентификатор = "Проверка";
Команда.Представление = НСтр("ru = 'Проверка'");
Команда.ПоказыватьОповещение = Истина;
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Возврат ПараметрыРегистрации;
КонецФункции
// Функция для вызова методов обработки в подсистеме
// Дополнительные отчеты и обработки
//
// Параметры:
// ИдентификаторКоманды. Строка.
// ПараметрыКоманды
//
// Возвращаемое значение:
// Булево. Результат выполнения метода.
//
Функция ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды = Неопределено) Экспорт
Проверяем();
КонецФункции
Процедура Проверяем() Экспорт
ЗаписьЖурналаРегистрации(НСтр("ru = 'Мой механизм.Проверка'",),
УровеньЖурналаРегистрации.Информация, , ,
НСтр("ru = 'Проверка выполнена'"));
КонецПроцедуры
Все равно ничего не происходит.... В процедуру Проверяем() добавил Сообщить() ничего не вывело
(15)
Доброго дня.
Подскажите пожалуйста, где размещаються эти функции и процедуры??
в модуле объекта или в модуле формы объекта??
Тестирую, ничего не происходит.
Внешняя обработка только отрывается, а после этого никакие действия не происходят.
Или ВыполнитьКоманду необходимо как-то дополнительно вызывать?
Доброго дня.
Функция ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды = Неопределено) Экспорт
..........
Процедура Проверяем() Экспорт
Подскажите пожалуйста, где размещаються эти функции и процедуры??
в модуле объекта или в модуле формы объекта??
Тестирую, ничего не происходит.
Внешняя обработка только отрывается, а после этого никакие действия не происходят.
Или ВыполнитьКоманду необходимо как-то дополнительно вызывать?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот