1с не запускается регламентное задание по расписанию
В одной внедряемой информационной системе значение регламентных заданий (РЗ) оказалось очень велико. С помощью них осуществляется автоматизированная проверка и загрузка исходных данных в систему. И надо же было такому случиться, РЗ стали иногда подвисать. Несколько раз в месяц, после перезапуска сервера 1С Предприятия, все РЗ переставали выполняться. Выяснилось, что ситуация легко локально лечится перезаписью каждого РЗ. После чего они начинают нормально работать.
Поиск в Инете показал, что мы не одиноки. Подобная проблема встречается давно, но есть нюансы. Один из хорошо известных случаев, когда сервер sql и сервер 1С стоят на одной машине. После физического перезапуска сервера сервис 1С Предприятия стартует раньше сервиса sql, и модуль обработки регламентных заданий не может ещё прочитать их из базы. И считает, что их нет. Есть даже рекомендация Микрософт для данной ситуации, которая предусматривает настройку зависимости сервиса 1С Предприятия от сервиса sql. То есть он всегда буде стартовать после. Решение! Но это был не наш случай, так как физического перезапуска сервера у нас не было. Только остановка и старт сервиса. Были проанализированы и другие аспекты. Сервер sql работает непрерывно. Базы в кластер если и добавляются, то порядком реже, чем сбоят РЗ. Разделителей нет. После перезапуска сервера 1С Предприятия РЗ стартуют независимо.
Dim v82 , base
Set v82 = CreateObject ( "V82.ComConnector" )
ConnString = "Srvr=имя_сервера;Ref=имя_базы"
Set base = v82 . Connect ( ConnString )
base . CheckScheduledTasks
В зависимости от настроек, в строку соединения возможно придется добавить пользователя и пароль: "usr=пользователь;pwd=пароль".
В конфигурацию я добавил процедуру в Модуль внешнего соединения, которая вызывает процедуру из Общего модуля:
Процедура CheckScheduledTasks () Экспорт
РегламентныеЗадания . ПроверитьПерезаписатьРегламентныеЗадания ();
КонецПроцедуры
// Процедура проверяет выполнение и перезаписывает все включенные регламентные задания
Процедура ПроверитьПерезаписатьРегламентныеЗадания () Экспорт
мРЗ = РегламентныеЗадания . ПолучитьРегламентныеЗадания (Новый Структура ( "Использование" , Истина));
Если мРЗ . Количество () = 0 тогда
ЗаписьЖурналаРегистрации ( "Регламентные задания" , УровеньЖурналаРегистрации . Информация . "Отсутствуют Регламентные задания с признаком Использование" );
КонецЕсли;
стрТекущееВремя = "00010101" + Формат ( Час ( ТекущаяДата ()), "ЧЦ=2; ЧН=00; ЧВН color: red;">)+ Формат ( Минута ( ТекущаяДата ()), "ЧЦ=2; ЧН=00; ЧВН color: red;">)+
Формат ( Секунда ( ТекущаяДата ()), "ЧЦ=2; ЧН=00; ЧВН color: red;">);
ТекущееВремя = Дата ( стрТекущееВремя );
мПозже = Новый Массив ;
фПерезаписываем = Ложь;
Для каждого РЗ из мРЗ цикл
Если РЗ . Расписание . ВремяНачала > ТекущееВремя тогда
мПозже . Добавить ( РЗ );
ИначеЕсли РЗ . ПоследнееЗадание = Неопределено тогда
РЗ . Записать ();
фПерезаписываем = Истина;
ЗаписьЖурналаРегистрации ( "Регламентные задания" , УровеньЖурналаРегистрации . Предупреждение , РЗ . Метаданные , РЗ , "Перезаписано - " + РЗ . Метаданные . Имя );
Иначе
ЗаписьЖурналаРегистрации ( "Регламентные задания" , УровеньЖурналаРегистрации . Информация , РЗ . Метаданные , РЗ , "Нормально выполняется - " + РЗ . Метаданные . Имя );
КонецЕсли;
КонецЦикла;
Если фПерезаписываем тогда
Для каждого РЗ из мПозже цикл
РЗ . Записать ();
ЗаписьЖурналаРегистрации ( "Регламентные задания" , УровеньЖурналаРегистрации . Предупреждение , РЗ . Метаданные , РЗ , "Перезаписано - " + РЗ . Метаданные . Имя );
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Последний модуль был доработан. Обрабатываются все используемые РЗ. Если РЗ должно было начать выполняться до момента проверки, но не выполнялось, то перезаписываем его. Если были обновления, то перезаписываем и более поздние РЗ.
Есть два задания: типовое ("Формирование сегмента номенклатуры") и добавленное свое. Расписание задано одинаковое (каждый день, через 20 секунд).
Добавленное задание вызывает метод из общего модуля (Сервер, Вызов сервера, Привилегированный).
Добавленное стартует один раз и выполняется успешно только по нажатию кнопки "Выполнить сейчас" в обработке "Регламентные и фоновые задания". Типовое - работает нормально (выполняется по заданному расписанию).
Те же задания при запуске в файловом режиме стартуют и выполняются нормально.
Почему добавленное задание может не стартовать автоматически?
Есть два задания:
Добавленное стартует один раз и выполняется успешно только по нажатию кнопки "Выполнить сейчас" в обработке "Регламентные и фоновые задания". Типовое - работает нормально (выполняется по заданному расписанию).
Те же задания при запуске в файловом режиме стартуют и выполняются нормально.
У 1С изначально на 8.2 (чего не было на 8.1) проблемы с Планировщиком на сервере.
Иногда работает отлично, иногда - глючит, иногда - только после перезагрузки. Причину никто не знает, а 1С забила, как обычно, на эту проблему.
Запускайте через скрипт или виндовый планировщик - надежно, просто и удобно.
nncron поюзайте, может он вас обрадует.
Нет, оба задания непредопределенные
(3) Maxis, удалось решить проблему? У меня такая же ситуация. Стандартные регл. задания стартуют нормально, а новые никак не запускаются. Пробовали даже сделать полную копию стандартного задания "Загрузка курсов валют" в итоге та, что стандартная работает, а копию нет.
(5) tango, По всякому, Я же написал, что сделал полную копию задания, которое работает нормально, а копия в итоге не стартует!
А "Использование" установлено в истину?
установите себе менеджер регламентных заданий.
Возможно "Ключ" регламентного задания совпадает. В чем идея использования этого ключа? Например вы создаете несколько регламентных заданий с вызовом одного и того же задания, в силу того что в одном задании порой нельзя задать расписание всех нужных нам вариантов (например, Пн-Пт каждые 10 минут и Сб-Вс каждый час, для этого приходится создавать два задания), так вот есть вероятность того что оба задания могут выполнятся одновременно, чтоб этого не происходило, нужно задать для всех таких заданий один и тот же ключ, при этом если одно из заданий уже выполняется, то другое с таким же ключом не будет стартовать пока не закончится выполнение первого.
Думаю logarifm имел ввиду именно консоль заданий.
P.S. Кстати в консоли заданий есть ошибка из-за которой нет раскраски таблиц, например, задания которые выполняются в данный момент, выводятся в консоли жирным.
P.S. Кстати в консоли заданий есть ошибка из-за которой нет раскраски таблиц, например, задания которые выполняются в данный момент, выводятся в консоли жирным.
Там все нормально. Стандартные задания выполняются без ошибок. Мое задние присутствует в списке регл. заданий, а в разделе фоновые задания записей по нему нет. Но они и правильно, потому что если оно даже не стартует по расписанию, то откуда им там взяться.
А вот если руками создать в консоли заданий фоновое задание и запустить то оно отрабатывается без ошибок.
Путем всех экспериментов сразу хочу сказать, что дело не в коде. Почему то не запускается задание по расписанию, а вот почему не понятно.
По поводу ошибки, это так между прочим написал, ошибка связана только с отсутствием раскраски в таблицах, на работу фоновых заданий никак не влияет.
Относительно того, что задание не запускается, проверь на вкладке "Общие" расписания, должно стоять "Повторять каждые:" 1 (дн.), по умолчанию там 0. И для интереса напиши текст который формируется при изменении расписания, ну типа "каждый день; с 6:00:00 по 23:59:59 каждые 300 сек."
Стоит 1 день.
каждый день; каждые 120 сек.
Я на другом форуме скрины выкладывал, надеюсь модераторы не удалял ссылку , а то не охото по новой все рассказывать =) там все описано со скринами.
(13) citybyte, посмотрел картинки, у меня такое подозрение, что в свойствах общего модуля "СБ_ЧтениеПрайсыСПочтовогоЯщика" не установлен флаг "Сервер"
P.S. Если не секрет, откуда ты взял "консоль заданий"? Та что идет на ИТС, совсем выглядит не так как та что у тебя на картинках. В частности нет кнопки "Запустить задание вручную", а это было бы очень логично иметь такую кнопку, как в твоей обработке.
Если запустить вручную, то регл. задание запускается и отрабатывается все нормально. Если зайти в раздел "Регламентные задания" и запустить его руками ("Выполнить сейчас"), то она абсолютно нормально отрабатывает без каких либо ошибок.
Также хочу отметить вот этот момент
В общем дело не в коде 100%. Говорю так, потому что мы провели эксперимент. Добавили код из нашего регл. задания в код регламентного задания "Загрузка курсов валют", которое нормально работает по расписанию. В итоге оно нормально отработалось в автоматическом режиме, в том числе выполнила и наш кусок кода.
Так что проблема не в коде. Мы пошли дальше. создали новое регл. задание полную копию "Загрузка курсов валют" и в итоге она тоже не работает. Такое ощущение, что по расписанию выполняются только стандартные регламентные задания, которые находятся на поддержке, а вновь созданные сервер не обрабатывает.
Есть регламентное задание, вручную запускается, а по расписанию нет. Вроде и расписание совсем простое - каждый день, каждые 60 сек. В ЖР никакой информации. Куда еще смотреть? Остальные регл задания запускаются нормально. Есть подозрение, что перестало работать после обновления конфигурации.
Блокировка на сервере возможна для конкретного задания? Какая процедурина отвалилась, если руками запускается?
(дабы смутить неокрепшие умы)
"Вроде и расписание совсем простое - каждый день. " - а когда начинается "каждый день"? Простой вопрос :)
(6) не знаю когда начинается. а что имеет значение, если запускаться должно каждые 60 сек? в базе несколько задание без времени начала. и запускаются.
(16) Пойдет. Это БСП-шная, функционал аналогичен. Главное - там есть история запусков фоновых заданий с ошибками времени выполнения, если такие были.
(17) ну и куда там смотреть? задание там включено. запуски показываются (только ручные). больше ничего.
синтаксическая ошибка в рег задании.
причина - вручную выполняется на клиенте, рег задание только сервер.
обычно бывает когда используешь функции из клиентских модулей
вот мне говорят, что работало раньше задание. то есть не в ошибках дело. а после обновления конфы переставало работать - приходилось сервер перегружать.
(20) когда ты вручную запускаешь - ты запускаешь в своей сесии, а в твоей сесии доступен и клиент и сервер (разумеется если это запуск в фоновом а не в регл задании).
(21) запуска не будет, рег задание не скомпилировано.
(18) Регламентное задание еще отключено может быть. Если включено - тогда х.з. Если регламентное включено и "с толкача" заводится, а по расписанию не хочет, хотя расписание правильное - то трабла с планировщиком заданий. Лечится рестартом сервера. Но я уже забыл, когда последний раз с такой фигнёй сталкивался. Либо релиз неудачный, либо хитрое стечение обстоятельств либо и то и другое. Озвучь номер релиза для статистики.
(24)+ не всегда, 1с использует виндовый планировщик, по этому если отключить службу виндового планировщика - 1с останется без регл заданий
(18) Попробуй еще выключить/включить регламентное и еще раз "с толкача" запустить. Но надежды мало. Это типа как по шинам постучать.
(26) Выдыхай. 1С не использует виндовый планировщик. Планировщик задач - это подпроцесс сервера приложений.
еще вариант - RLS которые завязаны на сеанс пользователя, для устранения этого - нужно прописать юзера в параметры запуска регл задания
Настроено регламентное задание по обмену данными с распределенными информационными базами по расписанию. Обмен выполняется, когда выполнен вход в базу под пользователем "Обмен", имеющим полные права. До того как базу перенесли на SQL сервер, обмен работал без проблем. После переноса на SQL сервер, по менеджеру заданий видим, что регламеное задание по обмену выполняется по расписанию, но оно выполняется равно 1 секунду и выгрузки/загрузки файла обмена не происходит. То есть задание выполняется по расписанию, но не делает ничего. Блокировка регламентных заданий для этой базы не установлена.
В чем может быть причина такого поведения?
Регламентное задание в 8.2
В общем модуле "Бух. учет" (не знаю почему выбрал именно его создал процедуру) В модуле стоят.
Регламентное задание 1с 7.7
Как в семерке сделать регламентное задание, запускающее файл .bat по расписанию?
Регламентное задание в 1с
серверная база, создано два регламентных задания. одно предопределенное - работает норм. второе.
1С 8.2 Виснет регламентное задание
Релиз 8.2.17.143 Клиент-сервер. Есть регламентное задание. Предопределенное. Работает целый день.
Thomas.Angelo, что за обмен? Типовой, самописный?
Thomas.Angelo, смотрите ошибки в журнале регистрации.
Добавлено через 1 минуту
Thomas.Angelo, из опыта:
скорее всего нет доступа к каталогу обмена для учетной записи под которой работает служба "Агент сервера 1С:Предприятие"
скорее всего нет доступа к каталогу обмена для учетной записи под которой работает служба "Агент сервера 1С:Предприятие"
Папку обмена присоединил как сетевой диск и сохранил логин и пароль пользователя под которым этот сетевой диск подключается. Но заметил что USR1CV82 не имеет админских прав. Попробую ему админские дать, может поможет.
Вручную если запускаю, то обмен проходит и данные передаются. Сейчас дал полный доступ к папке обмена пользователю "USR1CV82", под которым запущена служба 1С. Также добавил этого пользователя в группу Администраторы. Перезапустил сервер. Папка автоматически монтируется как сетевой диск, но регламентное задание не видит эту папку, даже если я ее задаю как сетевой диск: "Z:\Obmen". Зато теперь в журнале регистрации пишет, что [26.01.2017 22:26:37] [Obmen] Начат автоматический обмен данными по настройке "П" (22:26:37).
[26.01.2017 22:26:37] [Obmen] Не найден каталог обмена информацией: \\192.168.1.100\obmen
[26.01.2017 22:26:37] [Obmen] Ни загрузка ни выгрузка данных не были произведены
[26.01.2017 22:26:37] [Obmen] Обмен данными по настройке "П" завершен (22:26:37).
Что еще можно предпринять, чтобы USR1CV82 видел эту папку?
Thomas.Angelo, зайди под этим пользователем
Добавлено через 53 секунды
Thomas.Angelo, сеть как рабочая группа или есть домен?
Добавлено через 52 секунды
Thomas.Angelo, сеть как рабочая группа или есть домен?
Как ты это сделал?
Добавлено через 2 минуты
папка храниться на ПК ip 192.168.1.100
служба 1С работает на ПК ip 192.168.1.2
USR1CV82 - это локальный пользователь ПК с ip 192.168.1.2
Вопрос. откуда ПК с ip 192.168.1.100 узнает о существовании пользователя USR1CV82 .
Добавлено через 2 минуты
если делать неправильно, то тебя спасет Общий доступ для ВСЕХ и безопасность для УЗ "Все"
Добрый день! Стоит задача запускать регламентное задание каждый понедельник в 10 часов утра. Но не тут то было! Мучаемся с настройкой расписания уже месяц. Если настроить запуск, например, каждые 10 минут, то все работает отлично. Но раз в неделю в нужное время никак не хочет запускаться. Пробовали всевозможные варианты - работать не хочет. Максимум один раз правильно запустится. Текущие настройки расписания в Консоли заданий в приложенных скриншотах. Как это побороть? А то уже перед клиентом стыдно. Используем клиент-серверную 1С 8.2.14.519 версия x64.
Запуститься. На вкладке общие - вместо 7 ставим единицу, и указываем конкретный день на вкладке "Недельное". И будет все работать.
Попробуй поставить галочку использование и предопределенное, и запуститься. Без пользователя, у меня почему-то при тока галочке использование, каждые 2 минуты не запускалось. поставил предопределенное и все ок.
Посмотрите работают ли другие регламентные задания в этот день, возможно что за неделю происходит сбой и все регламентные не запускаются. У нас иногда такое бывает(по непонятной причине), помогает перещелкивание флажка использование и так до следующего сбоя.
Есть другие регламентные задания, запускающиеся раз в 10 минут, раз в полчаса, и несколько раз ежедневно. Все они работают отлично.
Если перещелкнуть значок использование, то задание тут же однократно исполнится, не ожидая 10 часов понедельника.
расписание кривое. вот например такое - рабочее - "Выполнять: один день, по месяцам [Январь, Апрель, Июль, Октябрь ], 20-го числа месяца; с 23:00:00 один раз в день"
Изменил расписание на запуск по понедельникам и четвергам в 10-00, как показано на скриншотах. В итоге задание отработало в четверг и пятницу! Сумасшедший дом какой-то. Прилагаю содержимое таблицы _ScheduledJobs6048.csv, где содержится расписание многострадального фонового задания. Обратил внимание, что на SQL сервере есть пустая таблица с именем _ScheduledJobs6046.csv Может это как-то мешать?
Задание рассылает письма по электронной почте. Я стою в копии, так что сразу понимаю, отработало задание или нет, без средств 1С. Клянусь, что сегодня в пятницу ровно в 10-00 я получил письмо. По заголовкам электронного письма отправленно оно также было сегодня. В журнале регистрации данных о запуске фонового задания в пятницу нет. По четвергу данные есть!
Читайте также: