Всем привет.
В комментариях к статье был задан в вопрос «Как пользоваться в УТ11 запуском СВОИХ обработок по расписанию«.
Постараюсь все подробно объяснить. Начнем.
1. Скачать шаблон обработки.
2. Отредактировать процедуру «СведенияОВнешнейОбработке» в модуле обработке. Все выделенные параметры на рисунке заменить на свои значения
3. Описать код команды для выполнения. Для этого необходимо отредактировать процедуру «ВыполнитьКоманду«.
4. Добавить обработку для выполнения и настроить расписание.
- Перейти в раздел «Администрирование» и выбрать пункт в панели навигации «Печатные формы, отчеты и обработки». Выполнить пункт «Дополнительные отчеты и обработки».
- В форме списка обработок и печатных форм по кнопке «Создать» добавить нашу обработку
- В колонке «Расписание» настраиваем наш регламент.
- После всех настроек необходимо выполнить команду «Записать и закрыть»
Если все выполнено правильно, то обработка будет добавлена в список регламентных заданий.
Популярность: 93%
Спасибо за помощь! Все понятно. Очень понравились все ваши материалы. Доступно и просто.
в списке регламентных заданий написано что выполнено, но на самом деле обработка ничего не сделала. Нажимаю Выполнить сейчас — все отрабатывает корректно. В чем может быть проблема?
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»
Не помогло. Может, версия БСП не та? Как её узнать? УТ у меня 11.1.2.10
Здравствуйте.
К сожалению данная проблема связана с конфигурацией УТ 11.1.2
В коде общего модуля «ДополнительныеОтчетыИОбработкиРегламентныеЗадания» есть ошибка: нет проверки что включено разделение и конфигурация работает в модели сервиса.
Здесь два способа решения, но все они связаны с редактирование конфигурации
1. В общем модуле «ДополнительныеОтчетыИОбработкиРегламентныеЗадания» изменить процедуру «НайтиЗадание».
Условие
"Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда"
переписать на
Если ОбщегоНазначенияПовтИсп.РазделениеВключено()
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда
2. Подсистему «ДополнительныеОтчетыИОбработкиВМоделиСервиса» в ветке «СтандартныеПодсистемы.РаботаВМоделиСервиса» переименовать например на «ДополнительныеОтчетыИОбработкиВМоделиСервиса_», но
это при условие что у Вас не используется разделение.
Сергей, разделение у нас включено. Внесла рекомендованные Вами изменения по первому пункту. Ругань пошла несусветная на неправильное использование разделяемых данных. Стала смотреть в отладчике… Все хорошо вплоть до записи Задания. А когда выходим на Форму, расписание становится недоступным для редактирования и пустым.
По второму варианту внести нужное расписание с созданием регламентного задания удалось. Теперь буду ждать его исполнения. Есть сомнение: при таком методе параметры задания не помещаются в Хранилище, а при отработке модуля в модели сервиса при создании Задания параметры и расписание помещаются в Хранилище.
Здравствуйте.
1. Хочу сказать, что в УТ 11.1.2.10 есть ошибки в общем модуле «ДополнительныеОтчетыИОбработкиРегламентныеЗадания».
Во всех функциях должна быть проверка «ОбщегоНазначенияПовтИсп.РазделениеВключено()», по крайней мере так в УТ 11.1.2.27
2. Когда используется разделение данных, то используются другие объекты метаданных: в обычном режиме — объект метаданных «Регламентные задания»;
в режиме «разделение данных» — объект справочник «ОчередьЗаданий» и «ОчередьЗаданийОбластейДанных» и запускает их отдельное регламентное задание.
Исходя из пункта 1 полагаю что есть ошибки и в других модулях, которые отвечают за работу регламентных заданий.
там еще есть где добавить
Если ОбщегоНазначенияПовтИсп.РазделениеВключено()
И
Функция СоздатьНовоеЗадание(Знач Наименование) Экспорт
Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует(«СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса») Тогда
Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль(«ДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса»);
Возврат Модуль.СоздатьНовоеЗадание();
КонецЕсли;
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(«ЗапускДополнительныхОбработок»);
Задание.Использование = Ложь;
Задание.Наименование = Наименование;
Задание.Записать();
Возврат Задание;
КонецФункции
Сергей, Вы правы. Видимо ошибки есть не только те, что Вы упомянули. Пока, даже успешно зарегистрированное задание не удается выполнить. Даже ручным запуском. Пишет успешное выполнение, но действий не производит.
Конфа не УТТ, а фитнес 1с
Ни как не пойму чего ей надо, в БП отрабатывает нормально.
{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(682)}: Значение не является значением объектного типа (Метаданные)
ЗаписьЖурналаРегистрации(НСтр(«ru = ‘Дополнительные отчеты и обработки'»),
Добрый день. В статье описывается пример для работы с конфигурациями, построенными на базе БСП.
Я к сожалению не знаю есть ли БСП в конфигурации «Фитнес», а если есть какой версии.
Я бы Вам посоветовал сравнить процедуру, где возникает ошибка, с такой же процедурой в конфигурации «БП»
Здравствуйте, Сергей,
подскажите пожалуйста, как обойти
Предупреждение безопасности
Открывается «Шаблон обрабтки с запуском по расписанию».
Рекомендуется обращать внимание на источник, из которого был получен данный файл. Если с источником нет договоренности о разработке дополнительных модулей, или есть сомнения в содержимом файла, то его не рекомендуется открывать, поскольку это может нанести вред компьютеру и данным.
Разрешить открывать данный файл?
Это пишется в журнал регистрации, и естественно, действий никаких не происходит.
в вашу обработку добавила только «Сообщить(«Надо позвонить «);»
Спасибо
Здравствуйте. Если у Вас платформа 8.3.10 и выше, то надо для созданного регламентного задания назначить пользователя, для которого разрешен запуск заданий и у данного пользователя должен быть снят признак «Защита от опасных действия»
Есть другие варианты?
А подскажите какая у Вас версия платформы 1с и версия конфигурации УТ 11?
Спасибо. Редко встретишь лаконичную и полезную инфу по 1С на просторах интернета. Статья помогла все сделать за 5 мин!
Подскажите, а как сделать форму для настройки параметров в этой обработки и передать параметры в код ? Например обработка выгружает документы по расписанию, я хочу сделать форму чтобы можно было указать фильтр по организации….
В процедуре «СведенияОВнешнейОбработке» описываете еще одну команду с методом «Открытие формы»
Создаете форму и назначаете ее основной. На форме добавляете реквизиты какие Вам необходимы для работы рег.задания (например я сделал «Страна мира»)
Обязательно в параметрах формы должны быть параметры «ДополнительнаяОбработкаСсылка» тип «СправочникСсылка.ДополнительныеОтчетыИОбработки» и «ИдентификаторФормы» тип строка.
Добавляете кнопку по записи параметров. Обработчик будет типа такого
И дальше уже в модуле объекта в процедуре «Выполнить команду» получить сохраненные данные
При открытии формы настроек также надо еще прочитать сохраненные данные.
Спасибо друже! Часто помогает Ваш чудесный сайт!
все сделал, как написано, но в модуле обработки команда ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды), не «видит» 2й параметр… выдается ошибка «недостаточно фактических параметров..», которую можно исправить если переписать так:
ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды=неопределено)… что ессно не хорошо…
Здравствуйте. Для какой версии БСП вы делаете обработку или какая у Вас версия УТ? Бывает отличаются реализации.
Розница 2.3.4
В процедуре «СведенияОВнешнейОбработке» установить версию БСП как 2.2.2.1 (ПараметрыРегистрации.Вставить(«ВерсияБСП», «2.2.2.1»)) — это если вы брали за основу обработки из статьи.
Либо ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(«2.2.2.1»);
заработало!
но если я правильно понял, это не последняя версия БСП… а как интересно в актуальной?
Это пример из последней версии БСП 3.1
тогда совсем не понятно… в итоге у меня команда модуля «увидела» параметры после «понижения» версии БСП как вы и посоветовали…
Что там внутри я сильно не смотрел по этому поводу, но это пример из документации к БСП 3.1
Для версии БСП 3.0 в примерах документации так указано
просто не могу сообразить как передать в ПараметрыВыполненияКоманды сохраненные настройки обработки (из реквизитов формы)…
Вот здесь посмотрите.
Добрый вечер.
Регламентное задание создано из обработки, видно в списке регламентных.
Вручную запускается. Все нормально.
Ждем автоматического запуска — его не происходит.
В чем может быть дело?
Строка в расписании сейчас такая: «каждый день; каждые 100 секунд».
Пробовали разные варианты.
в данный момент так:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(«3.1.2.424»);
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Наименование = НСтр(«ru=’Выгрузка ФОТ ‘»);
ПараметрыРегистрации.Информация = НСтр(«ru=’Выгрузка данных ФОТ'»);
ПараметрыРегистрации.Версия = «1.0»;
ПараметрыРегистрации.БезопасныйРежим = Ложь;
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Идентификатор = «ВыгрузкаФОТ»;
Команда.Представление = «Выгрузка ФОТ «;
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Возврат ПараметрыРегистрации;
КонецФункции
Здравствуйте. Попробуйте так.
или
Добрый день! Сделал, всё как описано — опять же, если выполнить обработку через кнопку «Выполнить» — всё работает отлично, однако!
Если поставить регламентное задание — оно не выполняется, по журналу регистрации после начала задания происходит отмена..
Что может быть?
УТ 11.4
Здравствуйте. Могу предположить, что надо указать пользователя для данного регламентного задания.