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

Всем привет.

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

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

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

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

Сведения о внешней обработке

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

Выполнение команды

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

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

Открыть доп. обработки

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

Обработка с расписанием

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

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

Обработка в списке рег. заданий

Популярность: 35%

Запись опубликована в рубрике Торговля 3.0 для РБ с метками . Добавьте в закладки постоянную ссылку.

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

  1. irina говорит:

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

  2. pmwn говорит:

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

    • Сергей Сопелев говорит:

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

    • Тимофей говорит:

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

      • Сергей Сопелев говорит:

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

  3. Сергей Семенов говорит:

    В списке регламентных и фоновых есть , выполнить сейчас — все выполняется ,по расписанию — не запускается…Конфа бух 3.0 типовая. Не подскажите в чем может быть дело? И версия БСП в параметрах регистрации если нужна , то откуда взять?

    • Сергей Сопелев говорит:

      Здравствуйте.
      К сожалению Вы не уточнили какой у Вас тип СУБД (файловый или клиент-серверный) и релиз конфигурации.
      Если клиент-серверный, то должно все выполняться если нет ограничений в настройках базы в кластере (регламентные и фоновые задания отключены).
      Если файловый, то например в Бух 3.0.23 надо было запускать отдельный сеанс для выполнения регламентных заданий.
      Из последних версий проверил шаблон из статьи на 3.0.39 — все работает (отдельный сеанс не нужен).

  4. Сергей Семенов говорит:

    в том то и дело , что клиент-сервер и в кластере не стоит галка запрета.

    • Сергей Сопелев говорит:

      К сожалению есть какая то особенность в Вашей базе, потому проверил на демо-базе Бух 3.0.39 платформа 8.3.6 на клиент-сервере, тоже все хорошо.

    • Сергей Семенов говорит:

      сама обработка делает COM соединение с другой базой , может где то надо добавить права? Насильственно я запускаю ее под администратором , а по расписанию она под кем запустится(под какими правами)?

      • Сергей Сопелев говорит:

        Рекомендую в самом начале процедуры сделать запись в журнал регистрации чтобы убедиться запускается рег. задание или нет.
        Если в настройках рег. задания указана роль, то задание будет выполнено под это ролью, иначе под любой ролью, которая имеет полные права.

  5. Татьяна говорит:

    Пишу:

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

    Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды)
    Если ИдентификаторКоманды = "Прайс расширенный регламентный" Тогда
    ЗаполнитьНастройки();
    СформироватьНаСервере() ;
    КонецЕсли;
    КонецПроцедуры

    ….
    Регистрирую обработку в УТ11 (клиент-сервер). Задаю ей расписание (запуск внешних… разрешен). После сохранения расписание очищается. Регламентное задание не создается. Обработка «руками» запускается и работает нормально.
    В чем может быть дело, не подскажете?

    • Сергей Сопелев говорит:

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

      РегистрационныеДанные.Вставить("ВерсияБСП", "1.2.1.4");

      и процедуру «ВыполнитьКоманду» сделал бы экспортной.
      С внесенными правками в присланный код, обработка корректно отработала на платформе 8.3.6.2100 и конфигурации «УТ 11.1.10»

  6. Татьяна говорит:

    Не помогло. Может, версия БСП не та? Как её узнать? УТ у меня 11.1.2.10

    • Сергей Сопелев говорит:

      Здравствуйте.
      К сожалению данная проблема связана с конфигурацией УТ 11.1.2
      В коде общего модуля «ДополнительныеОтчетыИОбработкиРегламентныеЗадания» есть ошибка: нет проверки что включено разделение и конфигурация работает в модели сервиса.
      Здесь два способа решения, но все они связаны с редактирование конфигурации
      1. В общем модуле «ДополнительныеОтчетыИОбработкиРегламентныеЗадания» изменить процедуру «НайтиЗадание».
      Условие

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

      переписать на

      Если ОбщегоНазначенияПовтИсп.РазделениеВключено()
      И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда

      2. Подсистему «ДополнительныеОтчетыИОбработкиВМоделиСервиса» в ветке «СтандартныеПодсистемы.РаботаВМоделиСервиса» переименовать например на «ДополнительныеОтчетыИОбработкиВМоделиСервиса_», но
      это при условие что у Вас не используется разделение.

  7. Татьяна говорит:

    Сергей, разделение у нас включено. Внесла рекомендованные Вами изменения по первому пункту. Ругань пошла несусветная на неправильное использование разделяемых данных. Стала смотреть в отладчике… Все хорошо вплоть до записи Задания. А когда выходим на Форму, расписание становится недоступным для редактирования и пустым.

    По второму варианту внести нужное расписание с созданием регламентного задания удалось. Теперь буду ждать его исполнения. Есть сомнение: при таком методе параметры задания не помещаются в Хранилище, а при отработке модуля в модели сервиса при создании Задания параметры и расписание помещаются в Хранилище.

    • Сергей Сопелев говорит:

      Здравствуйте.
      1. Хочу сказать, что в УТ 11.1.2.10 есть ошибки в общем модуле «ДополнительныеОтчетыИОбработкиРегламентныеЗадания».
      Во всех функциях должна быть проверка «ОбщегоНазначенияПовтИсп.РазделениеВключено()», по крайней мере так в УТ 11.1.2.27
      2. Когда используется разделение данных, то используются другие объекты метаданных: в обычном режиме — объект метаданных «Регламентные задания»;
      в режиме «разделение данных» — объект справочник «ОчередьЗаданий» и «ОчередьЗаданийОбластейДанных» и запускает их отдельное регламентное задание.
      Исходя из пункта 1 полагаю что есть ошибки и в других модулях, которые отвечают за работу регламентных заданий.

  8. Татьяна говорит:

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

  9. Александр говорит:

    Конфа не УТТ, а фитнес 1с

    Ни как не пойму чего ей надо, в БП отрабатывает нормально.

    {ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(682)}: Значение не является значением объектного типа (Метаданные)
    ЗаписьЖурналаРегистрации(НСтр(«ru = ‘Дополнительные отчеты и обработки'»),

    • Сергей Сопелев говорит:

      Добрый день. В статье описывается пример для работы с конфигурациями, построенными на базе БСП.
      Я к сожалению не знаю есть ли БСП в конфигурации «Фитнес», а если есть какой версии.

      Я бы Вам посоветовал сравнить процедуру, где возникает ошибка, с такой же процедурой в конфигурации «БП»

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *