Как включить отладку фоновых заданий 1с
В современных конфигурациях 1С:Предриятия очень широко используются фоновые задания.
В частности во всех типовых конфигурациях многие отчеты формируются в фоновом режиме, что позволяет во время формирования отчета продолжать работать в той же самой сессии 1С не дожидаясь завершения выполнения отчета. И конечно же возникает необходимость отладки кода во время выполнения фоновых заданий. Для успешного запуска отладки фоновых заданий необходимо выполнить несколько условий.
Включить режим отладки на сервере 1С:Предприятия.
Первое, что необходимо сделать — это убедиться в том, сервер 1С:Предприятия запущен в режиме отладки. Если отладка на сервере не включена, необходимо остановить службу ragent и повторно запустить ее с параметром /debug
Настроить автоматическое подключение фоновых заданий в конфигураторе
Поскольку фоновое задание не имеет клиентской части, в конфигураторе выполняется настройка автоматического подключения к фоновым заданиям. Для этого необходимо в меню выбрать пункт Отладка —> Подключение
В открывшемся диалоговом окне нажать кнопку Автоматическое подключение и в следующем окне установить флажок Фоновые задания
Правильно прописать строку подключения к базе 1С
Теоретически двух вышеперечисленных пунктов должно хватить, чтобы в момент выполнения фонового задания начали отрабатывать точки останова. Но на практике многие сталкиваются с тем, что автоматического подключения к фоновым заданиям не происходит. Это связано со строкой подключения к информационной базе.
Дело в том, что строка подключения для запуска конфигуратора должна в точности совпадать со строкой подключения фонового задания. Причем совпадение должно быть посимвольным. Учитывается даже регистр букв. Ведь при добавлении базы в список информационных баз мы можем прописать кластер серверов для одной и той же базы несколькими разными способами: с помощью IP-адреса, через имя сервера, с указанием порта и без него. И все эти разные строки подключения могут срабатывать одинаково успешно. Но при отладке фоновых заданий могут начаться проблемы. Так, например, я столкнулся с тем, что в списке баз у меня была прописана строка подключения с использованием порта
А фоновое задание почему-то запускалось без указания порта
Поэтому пришлось изменить строку подключения в списке баз соответствующим образом.
Но тут сразу же возникает вопрос. Как узнать строку подключения фонового задания? Здесь нам может прийти на помощь журнал регистрации. Ведь в момент выполнения фонового задания мы можем программно делать записи в журнал регистрации. А с помощью процедуры СтрокаСоединенияИнформационнойБазы() мы сможем получить строку подключения.
Таким образом, делаем в подходящем общем модуле (у меня это будет ФоновыеЗаданияСервер) вот такую процедуру
А теперь выполним эту процедуру запустив программно фоновое задание:
Открываем журнал регистрации, смотрим запись со строкой подключения, и прописываем настройки подключения к базе по аналогии с фоновым заданием.
Отладка - это основной инструмент которым должен овладеть начинающий программист. Без отладки написание любой более менее сложной функции и\или объекта превратиться в настоящую муку. Сам я выбираю такой способ, хорошо себя зарекомендовавший себя: пишу блок кода в 50-100 строк не останавливаясь и не проверяя отладчиком. Затем идет первый запуск, обязательно предварительно ставлю точку останова на первой написанной строке. Затем однократно полностью прохожу весь код построчно, останавливаясь на каждой переменной и сверяю ее "тип значения", а также ее "значение" с тем что было спланировано перед доработкой.
Крайние важные особенности отладки в 1С
- Если необходимо быстро перейти к строке, на которой платформа "вываливается" с ошибкой, то необходимо установить флаг "Останавливаться по ошибке":
Как запустить отладчик от имени другого пользователя
- В конфигураторе нажать "Сервис - Параметры" и задать имя пользователя на вкладке "Запуск 1С:Предприятия":
Отладка в клиент-серверном режиме
В режиме клиент-сервер, начинающего программиста ждет сюрприз, отладчик прекрасно "входит" в процедуры "на клиенте" но дойдя до вызова серверной процедуры не заходит в нее, а как бы проходит строку, если вы бы вы нажали "шагнуть через F10". Причина проста - отладчику необходим доступ к серверной части 1С, и пока вы его не откроете вы не сможете отлаживать "серверный" участок кода.
Как включить отладку на сервере. Все очень просто необходимо изменить параметры запуска службы 1С-сервера:
- Открываем реестр (на ПК где крутится сервер 1С:предприятия) - пуск - regedit
- После правки реестра перезапускаем службу через панель управления - .. службы.
- Готово! Теперь отладчик будет заходить внутрь серверных модулей\процедур.
У пользователя проблема, как к нему подключиться и отладить кусок кода
Бывают ситуации когда возникает трудноуловимая ошибка и появляется только у одного пользователя. Если ошибку пользователю удается воспроизвести, можно подключиться отладчиком к уже запущенному процессу пользователя и отладить процедуру. Как сделать:
- В запущенной программе пользователя поставить флаг разрешающий отладку в этом сеансе. В меню - сервис - параметры - отладка в текущем сеансе.
Подключение к web-сервису, подключение к фоновому заданию
Для того чтобы отладить web-сервис надо поймать нужный "поток" на сервере. А это означает а) надо включить отладку на сервере (см. выше) б) надо включить спец. флажок, который позволит перехватить управление потоком.
Иногда возникает необходимость отладить фоновое (регламентное) задание. Как раз с этим-то, зачастую, и возникает проблема.
Иногда возникает необходимость отладить фоновое (регламентное) задание. Как раз с этим-то, зачастую, и возникает проблема. И проблема эта заключается в том, что отладчику не удается подключиться к процессу исполняемому на стороне сервера.
Для решение этой проблемы нам необходимо решить две задачи:
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С производится запуск фоновых заданий, каким образом можно получить список заданий при помощи метода "ПолучитьФоновыеЗадания()". Итак, данный метод возвращает нам некоторый массив. Посмотрим что же он содержит.
На рисунке представленном выше видно содержимое данного массива.
Обратите внимание на поле "Состояние". Оно содержит информацию о том, успешно ли было выполнено запущенное фоновое задание или же оно еще выполняется.
Также там содержится информация о неудачном выполнении задания. Еще этот массив содержит информацию о ключах, уникальных идентификаторах, наименовании фоновых заданий. Информация о выполняющихся и выполненных заданиях хранится в информационной базе, но есть ограничение на количество хранимых записей в таблице. Это количество составляет порядка 1000 записей. То есть при добавлении новых элементов старые удаляются. Также задание удаляется из таблицы если оно было выполнено более суток назад.
Пример работы с фоновым заданием 1C - Метод "ПолучитьФоновыеЗадания"
Давайте также рассмотрим работу с фоновыми заданиями на примере метода "ПолучитьФоновыеЗадания()". В данном методе есть возможность установить отбор на получаемые записи. То есть в качестве параметра метода нам нужно передать структуру.
Структура может содержать поля: Уникальный идентификатор, Ключ, Состояние, Начало, Конец, Наименование, ИмяМетода, РегламентноеЗадание.
Например, если бы нам нужны были только выполняющиеся задания мы бы накладывали отбор с именем элемента структуры "Состояние" и значением бы мы указали системное перечисление "СостояниеФоновогоЗадания" в состояние активно. Итак, для начала необходимо добиться того, чтобы в демонстрационной базе появились записи о выполнении фоновых заданий 1С.
Для реализации примера сделаем следующее:
1. Создадим общий модуль "ОбработчикиФоновыхЗаданий", выполняемый на сервере.
И добавим в него следующий код:
Процедура ПроизвестиФоновоеВычисление ( Параметр ) Экспорт
Пока ТекущаяДата ( ) - ВремНач Цикл
2. Создадим обработку, разместим на форме кнопку "Выполнить задание в фоне" и в процедуре обработки события нажатия на кнопку добавим код:
Описание вызываемой процедуры:
Теперь запустим 1С в режиме предприятия и запустим выполнение фонового задания.
Готово. Этими действиями мы добились того, что в нашей демонстрационной базе появились записи о выполнении фоновых заданий 1С и теперь можно продемонстрировать пример получения их массива, содержащегося в нашей базе.
Добавим на форму еще одну кнопку "Получить фоновые задания". Напишем в процедуре обработки нажания следующий код:
Текст процедуры на сервере:
Запустим 1С на выполнение и нажмем кнопку "Получить фоновые задания".
Надеюсь приведенный выше пример дал вам некоторое понятие о механизме фоновых заданиях реализованном в системе 1С. Более детально ознакомиться со всеми тонкостями вы можете во встроенном синтакс-помошнике 1С.
Вы еще не читали? Вам это будет интересно.
Пример работы с деревом значений в 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С, вы выбираете правильную экономию ваших средств и высокое качество выполнения задач.
Читайте также: