- Запуск внешней обработки по расписанию в конфигурации «Управление торговлей 11»
- 43 Responses to Запуск внешней обработки по расписанию в конфигурации «Управление торговлей 11»
- Как запускать внутреннюю обработку по расписанию каждые N времени?
- Выполнение внешней обработки по расписанию для управляемого и обычного приложения
- Автоматический запуск обработки по расписанию
Запуск внешней обработки по расписанию в конфигурации «Управление торговлей 11»
В комментариях к статье был задан в вопрос « Как пользоваться в УТ11 запуском СВОИХ обработок по расписанию «.
Постараюсь все подробно объяснить. Начнем.
1. Скачать шаблон обработки.
2. Отредактировать процедуру «СведенияОВнешнейОбработке» в модуле обработке. Все выделенные параметры на рисунке заменить на свои значения
3. Описать код команды для выполнения. Для этого необходимо отредактировать процедуру «ВыполнитьКоманду«.
4. Добавить обработку для выполнения и настроить расписание.
- Перейти в раздел «Администрирование» и выбрать пункт в панели навигации «Печатные формы, отчеты и обработки». Выполнить пункт «Дополнительные отчеты и обработки».
- В форме списка обработок и печатных форм по кнопке «Создать» добавить нашу обработку
- В колонке «Расписание» настраиваем наш регламент.
- После всех настроек необходимо выполнить команду «Записать и закрыть»
Если все выполнено правильно, то обработка будет добавлена в список регламентных заданий.
43 Responses to Запуск внешней обработки по расписанию в конфигурации «Управление торговлей 11»
Спасибо за помощь! Все понятно. Очень понравились все ваши материалы. Доступно и просто.
в списке регламентных заданий написано что выполнено, но на самом деле обработка ничего не сделала. Нажимаю Выполнить сейчас — все отрабатывает корректно. В чем может быть проблема?
1. Посмотрите в журнале регистрации, может есть ошибки при выполнении задания планировщиком
2. Если ошибок нет, добавьте в код вывод отладочной информации в журнал регистрации.
3. Какой у Вас релиз торговли?
У меня такая же проблема, действительно когда запускаешь руками через команду «Выполнить сейчас»- отрабатывает, когда ждешь выполнения по расписанию, то просто пишет что «Регламентное задание выполнено», но при этом необходимых действий не выполняется.
Здравствуйте. Проверил на платформе 8.3.6.2041 конфигурация «УТ 11.1.10.86 (файловая)» — обработка запускает и код выполняется. Проверить можно прописав
перед началом выполнения команды ДополнительныеОтчетыИОбработки.ЗаписатьИнформацию(ПараметрыВыполненияКоманды, «До выполнения команды»);
там где выполняется команда ДополнительныеОтчетыИОбработки.ЗаписатьИнформацию(ПараметрыВыполненияКоманды, «Выполнение команды»);
Затем посмотреть в журнале регистрации результат.
Если записей не будет, тогда надо искать причину, в коде конфигурации либо в настройках (возможно используются профили безопасности и обработка выполняется
в безопасном режиме либо установлено выполнение в безопасном режиме, что накладывает свои ограничения).
В списке регламентных и фоновых есть , выполнить сейчас — все выполняется ,по расписанию — не запускается…Конфа бух 3.0 типовая. Не подскажите в чем может быть дело? И версия БСП в параметрах регистрации если нужна , то откуда взять?
Здравствуйте.
К сожалению Вы не уточнили какой у Вас тип СУБД (файловый или клиент-серверный) и релиз конфигурации.
Если клиент-серверный, то должно все выполняться если нет ограничений в настройках базы в кластере (регламентные и фоновые задания отключены).
Если файловый, то например в Бух 3.0.23 надо было запускать отдельный сеанс для выполнения регламентных заданий.
Из последних версий проверил шаблон из статьи на 3.0.39 — все работает (отдельный сеанс не нужен).
в том то и дело , что клиент-сервер и в кластере не стоит галка запрета.
К сожалению есть какая то особенность в Вашей базе, потому проверил на демо-базе Бух 3.0.39 платформа 8.3.6 на клиент-сервере, тоже все хорошо.
сама обработка делает COM соединение с другой базой , может где то надо добавить права? Насильственно я запускаю ее под администратором , а по расписанию она под кем запустится(под какими правами)?
Рекомендую в самом начале процедуры сделать запись в журнал регистрации чтобы убедиться запускается рег. задание или нет.
Если в настройках рег. задания указана роль, то задание будет выполнено под это ролью, иначе под любой ролью, которая имеет полные права.
Пишу:
Функция СведенияОВнешнейОбработке() Экспорт
РегистрационныеДанные = Новый Структура;
РегистрационныеДанные.Вставить(«Вид», «ДополнительнаяОбработка»);
РегистрационныеДанные.Вставить(«Наименование», «Прайс по отобранным соглашениям с КЗ расширенный серв.3»);
РегистрационныеДанные.Вставить(«Версия», «3.00»);
РегистрационныеДанные.Вставить(«БезопасныйРежим», Ложь);
РегистрационныеДанные.Вставить(«Информация», «Прайс по отобранным соглашениям с КЗ расширенный серв.3»);
ТЗКоманды = Новый ТаблицаЗначений;
ТЗКоманды.Колонки.Добавить(«Идентификатор»);
ТЗКоманды.Колонки.Добавить(«Представление»);
ТЗКоманды.Колонки.Добавить(«Модификатор»);
ТЗКоманды.Колонки.Добавить(«ПоказыватьОповещение»);
ТЗКоманды.Колонки.Добавить(«Использование»);
СтрокаКоманды = ТЗКоманды.Добавить();
СтрокаКоманды.Представление = «Прайс по соглашениям c кратностью Заказа расширенный серв»;
СтрокаКоманды.ПоказыватьОповещение = Ложь;
//СтрокаКоманды.Использование = «ОткрытиеФормы»;
строкаКоманды.Использование = «ВызовСерверногоМетода»;
СтрокаКоманды.Идентификатор = «Прайс расширенный регламентный»;
СтрокаКоманды.Модификатор = «»;
РегистрационныеДанные.Вставить(«Команды», ТЗКоманды);
Возврат РегистрационныеДанные;
КонецФункции
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды)
Если ИдентификаторКоманды = «Прайс расширенный регламентный» Тогда
ЗаполнитьНастройки();
СформироватьНаСервере() ;
КонецЕсли;
КонецПроцедуры
….
Регистрирую обработку в УТ11 (клиент-сервер). Задаю ей расписание (запуск внешних… разрешен). После сохранения расписание очищается. Регламентное задание не создается. Обработка «руками» запускается и работает нормально.
В чем может быть дело, не подскажете?
Здравствуйте.
В указанный код я бы добавил в процедуру «СведенияОВнешнейОбработке» строку
РегистрационныеДанные.Вставить(«ВерсияБСП», «1.2.1.4»);
и процедуру «ВыполнитьКоманду» сделал бы экспортной.
С внесенными правками в присланный код, обработка корректно отработала на платформе 8.3.6.2100 и конфигурации «УТ 11.1.10»
Источник
Как запускать внутреннюю обработку по расписанию каждые N времени?
Прошу объяснения. 1С:Предприятие 8.3 (8.3.16.1148) УТ (11.4.11.84)
В конфе создана обработка, которая на текущий момент запускается внутри по кнопке. Эта кнопка подключается по http к внешнему сайту и дергает апи в формате XML, и создает заказы программно.
Нужно чтобы эта задача выполнялась в фоном режиме, скажем раз в 5 минут.
Насколько я понял, для этой задачи подходят регламентные задания, но они могут обращаться только к общему модулю. Я в 1с новичок поэтому непонятны некоторые моменты исходя из этого.
Нужно ли переносить код из обработки в новый созданный общий модуль, чтобы настроить на него регламентные задания?
Или можно как то из общего модуля обратиться к нужной обработке и выполнить ее от туда?
Если у вас обработка вшита в метаданные конфигурации, тогда я бы на вашем месте сделал следующее: создал или использовал бы имеющийся свой общий модуль на сервере, в нем создал бы экспортный метод, в который перенес бы основополагающую логику вашей операции из обработки. Вызывал бы этот метод регламентным заданием (тоже можно создать). А на форме обработки переписал бы, чтобы при нажатии на кнопку выполнялся не код формы, а шло обращение также к общему модулю, все параметры, если они там есть в обработке, пусть передаются в качестве параметров метода.
Если у вас обработка подключена как внешняя через механизм ДО, то у нее должен стоять режим как минимум не «открытие формы», иначе регламентное задание на нее привязать нельзя будет. А исходя из вашего сообщения, у вас именно что открывается форма и на ней нажимается кнопка руками.
Источник
Выполнение внешней обработки по расписанию для управляемого и обычного приложения
В типовых конфигурациях существует возможность запуска внешних обработок по расписанию. Наверняка, многие сталкивались с подобной задачей. В данной статье рассмотрим как можно реализовать такую возможность для управляемого приложения и обычного.
Если сказать в общем, то данные функционал реализовывать мы будем при помощи подсистемы БСП «Дополнительные отчеты и обработки» . Рекомендую для начала ознакомиться с возможностями подсистемы https://its.1c.ru/db/bsp21doc#content:22:1
Итак, управляемое приложение. В современных конфигурациях данный функционал реализован и остается только им воспользоваться, создадим внешнюю обработку, например хотим производить выгрузку XML через универсальный обмен по расписанию, для этого нам нужно:
создать внешнюю обработку (в моем примере даже не буду создавать форму),
в модуле внешней обработки разместить следующую процедуру:
далее идут процедуры и функции, необходимые для выполнения вашего алгоритма:
теперь добавим подключим нашу обработку к базе, как внешнюю и посмотрим, как это будет выглядеть, теперь мы можем задать расписание для своей обработки:
проверяем журнал регистрации, чтобы убедиться в выполнении нашей обработки:
Как мы видим в управляем приложении все довольно просто, теперь попробуем реализовать то же самое только для обычного приложения. На самом деле на инфостарте куча разных способов, как это можно сделать, но многие из них мне не подошли, а подошел способ, который я нашел на одном из ресурсов, доработал под свои нужды и все заработало, как нужно, хочется его осветить подробнее. Суть будет заключаться во внедрении части функционала БСП управляемых форм, для обычных.
Возьмем какую-нибудь типовую конфигурацию на обычных формах, например УПП.
Для справочника ВнешниеОбработки, добавим табличную часть Команды со следующей структурой (все реквизиты строкового типа):
в модуль формы добавим следующий код, для обработки изменения расписания на форме:
Теперь касаемо БСП, берем за основу подсистему дополнительных отчетов и обработок, и адаптируем ее под обычное приложение, поместим в общий модуль ДополнительныеОтчетыИОбработки, рабочий код выглядит следующим образом:
Добавим подписку на событие ПриЗаписиВнешнейОбработки для события ПриЗаписи, в качестве обработчика будет выступать ДополнительныеОтчетыИОбработки.ПриЗаписиВнешнейОбработки:
Добавим регламентное задание без расписания, назовем ЗапускДополнительныхОбработок, с его помощью и будем запускать внешние обработки, в качестве метода укажем ДополнительныеОтчетыИОбработки.ПриЗаписиВнешнейОбработки:
А теперь создадим, какую-нибудь внешнюю обработку, которую хотим запускать по расписанию, для этого в модуле обработки обязательно наличие следующей процедуры:
Теперь запустим конфигурацию, добавим внешнюю обработку и посмотрим, что получилось, появилась настройка расписания:
Проверяем через консоль заданий, и видим, что добавилось регламентное задание с названием нашей внешней обработки:
С помощью таких способов, можно решить данную задачу, однако изучите и другие способы, возможно придет идея, сделать что — то свое, спасибо человеку, который описывал данный способ для обычных форм, ресурс не помню, но решил доработать и разжевать полученную информацию, всем удачи)
Источник
Автоматический запуск обработки по расписанию
(21)дело в том что вообще ничего не происходит,так как в журнале регистрации даже не показывает что запускалось регламентное задание.
Код там обычный:
(22) Вряд ли(я точно уверен, что не увидит, но могу заблуждаться) сервер увидит локальный путь, необходимо использовать сетевой \\SerrverName\YourFolder\doc.txt
В ЖР можно «руками» сообщать ЗаписьЖурналаРегистрации(), это вместо Сообщить().
Пример обработки можно взять в конфигурации БСП необходимой версии. Прямо из клиента во внешних обработках. Там вас интересуют СведенияОВнешнейОбработке() и ВыполнитьКоманду().
Не знаю как в УТ, но обычно надо просто добавить обработку как дополнительную в предприятии. Ну а в самой обработке должна быть экспортная функция «Сведения о внешней обработке».
Подскажите пожалуйста, из-за чего всё равно при добавлении в дополнительные отчёты/обработки возникает ошибка
«Невозможно подключить дополнительную обработку.
Возможно она не подходит для этой версии программы
Техническая информация
Метод объекта не обнаружен СведенияОВнешнейОбработке»
Пробовала различные варианты для подключения, ничего не получается.
Может необходимо где-нибудь сделать ссылку на это функцию??
Экспорт?, да указан.
Может быть Вы можете мне посоветовать
Если вы планируете запускать внешнюю обработку из файла, тогда можно использовать такой код:
(46) Добрый день.
Как я понимаю, у Вас управляемые формы?
Убедитесь, что функция «СведенияОВнешнейОбработке()» экспортная и находится именно в модуле объекта (не в модуле формы).
(49)
Доброго дня.
Да, у меня управляемые формы.
Благодарю Вас за рекомендацию, получилось.
p.s.
я к сожалению до сих пор даже и не знала о такой возможности, как модуль объекта внешнего отчёта или обработки.
(18) а где поставить галку проверку сервера?
Прогонять всю конфу — вы имеете ввиду Тестирование и исправление инф.базы?
(29) если делать проверку через конфигуратор,то ошибки есть в общем модуле,но не в моём в котором я писал,это влияет?
<ОбщийМодуль.Б_ПечатьЧековКлиентСервер.Модуль(23,2)>: Переменная не определена (КассовыеСменыКлиент)
>КассовыеСменыКлиент.ОткрытьКассовуюСмену(ККТ); (Проверка: Сервер)
<ОбщийМодуль.Б_ПечатьЧековКлиентСервер.Модуль(86,2)>: Переменная не определена (КассовыеСменыКлиент)
>КассовыеСменыКлиент.ЗакрытьКассовуюСмену(ККТ, ПоследняяКассаоваяСмена.КассоваяСмена); (Проверка: Сервер)
<ОбщийМодуль.Б_ПечатьЧековКлиентСервер.Модуль(374,16)>: Переменная не определена (КассовыеСменыВызовСервера)
ОписаниеПКС = >КассовыеСменыВызовСервера.ОписаниеПоследнейКассовойСмены(ФУ); (Проверка: Сервер)
<ОбщийМодуль.Б_ПечатьЧековКлиентСервер.Модуль(395,18)>: Переменная не определена (МенеджерОборудованияКлиентСервер)
ВерсияФормата = >МенеджерОборудованияКлиентСервер.ВерсияФФД(ОбъектДрайвера.ВыходныеПараметры); (Проверка: Сервер)
<ОбщийМодуль.Б_ПечатьЧековКлиентСервер.Модуль(397,18)>: Переменная не определена (МенеджерОборудованияКлиентСервер)
ПараметрыЧека = >МенеджерОборудованияКлиентСервер.ПараметрыОперацииФискализацииЧека(); (Проверка: Сервер)
<ОбщийМодуль.Б_ПечатьЧековКлиентСервер.Модуль(401,3)>: Переменная не определена (МенеджерОборудованияВызовСервера)
>МенеджерОборудованияВызовСервера.ПодготовитьДанныеДляФискализацииЧека(АктивныйДокумент, ПараметрыЧека, ВерсияФормата, (Проверка: Сервер)
Источник