Есть два задания: типовое ("Формирование сегмента номенклатуры") и добавленное свое. Расписание задано одинаковое (каждый день, через 20 секунд).
Добавленное задание вызывает метод из общего модуля (Сервер, Вызов сервера, Привилегированный).
Добавленное стартует один раз и выполняется успешно только по нажатию кнопки "Выполнить сейчас" в обработке "Регламентные и фоновые задания". Типовое - работает нормально (выполняется по заданному расписанию).
Те же задания при запуске в файловом режиме стартуют и выполняются нормально.
Почему добавленное задание может не стартовать автоматически?
Есть два задания:
Добавленное стартует один раз и выполняется успешно только по нажатию кнопки "Выполнить сейчас" в обработке "Регламентные и фоновые задания". Типовое - работает нормально (выполняется по заданному расписанию).
Те же задания при запуске в файловом режиме стартуют и выполняются нормально.
У 1С изначально на 8.2 (чего не было на 8.1) проблемы с Планировщиком на сервере.
Иногда работает отлично, иногда - глючит, иногда - только после перезагрузки. Причину никто не знает, а 1С забила, как обычно, на эту проблему.
Запускайте через скрипт или виндовый планировщик - надежно, просто и удобно.
nncron поюзайте, может он вас обрадует.
(1) Maxis,ну а что по поводу задания в журнале регистрации написано? Я думаю, что попытка выполнения заданий производится, но завершается ошибкой, которая просто регистрируется в журнале,а пользователю ни каких сообщений не выдается. Я с таким сталкивался, когда пытался выполнить внешнюю обработку по расписанию.
(3) Maxis, удалось решить проблему? У меня такая же ситуация. Стандартные регл. задания стартуют нормально, а новые никак не запускаются. Пробовали даже сделать полную копию стандартного задания "Загрузка курсов валют" в итоге та, что стандартная работает, а копию нет...
Возможно "Ключ" регламентного задания совпадает. В чем идея использования этого ключа? Например вы создаете несколько регламентных заданий с вызовом одного и того же задания, в силу того что в одном задании порой нельзя задать расписание всех нужных нам вариантов (например, Пн-Пт каждые 10 минут и Сб-Вс каждый час, для этого приходится создавать два задания), так вот есть вероятность того что оба задания могут выполнятся одновременно, чтоб этого не происходило, нужно задать для всех таких заданий один и тот же ключ, при этом если одно из заданий уже выполняется, то другое с таким же ключом не будет стартовать пока не закончится выполнение первого.
а что это за зверь? я смотрел через обработку "Консоль заданий"
Думаю logarifm имел ввиду именно консоль заданий.
P.S. Кстати в консоли заданий есть ошибка из-за которой нет раскраски таблиц, например, задания которые выполняются в данный момент, выводятся в консоли жирным.
P.S. Кстати в консоли заданий есть ошибка из-за которой нет раскраски таблиц, например, задания которые выполняются в данный момент, выводятся в консоли жирным.
Там все нормально. Стандартные задания выполняются без ошибок. Мое задние присутствует в списке регл. заданий, а в разделе фоновые задания записей по нему нет. Но они и правильно, потому что если оно даже не стартует по расписанию, то откуда им там взяться.
А вот если руками создать в консоли заданий фоновое задание и запустить то оно отрабатывается без ошибок.
Путем всех экспериментов сразу хочу сказать, что дело не в коде. Почему то не запускается задание по расписанию, а вот почему не понятно.
По поводу ошибки, это так между прочим написал, ошибка связана только с отсутствием раскраски в таблицах, на работу фоновых заданий никак не влияет.
Относительно того, что задание не запускается, проверь на вкладке "Общие" расписания, должно стоять "Повторять каждые:" 1 (дн.), по умолчанию там 0. И для интереса напиши текст который формируется при изменении расписания, ну типа "каждый день; с 6:00:00 по 23:59:59 каждые 300 сек."
// Создает регламентное задание, если задания с переданным идентификатором не существует
//
// Параметры
// МетаданныеРегламентноеЗадание - метаданные или имя регламентного задания
// Идентификатор - строка, уникальный идентификатор регламентного задания.
// В случае, если задание создано, то в параметр помещается строка
// с уникальным идентификатором созданного задания.
// Сообщение - начало текста сообщения об ошибке
// Заголовок - заголовок сообщения об ошибке
//
// Возвращаемое значение
// Истина - задание существует или было успешно создано
// Ложь - нет гарантии существования задания с указанным идентификатором
Функция ОбеспечитьРегламентноеЗадание(МетаданныеРегламентноеЗадание, Идентификатор, Сообщение = "", Заголовок = "") Экспорт
// Проверим, возможно регл. задание уже есть
Если НЕ ПустаяСтрока(Идентификатор) Тогда
Попытка
Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Новый УникальныйИдентификатор(Идентификатор));
Исключение
ОбщегоНазначения.СообщитьОбОшибке(Сообщение + ?(ПустаяСтрока(Сообщение), "", ": ") + ОписаниеОшибки(), , Заголовок);
Возврат Ложь;
КонецПопытки;
Если Задание <> Неопределено Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
// Создаем новое регламентное задание
Попытка
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(МетаданныеРегламентноеЗадание);
Задание.Записать();
Исключение
ОбщегоНазначения.СообщитьОбОшибке(Сообщение + ?(ПустаяСтрока(Сообщение), "", ": ") + ОписаниеОшибки(), , Заголовок);
Возврат Ложь;
КонецПопытки;
Идентификатор = Задание.УникальныйИдентификатор;
Возврат Истина;
КонецФункции
Чтобы докопаться до истины, предлагаю включить отладку на сервере (см. как это сделать https://sites.google.com/site/about1c/Home/vklucenie-otladki-na-servere-1s). В отладчике установить точку останова в вызываемой процедуре. Дождаться вызова и уже по шагам смотреть где затык. Кстати, а в журнале регистраций есть какие-то упоминания о запуске или быть может ошибки связанные с этим заданием?
P.S. Если не секрет, откуда ты взял "консоль заданий"? Та что идет на ИТС, совсем выглядит не так как та что у тебя на картинках. В частности нет кнопки "Запустить задание вручную", а это было бы очень логично иметь такую кнопку, как в твоей обработке.
Если запустить вручную, то регл. задание запускается и отрабатывается все нормально. Если зайти в раздел "Регламентные задания" и запустить его руками ("Выполнить сейчас"), то она абсолютно нормально отрабатывает без каких либо ошибок.
Также хочу отметить вот этот момент
В общем дело не в коде 100%. Говорю так, потому что мы провели эксперимент. Добавили код из нашего регл. задания в код регламентного задания "Загрузка курсов валют", которое нормально работает по расписанию. В итоге оно нормально отработалось в автоматическом режиме, в том числе выполнила и наш кусок кода.
Так что проблема не в коде. Мы пошли дальше. создали новое регл. задание полную копию "Загрузка курсов валют" и в итоге она тоже не работает. Такое ощущение, что по расписанию выполняются только стандартные регламентные задания, которые находятся на поддержке, а вновь созданные сервер не обрабатывает.
это не решение, а не пойми-что.
"для новых заданий стоит выбор "Автоматически". Этот параметр определяет работы с Общим реквизитом" - для вас тоже "автоматически" - значит, используется всегда?
И как ОбластьДанных влияет на запуск по расписанию? А у остальных (типовых, которые у вас запускаются) - не влияет? Там что выставлено?
В настройках своего регл. задания по правой кнопке "Дополнительно" на вкладке Общие реквизиты в страке Область данных, для новых заданий стоит выбор "Автоматически". Этот параметр определяет работы с Общим реквизитом - Область данных. А он в свою очередь заблокирован, так как находится на тех. поддержке. Заходим в Конфигурация - Поддержка - Настройка поддержки далее Общие - Общие реквизиты - Область данных и выставляем уровень поддержки "Редактируется с сохранением поддержки". После этого возвращаемся в настройки регл. задания "Дополнительно" на вкладке Общие реквизиты в страке Область данных выставляем значение "Не используется". Обновляем конфигурацию и вуаля новые задания начинаются выполняться по расписанию...
Платформа 8.3.20.1674, конфа 1С:ERP Управление предприятием 2 (2.4.14.115).
Точно так же не запускались регламентные задания после очередного обновления платформы. Причем, только непредопределенные, создаваемые программно и с выбранным пользователем. С дефолтным пользователем запускались. Решение с общим реквизитом помогло. Спасибо! Теперь запускаются и с указанным пользователем.
В настройках своего регл. задания по правой кнопке "Дополнительно" на вкладке Общие реквизиты в страке Область данных, для новых заданий стоит выбор "Автоматически". Этот параметр определяет работы с Общим реквизитом - Область данных. А он в свою очередь заблокирован, так как находится на тех. поддержке. Заходим в Конфигурация - Поддержка - Настройка поддержки далее Общие - Общие реквизиты - Область данных и выставляем уровень поддержки "Редактируется с сохранением поддержки".
После этого возвращаемся в настройки регл. задания "Дополнительно" на вкладке Общие реквизиты в страке Область данных выставляем значение "Не используется". Обновляем конфигурацию и вуаля новые задания начинаются выполняться по расписанию...
Только что столкнулся с подобной проблемой. Если вкратце, то это похоже на косяк платформы.
У меня общих реквизитов в конфе вообще нет.
Удалил старое (неработающее) регламентное задание и создал новое с тем же методом и с тем же расписанием, тогда все заработало.
Способ помог, только у меня осталась проблема: есть общая команда, которая ссылается на ОбменДаннымиСервер.МояПроцедура(), без всяких параметров. Добавил эту команду в интерфейс, кликаю по ней и всё нормально отрабатывает, а регламентное задание ссылаясь на ту же процедуру ОбменДаннымиСервер.МояПроцедура() не фига не выполняется и ошибок не выдает, вернее выполняется, но по факту никаких действий, заложенных в коде, не делает.
Конфа - УТ11.1.5.16.
(29) bursanb, А это еще один шаманизм : нужно выставить для конфигурации "Обычное приложение", поставить в модуле галку "Клиент обычное приложение" и вернуть обратно в конфе "Управляемое приложение"
Недавно тоже столкнулся с проблемой.
На сервере крутится несколько баз. На всех базах кроме одной рег. задания запускаются в автоматическом режиме.
На "проблемной" базе рег. задания запускаются, но только вручную.
Если база в клиент-серверном варианте, то будет все работать. Если в файловом, то нет. Нужно дописывать приблуду, которая будет эмулировать работу сервера под каким-либо пользователем. В типовых конфах это можно найти в настройках параметров учета "Обмен данными", где указывается пользователь под которым будут выполнятся регламентные задания и с каким интервалом.
(37) yurigural, в файловых вариантах самое простое посадить на обработчик ожидания, который будет стартовать под определенным пользователем (в плане дописки - пару строк кода просто).
(38) insurgut, я это и имел ввиду.
Вот кусок кода из модуля обычного приложения:
ЭтоФайловаяИБ = ПроцедурыОбменаДанными.ОпределитьЭтаИнформационнаяБазаФайловая();
Если ЭтоФайловаяИБ Тогда
ПользовательДляВыполненияРеглЗаданий = Константы.ПользовательДляВыполненияРегламентныхЗаданийВФайловомВариант<wbr>е.Получить();
Если глТекущийПользователь = ПользовательДляВыполненияРеглЗаданий Тогда
// с интервалом секунд вызываем процедуру работы с регламентными заданиями
ПоддержкаРегламентныхЗаданиеДляФайловойВерсии();
ИнтервалДляОпроса = Константы.ИнтервалДляОпросаРегламентныхЗаданийВФайловомВарианте.Получить();
Если ИнтервалДляОпроса = Неопределено
ИЛИ ИнтервалДляОпроса = 0 Тогда
ИнтервалДляОпроса = 60;
КонецЕсли;
ПодключитьОбработчикОжидания("ПоддержкаРегламентныхЗаданиеДляФайловойВерсии", ИнтервалДляОпроса);
КонецЕсли;
КонецЕсли;
Интересная конечно ситуация. У меня такое же задание запускалось но отрабатывало с ошибками, пока исправлял ошибки оно перестало отрабатывать. Тоже перерыл кучу формумов и мануалов нечего не помогло. В итоге я просто пересоздал это же задание с другим именем и вуаля всё заработало
Тоже такая проблема была. помогло следующее: я полностью переделал расписание , сохранил. Затем обратно переделал как было и сохранил. Все это в 1С предприятие (не в конфигураторе). Есть предположение, что замешан кэш!
Очень часто причина бывает ещё банальнее... В расписании на вкладке Общие забыли выставить "Повторять каждые ... дн.", оставив значение по умолчанию 0. Т.е. дневное расписание упорно проверяется, там все четко, а не срабатывает. И замыленный глаз не видит уже, что на ежедневное выполнение оно не настроено.
Возможно кому-нибудь пригодится... Не стартовали задачи с Недельным и Месячным расписанием (по понедельникам или первого числа месяца). Причина: Расписание - первая вкладка - "Повторять каждые" нужно В ЛЮБОМ СЛУЧАЕ устанавливать 1 (дн.)!!! Нелогично, но иначе задание не срабатывало.
Проверь Администрирование серверов - > свойства своей базы, там может стоять галка на "запрет регламентных заданий", руками, рега, выполняться будет, а через расписание нет