1С запуск внешней обработки по расписанию

В процессе использования учётной системы на базе 1С:Предприятие иногда возникает необходимость выполнять какую-то однотипную операцию через определённые промежутки времени.

В системе 1С:Предприятие есть объект, позволяющий решать такие задачи. Это объект "Регламентное задание". Мы можем создать его и настроить под свои потребности. Однако, когда мы имеем дело с типовыми конфигурациями 1С, находящимися на поддержке, создание дополнительного регламентного задания повлечёт за собой невозможность обновления системы в автоматическом режиме.

Выход: сделать внешнюю обработку с возможностью запускать её по расписанию.

Возможность запускать внешнюю обработку по расписанию задаётся в модуле объекта внешней обработки. А именно в теле функции СведенияОВнешнейОбработке () .

Существует три варианта запуска внешней обработки:

  • Открытие формы
  • Вызов серверного метода
  • Вызов клиентского метода

Задаётся вариант запуска в параметрах процедуры ДобавитьКоманду () .

Настраивать расписание можно только для обработок с режимом запуска "Вызов серверного метода" и "Вызов клиентского метода".

Вариант "Вызов серверного метода" означает, что будет вызвана процедура, размещённая в модуле объекта внешней обработки.
Вариант "Вызов клиентского метода" означает, что будет вызвана процедура, размещённая в модуле формы внешней обработки.

Код в модуле объекта внешней обработки:

Программный код, который должен выполняться при запуске внешней обработке, должен находиться в теле процедуры ВыполнитьКоманду () .

После добавления обработки в систему 1С:Предприятие через механизм подключения внешних обработок, станет доступной настройка расписания.

Применяется если требуется выполнять какое-то действие с определенной периодичностью. Например, резервное копирование БД или обновление индексов полнотекстового поиска.
Рассмотрим вариант обновления индексов. Индекс полнотекстового поиска сосотоит из дополнительного индекса и основного индекса. Дополнительный индекс следует обновлять достаточно часто. Это и будет нашим заданием.

Создание задания:
1) Создаем объект конфигурации РегламентноеЗадание(Общие).
2) Создаем новую процедуру в ОбщиеМодули. Она будет делать обновление индексов. Вот ее код:
Код 1C v 8.х
3) Задаем расписание.
На практике мы используем файловый вариант 1С Предприятие. В этом варианте для осуществления выполнения заданий по расписанию небходима постоянно работающая обработка, запущения из клиентского режима.
Используйте готовые обработки: Регламентированные задания, запуск и настройка или создайте такую обработку сами:
Создадим объект конфигурации Обработка. На Форме добавим кнопку с действием ОбработкаЗаданий()
В модуль этой формы добавим код, запускающий выполнение заданий:
Код 1C v 8.х
Эту процедуру необходимо запустить из клиентского режима 1С Предприятие. Пока окно приложения с этой процедурой открыто задания будут выполнятся. Другие действия рекомендуется проводить в другом окне 1С.

Читайте также:  Унч класса а своими руками

В комментариях к статье был задан в вопрос « Как пользоваться в УТ11 запуском СВОИХ обработок по расписанию «.

Постараюсь все подробно объяснить. Начнем.

1. Скачать шаблон обработки.

2. Отредактировать процедуру «СведенияОВнешнейОбработке» в модуле обработке. Все выделенные параметры на рисунке заменить на свои значения

3. Описать код команды для выполнения. Для этого необходимо отредактировать процедуру «ВыполнитьКоманду«.

4. Добавить обработку для выполнения и настроить расписание.

  • Перейти в раздел «Администрирование» и выбрать пункт в панели навигации «Печатные формы, отчеты и обработки». Выполнить пункт «Дополнительные отчеты и обработки».

  • В форме списка обработок и печатных форм по кнопке «Создать» добавить нашу обработку

  • В колонке «Расписание» настраиваем наш регламент.
  • После всех настроек необходимо выполнить команду «Записать и закрыть»

Если все выполнено правильно, то обработка будет добавлена в список регламентных заданий.

28 Responses to Запуск внешней обработки по расписанию в конфигурации «Управление торговлей 11»

Спасибо за помощь! Все понятно. Очень понравились все ваши материалы. Доступно и просто.

в списке регламентных заданий написано что выполнено, но на самом деле обработка ничего не сделала. Нажимаю Выполнить сейчас — все отрабатывает корректно. В чем может быть проблема?

1. Посмотрите в журнале регистрации, может есть ошибки при выполнении задания планировщиком
2. Если ошибок нет, добавьте в код вывод отладочной информации в журнал регистрации.
3. Какой у Вас релиз торговли?

У меня такая же проблема, действительно когда запускаешь руками через команду «Выполнить сейчас»- отрабатывает, когда ждешь выполнения по расписанию, то просто пишет что «Регламентное задание выполнено», но при этом необходимых действий не выполняется.

Здравствуйте. Проверил на платформе 8.3.6.2041 конфигурация «УТ 11.1.10.86 (файловая)» — обработка запускает и код выполняется. Проверить можно прописав
перед началом выполнения команды ДополнительныеОтчетыИОбработки.ЗаписатьИнформацию(ПараметрыВыполненияКоманды, "До выполнения команды");
там где выполняется команда ДополнительныеОтчетыИОбработки.ЗаписатьИнформацию(ПараметрыВыполненияКоманды, "Выполнение команды");
Затем посмотреть в журнале регистрации результат.
Если записей не будет, тогда надо искать причину, в коде конфигурации либо в настройках (возможно используются профили безопасности и обработка выполняется
в безопасном режиме либо установлено выполнение в безопасном режиме, что накладывает свои ограничения).

Читайте также:  Фар край 3 нет звука диалогах

В списке регламентных и фоновых есть , выполнить сейчас — все выполняется ,по расписанию — не запускается…Конфа бух 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»

Оцените статью
Добавить комментарий

Adblock detector