1с фоновые задания не работают
Наверное, ни одна серьезная конфигурация на 1С 8.3 или 8.2 не обойдется без использования регламентных и фоновых заданий. Они очень удобны, так как по четко заданному расписанию будут выполняться без вмешательства пользователя и программиста.
Например, вам нужно раз в сутки вам нужно совершать обмен данными с другой программой. Используя регламентные и фоновые задания, 1С сможет производить данные действия самостоятельно, например, в нерабочее время. Такой способ никак не повлияет на работу пользователей и поможет сэкономить время.
Для начала разберемся, что же они обозначают и в чем их отличие:
- Регламентное задание позволяет запускать на выполнение какие-либо конкретные действия по заранее настроенному расписанию.
- Фоновое задание – это объект, в котором содержатся выполняемые действия.
Фоновые и регламентные задания в клиент-серверном режиме
Предположим, что наша фирма что-нибудь продает и имеет собственный сайт, на котором расположены цены. Раз в сутки мы хотим их выгружать для поддержания актуальности.
Откройте конфигурацию и добавьте регламентное задание.
Настройка свойств
Рассмотрим самые важные параметры, которые необходимо заполнить в его свойствах.
Настройка расписания
Завершающим шагом мы настроим расписание нашей выгрузки на сайт по соответствующей гиперссылке в палитре свойств.
Получите понятные самоучители по 1С бесплатно:
Перед вами откроется типовая настройка расписания в 1С 8.3. Здесь нет ничего сложного. В рамках данного примера мы настроили запуск нашей выгрузки цен на сайт ежедневно с пяти до семи утра. В том случае, если регламентное задание не успеет отработать до 7:00, оно будет выполнено уже на следующий день.
Блокировка регламентных заданий
Запустите стандартную утилиту «Администрирование серверов 1С Предприятия» и откройте свойства той информационной базы, где вы создали регламентное задание (для клиент-серверных версий 1С).
В открывшемся окне (после ввода логина и пароля для доступа к ИБ) проверьте, чтобы не был установлен флаг на пункте «Блокировка регламентных заданий включена». Если вы столкнулись ситуацией, когда задание не отрабатывает, первым делом проверяйте эту настройку.
Таким же образом можно полностью отключить регламентные задания в 1С 8.3. Для отключения конкретных фоновых заданий можно воспользоваться встроенной в последние релизы обработкой «Консоль фоновых заданий».
Фоновые и регламентные задания в файловом режиме
В данном режиме настройку и запуск данных заданий намного труднее организовать. Чаще всего создается дополнительная учетная запись, сеанс которой всегда будет открыт.
Активация регламентных заданий в данном случае производится при использовании метода «ВыполнитьОбработкуЗаданий()».
Так же вы можете воспользоваться следующей конструкцией:
В качестве имени процедуры необходимо указать имя клиентской процедуры, которая должна будет выполниться. Интервал показывает, через сколько секунд будет произведено выполнение. Параметр «Однократно» не обязателен к заполнению. Он отражает, будет ли выполнена данная процедура однократно, либо несколько раз.
Отслеживание ошибок в фоновых заданиях
Посмотреть ход выполнения фоновых заданий, а так же наличие возможных ошибок можно в журнале регистрации. В фильтре установите отбор приложению «Фоновое задание» и при необходимости выберите интересующую важность, например, только «Ошибки».
В журнале регистрации будут показаны все записи, соответствующие вашему отбору с указанием комментария, по которому вы можете понять причину ошибки.
В одной внедряемой информационной системе значение регламентных заданий (РЗ) оказалось очень велико. С помощью них осуществляется автоматизированная проверка и загрузка исходных данных в систему. И надо же было такому случиться, РЗ стали иногда подвисать. Несколько раз в месяц, после перезапуска сервера 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;">);
ТекущееВремя = Дата ( стрТекущееВремя );
мПозже = Новый Массив ;
фПерезаписываем = Ложь;
Для каждого РЗ из мРЗ цикл
Если РЗ . Расписание . ВремяНачала > ТекущееВремя тогда
мПозже . Добавить ( РЗ );
ИначеЕсли РЗ . ПоследнееЗадание = Неопределено тогда
РЗ . Записать ();
фПерезаписываем = Истина;
ЗаписьЖурналаРегистрации ( "Регламентные задания" , УровеньЖурналаРегистрации . Предупреждение , РЗ . Метаданные , РЗ , "Перезаписано - " + РЗ . Метаданные . Имя );
Иначе
ЗаписьЖурналаРегистрации ( "Регламентные задания" , УровеньЖурналаРегистрации . Информация , РЗ . Метаданные , РЗ , "Нормально выполняется - " + РЗ . Метаданные . Имя );
КонецЕсли;
КонецЦикла;
Если фПерезаписываем тогда
Для каждого РЗ из мПозже цикл
РЗ . Записать ();
ЗаписьЖурналаРегистрации ( "Регламентные задания" , УровеньЖурналаРегистрации . Предупреждение , РЗ . Метаданные , РЗ , "Перезаписано - " + РЗ . Метаданные . Имя );
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Последний модуль был доработан. Обрабатываются все используемые РЗ. Если РЗ должно было начать выполняться до момента проверки, но не выполнялось, то перезаписываем его. Если были обновления, то перезаписываем и более поздние РЗ.
Иногда возникает необходимость отладить фоновое (регламентное) задание. Как раз с этим-то, зачастую, и возникает проблема.
Иногда возникает необходимость отладить фоновое (регламентное) задание. Как раз с этим-то, зачастую, и возникает проблема. И проблема эта заключается в том, что отладчику не удается подключиться к процессу исполняемому на стороне сервера.
Для решение этой проблемы нам необходимо решить две задачи:
1. Включить отладку на сервере 1С. По умолчанию отладка на сервере выключена и чтобы ее включить, необходимо:Запустить реестр Windows, прописав в "Выполнить" команду REGEDIT. Найти строчку
(взятую из параметров запуска службы Агент сервера 1С:Предприятия 8.1). (это для версии платформы 8.1)
Дописать в конец ключ -debug (не забываем перед ключом -debug ставить пробел)
Пример
. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.1 Server Agent] "ImagePath"= было "С:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "С:\Program Files\1cv81\server" ставим "С:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug -d "С:\Program Files\1cv81\server"
Перезапустить агент сервера. Готово. Теперь нам доступна отладка серверных потоков исполнения.
2. Регистр букв имени сервера и имени базы в соединение клиента с сервером 1С должен в точности совпадать.
Правильное подключение:
Фоновое задание - Srvr="SERVER-NAME";Ref="Base_Name"; Клиент - Srvr="SERVER-NAME";Ref="Base_Name";
Неправильное подключение:
Фоновое задание - Srvr="SERVER-NAME";Ref="Base_Name"; Клиент - Srvr="Server-name";Ref="Base_Name";
Как же узнать, с какими параметрами фоновое задание соединяется с базой? Можно придумать разные способы, одним из которых являетс запись в журнал регистрации этих параметров во время выполнения фонового задания.
Код следующий:
Процедура ЗаписатьСоединениеСБазой () Экспорт
ЗаписьЖурналаРегистрации (. СтрокаСоединенияИнформационнойБазы ());
КонецПроцедуры
Во время выполнения фонового задания в журнал регистрации будет записана строка с параметрами соединения с базой, которые использует фоновое задание.
Далее необходимо указать эти параметры в настройках запуска клиентского приложения С УЧЕТОМ РЕГИСТРА СИМВОЛОВ.
Теперь указываем автоматическое подключение к фоновым заданиям.
После проведения таких манипуляций можно производить отладку фоновых заданий.
Вы еще не читали? Вам это будет интересно.
Пример работы с деревом значений в 1С. Часть вторая - Добавление возможности проставления галок и сопоставление строке картинки.Рассмотрим на примере, как в дерево значений добавить возможность проставления галок и сопоставлять каждой конкретной строке требуемую нам картинку.
Пример работы с деревом значений в 1С. Часть первая - добавление строк.Работа с деревом значений немного отличается от работы с таблицей значений, в частности это видно на операции добавления строк. Смотрим на примере.
Отладка фоновых (регламентных) заданий в 1С 8Иногда возникает необходимость отладить фоновое (регламентное) задание. Как раз с этим-то, зачастую, и возникает проблема.
Удаленное программирование в 1С. Какие преимущества?Выбирая сотрудничество с удаленным программистом 1С, вы выбираете правильную экономию ваших средств и высокое качество выполнения задач.
1С фоновое задание позволяет нам производить какие-либо вычисления в системе незаметно для пользователя, то есть в фоне. Более того данный механизм позволяет нам распараллелить процесс вычисления. Распараллелить мы можем даже процедуру, которая будет выполняться. Для этого наше фоновое задание должно запускать еще несколько фоновых заданий. В этом случае процессы распараллеливаются и, если у нас многопроцессорная, многоядерная система, наш алгоритм будет работать эффективно. После запуска нескольких процессов мы можем сказать системе, что необходимо дождаться окончания выполнения этих процессов для того, чтобы потом каким-то образом свести результат.
К примеру, в типовых конфигурациях, в то время как пользователь работает, происходит выполнение различного рода сервисных фоновых заданий. Об этом может свидетельствовать записи журнала регистрации, в котором фиксируется факт выполнения таких действий. Причем на работу пользователя это никак не влияет, он просто их не замечает.
В идеале фоновое задание реализуется в варианте клиент-сервер, в этом случае вся нагрузка переходит на сервер. Что касается файлового варианта, то работа фонового задания возможна, но она имеет некоторые особенности.
Вот что выдаст система если не учесть эти особенности, и запустить фоновое задание в файловом варианте информационной базы.
Обратившись к синтакс-помощнику можно получить более детальные сведения о фоновых заданиях 1С. Здесь следует отметить, что это объект исключительно программный и он никак не сохраняется в базе данных. То есть мы создаем экземпляр класса, инициализируем свойства и запускаем его на выполнение.
Какие же средства мы имеем для управления фоновыми заданиями? Этим средством является объект метаданных"МенеджерФоновыхЗадания". У этого объекта есть метод "Выполнить", с помощью этого метода, как раз и запускается фоновое задание.
Имеет он следующие параметры: "ИмяМетода" - имя процедуры или функции, которую нужно выполнить, причем это должна быть процедура или функция серверного контекста; "Параметры" - массив параметров, количество элементов которого должно соответствовать количеству параметров нашей процедуры/функции, указанной в параметре "ИмяМетода"; "Ключ" - некий ключ уникальности, представляющий из себя строчку, по которой система понимает нужно ли запускать фоновое задание либо такое задание уже запущено; "Наименование" - здесь можно указать произвольное описание нашего метода.
Возвращаемым значением является объект "ФоновоеЗадание", содержащий текущее имя метода, текущий ключ и еще несколько свойств и методов. Одним из таких методов является метод "ОжидатьЗавершения". Его задачей является то, что мы может указать системе, чтобы ничего не производилось пока не будет завершено фоновое задание.
Фоновое задание 1С 8.2, 8.3 - Пример использования
Приведем пример работы с фоновыми заданиями 1С. Сначала создадим простой алгоритм, который будет ненадолго загружать систему 1С таким образом, чтобы мы ничего не могли в это время делать.
Для этого:
1. Создадим общий модуль "ОбработчикиФоновыхЗаданий", который будет компилироваться на стороне сервера;
2. Опишем в нем экспортную процедуру "ПроизветиФоновоеВычисление(Параметр)", которая принимает один параметр строкового типа;
3. Далее создадим внешнюю обработку и в событии нажатия на кнопку поместим код, запускающий наш алгоритм;
Готово. Теперь при запуске обработки и нажатии на кнопку происходит подвисание системы на несколько секунд, в процессе которого ничего нельзя сделать. Это как раз то, что нам и нужно было сделать.
Теперь обеспечим произведение этих вычислений в фоне, то есть чтобы фоновое задание 1С 8.2, 8.3 выполнялось, но нам не мешало.
Для этого:
1. В обработке, в событии нажатия кнопки пропишем следующий код.
Здесь первым параметром мы передаем имя процедуры общего модуля, а вторым - массив параметров. Третьим параметром нужно передать уникальный ключ и четвертым некоторое описание нашей процедуры.
Готово. Теперь можем проверять. Перезапускаем нашу обработку нажимаем кнопку, система не подвисает и мы работаем беспрепятственно.
Кстати, убедиться в том, что 1С фоновое задание работало можно посмотрев в записи журнала регистрации. В этих записях фиксируется когда производился запуск фонового задания.
Приведенный выше пример показывает, как работает фоновое задание 1С 8.2, 8.3. То, каким полезным оно может быть в разработке ваших алгоритмов.
Вы еще не читали? Вам это будет интересно.
Пример работы с деревом значений в 1С. Часть вторая - Добавление возможности проставления галок и сопоставление строке картинки.Рассмотрим на примере, как в дерево значений добавить возможность проставления галок и сопоставлять каждой конкретной строке требуемую нам картинку.
Пример работы с деревом значений в 1С. Часть первая - добавление строк.Работа с деревом значений немного отличается от работы с таблицей значений, в частности это видно на операции добавления строк. Смотрим на примере.
Отладка фоновых (регламентных) заданий в 1С 8Иногда возникает необходимость отладить фоновое (регламентное) задание. Как раз с этим-то, зачастую, и возникает проблема.
Удаленное программирование в 1С. Какие преимущества?Выбирая сотрудничество с удаленным программистом 1С, вы выбираете правильную экономию ваших средств и высокое качество выполнения задач.
Зачастую пользователи жалуются на то, что «1С 8.3 тормозит»: медленно открываются формы документов, долго проводятся документы, запускается программа, долго формируются отчеты и так далее.
Причем такие «глюки» могут встречаться в разных программах:
Причины могут быть разные. Это не восстановлена граница последовательности проведения документов, слабый компьютер или сервер, неправильно сконфигурирован сервер 1С.
В этой статье я хочу рассмотреть одну из самых простых и распространенных причин медленной работы программы – фоновые и регламентные задания. Данная инструкция будет актуальна для пользователей файловых баз на 1-2 пользователя, где нет конкуренции за ресурсы.
Если Вас интересует более серьезная оптимизация клиент-серверного варианты работы системы, посетите раздел сайта 1С Эксперт.
Где в 1С 8.3 регламентные задания
Не успел я загрузить программу, как в 1С выполнилось множество фоновых заданий. Посмотреть их можно, зайдя в меню «Администрирование», далее -«Поддержка и обслуживание»:
Вот так выглядит окно с выполненными задачами:
Получите понятные самоучители по 1С бесплатно:
А так полный список всех регламентных заданий, которые запускаются:
Среди этих задач видны такие, как «Загрузка валют«, загрузка различных классификаторов, проверка актуальности версии программы и так далее. Например, мне ни к чему почти все эти задачи. Я не веду валютный учет, версии контролирую сам, классификаторы загружаю по необходимости.
Соответственно, в моих (и в большинстве случаев в Ваших) интересах отключить ненужные задачи.
Отключение регламентных и фоновых заданий в 1С 8.3
Рассмотрим, как отключить регламентные фоновые операции. Включенные задачи отмечены зеленым флажком. Зайдем в одну из них двойным кликом. Например, в «Загрузку классификаторов банков«:
Чтобы отключить задание, снимем флажок «Включено». Нажимаем «Записать и закрыть». Теперь оно выполняться не будет. Таким образом нужно отключить все ненужные задачи. Если сомневаетесь насчет какого-либо задания, обратитесь к специалисту. Производительность программы должна значительно увеличиться.
Если база данных находится на сервере, специалистам по обслуживанию системы необходимо помнить, что при обновлении нужно принудительно отключать фоновые задания на сервере 1С: Предприятие, так как они будут мешать процедуре обновления.
Читайте также: