Универсальное регламентное задание. Универсальное регламентное задание 1с запуск обработки по расписанию

Вопрос: Проблема с доступом к дополнительной обработке в зуп3


создал дополнительную обработку поместил в раздел зарплата. Пользователь с правами старший кадровик расчетчик не может запустить, говорит "недостаточно прав доступа". Как установить права на запуск дополнительной обработки?

Зарплата и управление персоналом, редакция 3.0 (3.0.24.115) ()
Copyright © ООО "1C", 2007-2014. Все права защищены
()

Ответ:

Вопрос: Запуск дополнительной обработки по расписанию


Всех приветствую. Только учусь программировать поэтому сильно не ругайте за неправильные вопросы. 1С Розница 2.2.5.27 Создал внешнюю обработку которая при нажатии на кнопку загружает данные из файла в регистр сведений. Вручную все работает хорошо, но теперь стоит задача сделать так, чтобы эта обработка запускалась по расписанию и без открытия формы. Тоесть в фоновом режиме чтоб работала.
Обработка подключена в форме "Дополнительные отчеты и обработки"

Код в модуле формы

Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка"); ПараметрыРегистрации.Вставить("Наименование", "Загрузка остатков (PCService(C))"); ПараметрыРегистрации.Вставить("Версия", "1.0"); ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь); ПараметрыРегистрации.Вставить("Информация", "Загрузка Остатков"); ПараметрыРегистрации.Вставить("ВерсияБСП", "2.3.2.33"); ТаблицаКоманд = ПолучитьТаблицуКоманд(); ДобавитьКоманду(ТаблицаКоманд, "Загрузка остатков (PCService(C))", "1", "ОткрытиеФормы", Истина,""); ДобавитьКоманду(ТаблицаКоманд, "Загрузка остатков (PCService(C))", "2", "ВызовСерверногоМетода", Истина,""); ИдентификаторКоманды = "2"; ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); Возврат ПараметрыРегистрации; КонецФункции Функция ПолучитьТаблицуКоманд() Команды = Новый ТаблицаЗначений; Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат Команды; КонецФункции Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "") НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецПроцедуры &НаСервере Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт КонецПроцедуры

При нажатии на кнопку выполнить с вариантом запуска "Открытие формы" форма открывается и сразу выполняется программа (сразу выполняется потому что на форме в событиях "ПриСозданииНаСервере" указано чтоб выполнила основной код программы)
При нажатии на кнопку выполнить с вариантом запуска "ВызовСерверногоМетода" ошибок не выдает но и результата никакого.
Что я делаю не так??

Ответ:

Все вкурил. Сюда и надо было скопировать код который я хотел чтоб выполнялся без открытия формы

Вопрос: Розница 2.2 запуск доп.обработки по расписанию


Приветствую. Розница 2.2, подключена дополнительная обработка и задано выполнение по расписанию. Смотрю выполнение через - Поддержка и обслуживание - регламентные задания, мое задание то выполняется то перестает выполняться по расписанию, некоторое время работает четко по расписанию и сам по себе перестает запускаться. Дело не в самой обработке потому что ошибку не выдает а просто не стартует задание. Потом само по себе начинает норм работать. Что может влиять на старт регламентного задания?
Пробовал выставить разное расписание это ничего не дало

Ответ:

Проблема решилась с переустановкой платформы на всех компах

Вопрос: Дополнительная обработка


Всем доброго времени суток.
Управление нашей фирмой, редакция 1.6 (1.6.12.4)

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

Ответ:

Создаете отчет в расширении, добавляете нужную (существующую) подсистему в расширение, делаете ссылку на созданный отчет в "расширенной" подсистеме.

Вопрос: Использование Веб-Сервисов в дополнительной обработке с использованием БСП


Добрый день!
Во фреше необходимо встроить дополнительную обработку, которая будет обращаться к веб-Сервису другой базы. Обработка конечно же в безопасном режиме, однако "допускается использование расширения безопасного режима библиотеки стандартных подсистем (возможность работать с файлами, с ресурсами сети Интернет и т.д.) через специализированный программный интерфейс с регистрацией разрешений, необходимых дополнительному отчету/обработке." Однако не могу найти в текущей версии БСП как настроить это. помогите, пожалуйста Версия базы во фреше: Бухгалтерия предприятия, редакция 3 .0 (3 .0 .59 .45 ) БСП 2 .4 .5 .31

Ответ: oO

Вопрос: ЗуП вылетает при запуске определенной обработки, что делать?


Есть дописка, которая обновляет документы расчета, введенные на основании увольнения. При запуске этой обработки программа тупо закрывается без каких либо сообщений. В отладчике ничего не видно. На тестовой дате, для которой сделал 1 документ проходит. Что делать еще? Тестирование запускал, вроде ошибок нету.

Ответ: замечательно,но цикл зачем нужен был.Есть записи уже тогда пиши не знаю там в журнал или еще как-то,нет тогда модифицируй или ничего не делай

Вопрос: Регламентное задание Дополнителной обработки


Конфигурация Альфа-Авто: Автосалон+Автосервис+Автозапчасти КОРП. Редакция 6.
Создал Внешнюю обработку. Подключил ее как Дополнительная обработка.
Настроил выполнение по расписанию. А она не запускается с ошибкой:
Регламентное задание "Запуск дополнительных обработок", не может быть выполнено из-за отсутствия настроек в процедуре РегламентныеЗаданияПереопределяемый.ПриОпределенииНастроекРегламентныхЗаданий(). Обратитесь к системному администратору!
Кто подскажет что не так с обработкой или Настройкой Базы.

Ответ: () Так Вы посмотрите что там в РегламентныеЗаданияПереопределяемый.ПриОпределенииНастроекРегламентныхЗаданий()
В БСП эта процедура обычно пустая. В Альфе возможно что то дорабатывали.

Вопрос: Автоматический запуск внешней обработки


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

Вопрос: возможно ли сделать так, что бы данная обработка автоматически выполнялась каждый день. Т.Е. например: в 08:00 утра каждого дня срабатывала процедура кнопки "Выполнить" и "Отправить"? База серверная. Буду рад любой помощи и любым вариантам.

Ответ: () А при таком варианте запуска процесс 1С закроется после выполнения обработки? или его нужно завершать из обработки через ЗавершитьРаботуСистемы(Ложь)?

Доброе утро подскажите скрипт для запуска по расписанию обработки, вернее проблема в том что нужен скрипт(батник) который стартавал бы 1с 77 но по проверке если не удался обычный запуск то монопольно с переиндексацией. И желательно с открытием внешней обработки. Нужно для автоматических выгрузок а время отправки установили везде разное. и в основном ночью.

Ответ: любой планировщик nncron xstarter

2017-12-19T18:29:06+00:00

Обновлятору не требуется быть всё время открытым или работать как служба, чтобы стал возможен запуск операций по расписанию.

Запуск по расписанию работает через стандартный механизм Windows, который называется "Планировщик задач".

И, когда пользователь задаёт настройки расписания...

Обновлятор автоматически создаёт нужные задачи в планировщике:

Чего нельзя забывать

Выбор пользователя

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

Должен иметь права в системе на "Вход в качестве пакетного задания".

Как проверить имеет ли пользователь необходимые права?

Самый простой вариант, это нажать правой кнопкой на созданном задании в планировщике и выбрать "Выполнить":

Если после того как отработает задача результат её запуска будет успешным...

Если же это не так, тогда обращаемся к системному администратору, чтобы он в политике безопасности указал (нашего пользователя или его группу) в пункте "Вход в качестве пакетного задания ", а также исключил из пункта "Отказать во входе в качестве пакетного задания ".

Должен иметь непустой пароль. Это требование безопасности Windows. Если вы столкнулись именно с этим ограничением, то самым правильным решением будет:

  • либо назначить пароль текущему пользователю, под которым вы собираетесь запускать обновлятор по расписанию
  • либо создать в системе отдельного пользователя с паролем, которого и прописать в расписании обновлятора

Ну а самым простым (но неправильным с точки зрения безопасности) решением этого ограничения будет отключить опцию "Разрешить использование пустых паролей только при консольном входе" в локальной политике безопасности компьютера.

Выбор баз

Также нельзя забывать, что в операциях, запущенных по расписанию участвуют только те базы, которые выбраны в списке баз, участвующих в расписании:

При этом не важно стоит ли отметка рядом с базой в общем списке:

Эти галки (в общем списке) предназначены только для ручного запуска операций и на запуск по расписанию никак не влияют.

Порядок запуска

И, наконец, ещё один не очевидный момент. При запуске задачи по расписанию обновлятор первым делом проверяет - не выполняется ли сейчас другая задача, запущенная по расписанию. И если выполняется - он в начале дождётся её окончания и только потом будет выполнять новую.

Это означает, что если нам, к примеру, нужно настроить, чтобы в 22-00 выполнялась архивация, а сразу после её окончания обновление баз, то достаточно для архивации указать время запуска 22-00, а для обновления, например, 22-01.

Что если нужно более сложное расписание

А что, если нам нужен не просто регулярный запуск в определенное время в определенные дни? Что если мы хотим, скажем, настроить запуск с 5 часов каждые пол часа, ну или что-то в этом роде?

В этом случае нам нужно воспользоваться всей мощью планировщика задач.

Сначала настраиваем расписание через обновлятор, указав что конкретное расписание будет настроено уже в планировщике:

А уже затем открываем свойства созданных обновлятором задач в планировщике Windows:

И на соответствующих вкладках настраиваем всё, что наша душа пожелает:

Как исключить базу из некоторых операций по расписанию

Предположим, что у нас настроено расписание для обновления и для архивации:

Но при этом мы хотим, чтобы одна база участвовала в архивации по расписанию, но при это не участвовала в обновлении по расписанию.

Как же этого добиться - ведь список баз участвующих в расписании у нас один:

А сделать это очень просто.

Зайдите в свойства той базы, которую нужно исключить из обновления по расписанию и в самом низу окна найдите пункт "Исключить некоторые операции...":

Нажмите на него и исключите обновление этой базы из запуска по расписанию:

Должно получиться вот так:

Возможен ли запуск по расписанию с другими параметрами

Хочу обратить отдельное внимание на то, что задача в планировщике задач - это обычный запуск обновлятора с определенными параметрами командной строки:

А параметров для запуска через командную строку у обновлятора много.

Вы можете используя их настроить автоматизацию гораздо более тонко и в соответствии с вашими потребностями. Только не меняйте параметры командной строки в уже созданном задании обновлятора - иначе он всё равно сбросит их на начальные при обновлении настроек запуска по расписанию. Вместо этого скопируйте созданное задание в планировщике (чтобы у него было своё имя) и меняйте уже его.

Обо всех ключах командной строки обновлятора .

Как узнать запускался ли обновлятор по расписанию

Бывает так, что расписание вроде бы настроили - но что-то идёт не так.

И мы вообще не уверены - запускался ли обновлятор этой ночью.

Прежде всего я хочу обратить ваше внимание на область в главном окне обновлятора, где выводится статус операций по расписанию:

Здесь мы видим сколько дней назад запускалась соотв. операция по расписанию; сколько в ней участвовало баз и были ли ошибки. При этом если мы нажмём левой кнопкой на этих ссылках, то откроется соответствующий отчёт.

Также мы можем зайти в полный журнал отчётов обновлятора...

И посмотреть происходило ли выполнение задач.

Но самый надёжный способ разобраться запускалась ли программа и понять причины её не запуска или внезапного завершения - это включить журнал всех заданий в планировщике Windows. По умолчанию он отключён и я советую включать его, чтобы можно было всегда разобраться в проблемных ситуациях.

Чтобы включить журнал планировщика Windows заходим в диалог "Запуск по расписанию" и нажимаем кнопку "Открыть планировщик Windows":

Это можно сделать также и из панели управления Windows (раздел администрирование).

Здесь находим и нажимаем пункт "Включить журнал всех заданий":

Готово! Теперь мы сможем просматривать историю работы любой задачи в планировщике.

Например, выделим одну из задач обновлятора:

Как настроить облачную систему мониторинга за запуском задач обновлятора

Сейчас я расскажу о способе как застраховать себя от ситуации - "ой, у нас оказывается уже целую неделю не архивируются (обновляются, тестируются..) базы".

Такая ситуация очень даже возможна, если мы настроили запуск архивации по расписанию, а затем:

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

А нужно всего лишь в дополнение к настройке уведомлений об ошибках на почту настроить облачную систему мониторинга запуска нашего обновлятора. Что это и как работает?

Это, на мой взгляд, совершенно гениальная штука, которая называется healthchecks.io . У этих ребят есть и платные тарифы, но нам вполне сгодится их бесплатный тариф.

Идея следующая. Мы регистрируемся у них на сайте и в своём личном кабинете имеем возможность сказать:

  • Эй, HealthChecks, дай мне уникальный Url (адрес интернет ресурса).
  • HealthChecks, если по этому адресу никто не будет стучаться (запрашивать) в течение такого-то периода - оповести меня об этом на такую-то почту.

Затем мы укажем этот адрес в обновляторе и он будет запрашивать его, например, в конце каждой архивации, запущенной по расписанию. И если в какой-то момент он вдруг перестанет запускаться или будет аварийно завершаться, то сервис HealthChecks оповестит нас об этом. Даже если наш сервер сгорит, его украдут и разберут на винтики..., мы первыми узнаем об этом от HealthChecks

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

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

Простейший сценарий настройки HealthChecks вместе с обновлятором

Пусть мы настраиваем ежедневную архивацию на сервере с именем DataServer , который принадлежит компании ООО "Ромашка" :

И хотим, чтобы HealthChecks оповестил нас, если вдруг обновлятор перестанет запускаться для архивации или такие запуски будут завершаться аварийно.

3. Регистрируемся на почту, на которую хотим получать оповещения.

3. Переходим в раздел "Checks" и нажимаем большую зелёную кнопку "Add Check".

5. Изменим имя этой проверки на OOO "Romashka" (DataServer, archiving). Это нужно сделать, чтобы мы понимали с чем именно связана эта проверка (архивация на сервере с именем DataServer в компании ООО "Ромашка"):

6. Укажем период проверки (архивация должна запускаться 1 раз в день, сам процесс архивации может занимать до 12 часов):

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

Дополнительный лимит в 12 часов (grace) я указал намеренно, потому что обновлятор делает запрос к системе мониторинга в конце своей работы, а время окончания может варьироваться от различных условий.

Например, если мы настраиваем обновление по расписанию на запуск в 22-00, то сегодня это обновление может закончиться в 23-00, а уже завтра (вышло много новых обновлений) будет длиться до 4 утра.

Отсюда и дополнительный запас в 12 часов, чтобы не было ложных срабатываний от HealthChecks.

Результат настройки периода будет таким:

7. Но как видите поле Last Ping пустое (Never). Оно будет обновляться по мере обращения к этому адресу обновлятором при архивации. А если обращения не будет больше чем 1 день и 12 часов, то HealthChecks забьёт тревогу и оповестит нас на почту.

Создаем регламентное задание

Создадим регламентное задание «Выполнение обработки».

Отключим использование регламентного задания, чтобы при обновлении конфигурации оно автоматом не запускалось.

Назначим процедуру, которая будет срабатывать при запуске регламентного задания: МодульРегламентныхЗаданий.РегламентноеЗаданиеВыполнениеОбработки .

Сама процедура имеет вид:

Процедура РегламентноеЗаданиеВыполнениеОбработки(Ключ) Экспорт

ПараметрыРегламентныхЗаданий.ВыполнитьОбработкуСПараметрами(Ключ);

КонецПроцедуры

Создаем справочник для регламентных заданий

Наше регламентное задание может порождать множество фоновых процессов - по одному на каждую обработку. У каждого задания в платформе 1С8 есть ключ. Но метод регламентного задания не знает ключ фонового задания, поэтому нужно использовать параметры фонового задания. В результате мы можем видеть фоновое задание в консоли заданий, но не можем вручную из этой консоли создать фоновое задание, т.к. задания с параметрами вручную не создаются.

Справочник «Параметры регламентных заданий» :

Реквизиты :

· КодПередЗапуском - неограниченная строка - код на языке 1С, который нужно выполнить перед запуском.

· Обработка из конфигурации - строка (100) - идентификатор обработки из конфигурации

· Обработка из справочника - строка (100) - ссылка на элемент справочника «Внешние обработки», если такой имеется в конфигурации

· Выполнять через приложение 1С - булево - будет создано отдельное приложение 1С и в нем будет запущено регламентное задание. Создано для 8.1, где не все методы приложения доступны на сервере, где работает регламентное задание.

· КодЗапуска - - неограниченная строка - код на языке 1С, который будет выполняться при запуске регламентного задания.

Создадим форму элемента :

По нажатию на кнопку «Создать регл. задание» программно создается регламентное задание с ключом-кодом:

Процедура ОсновныеДействияФормыСоздатьРеглЗадание(Кнопка)

Перем Задание;

Ключ = СокрЛП(Код);

Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание("ВыполнениеОбработки");

Задание.Наименование = Ключ;

Задание.Ключ = Ключ;

Параметры = Новый Массив();

Параметры.Добавить(Ключ);

Задание.Параметры = Параметры;

Задание.Записать();

КонецПроцедуры

Запуск регламентного задания

Каждое созданное нами регламентное задание имеет ключ:

Этот ключ соответствует коду справочника «Параметры регламентных заданий», по нему осуществляется поиск при старте задания. Если элемент справочника не найдено, задание не выполняется.

Далее, если задан код КодПередЗапуском то будет выполнен этот код. Далее, если переменная Выполнять примет значение ложь, то задание не будет выполнено. При анализе доступна переменная Параметры , где хранится ссылка на найденный элемент справочника «Параметры регламентных заданий».

В зависимости от выбранных значений реквизитов или запустится код на языке 1С, или запустится обработка из конфигурации, или обработка из типового справочника «Внешние обработки».

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

Рекомендую устанавливать пользователя в поле «Пользователь» у вновь созданного регламентного задания, чтобы задание выполнялось под определенными правами. Рекомендую такому пользователю давать полные права. У меня используется пользователь « robot ».

Расписание регламентного задания создается по гиперссылке «Расписание» из формы регламентного задания. Можно использовать обработку «Консоль регламентных заданий».