Имя: Пароль:
1C
1С v8
Отладка регламентных заданий на сервере.
,
0 WED
 
19.12.12
22:46
Знаю, что тема не новая. Уже перерыл гугл и яндекс, но не помогает.

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

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

Конфигуратор запускается на одном компе, сервер на другом. На обоих платформа 8.2.16.368

Что упускаю и как отлаживать фоновые задания?
1 WED
 
19.12.12
22:47
+(0) Процедура точно вызывается - записью в журнал проверял.
2 Undefined vs NULL
 
19.12.12
22:47
(0) попробовать запускать как обычную обработку например
3 WED
 
19.12.12
22:49
(2) мм. не очень понял. Предлагаешь процедуру, которая из регл.задания вызывается вынести в обработку? а что это даст?
4 Fragster
 
гуру
19.12.12
22:49
сделать модуль только "на сервере", подключиться отладкой к серверу, запустить процедуру обработкой
5 йети
 
19.12.12
22:51
(0) какое имя у базы в sql, сервере 1С и форме запуска 1С
6 WED
 
19.12.12
22:51
(2,4) аааа, понял. это я уже пробовал - работает нормально, проблемы возникают при работе именно из фонового задания, я так понимаю, что из-за работы на сервере, а не на клиенте.
7 WED
 
19.12.12
22:52
(5) одинаковое везде, ничем необычным не выделяется: jl_test
8 Fragster
 
гуру
19.12.12
22:52
(6) модуль с процедурой ТОЛЬКО НА СЕРВЕРЕ, остальные галочки сними
9 WED
 
19.12.12
22:55
(8) Я ж говорю - пробовал. Работает. Причем не выдает ни ошибок, ничего. Просто код внутри процедуры не работает и всё. Почему отладка и понадобилась.
10 Александр_
Тверь
 
19.12.12
23:00
Э.. тут какая-то путаница.
Регламентное задание, запускает фоновое задание по расписанию.

Для отладки кода, который выполняется по расписанию фоновым заданием, достаточно двух шагов:
1. Запустить сервер предприятия в режиме отладки
2. Запустить процедуру, которую выполняет регламентное задание (сделай внешнюю обработку и в ней форму, по кнопе выполнить напиши что-то типа:
МойМегаМодуль.РегламентнаяПроцедура()
).

Единственный ньюанс,вызываемая процедура должна находиться в модуле, выполняющимся на сервере.

И хоть наотлаживайся.
11 WED
 
19.12.12
23:03
(10) Вот и я так думал. Пока не столкнулся, что если просто вызываешь процедуру - работает идеально, а когда она вызывается при срабатывании фонового задания - код не работает вообще. Причем если среди кода в любое место воткнуть запись в журнал - пишет. Я вообще в недоумении.
12 Jaap Vduul
 
19.12.12
23:04
Насколько помню, строки подключения на сервере приложения и в конфигураторе должны совпадать (в т.ч. и регистр)
13 Александр_
Тверь
 
19.12.12
23:07
(11) какая проблема отладчиком посмотреть, что происходит?
А ситуацию, которую ты описал - достаточно часто встречается.
возможные причины:
1. Твой код использует методы не доступные на сервере.
2. Твой код использует объекты (com например) системы, которые не доступны на сервере
3. Твой код обращается к каким либо файлам или сервисам на которые у процесса под которым запущен сервер предприятия  нет прав.

Список можно и дальше продолжить
14 WED
 
19.12.12
23:09
(13) Блин, так и не получается отладчиком попасть - не работает брейкпоинт когда процедура вызывается из фонового задания. А код там простой и ничего из перечисленного нет - чистая математика по формулам.
15 Александр_
Тверь
 
19.12.12
23:11
(15) если ты хочешь отлаживать процедуру, то тебе ее надо вызывать не фоновым заданием!
А прямым вызовом:

т.е. МойМегаМодуль.РегламентнаяПроцедура();
16 WED
 
19.12.12
23:13
(15) Еще раз: когда вызываю процедуру как ты описываешь - работает идеально. Когда процедура вызывается из фонового - код не работает вообще, хотя процедура точно вызывается, ибо если в код внедрить строку записи в журнал - пишется.
17 Александр_
Тверь
 
19.12.12
23:13
тогда другой вопрос
какой должен быть результат выполнения? Как ты определяешь, что ничего не делается?
18 Jaap Vduul
 
19.12.12
23:14
(15)
Запиши в ЖР из фонового СтрокаСоединенияИнформационнойБазы() и сравни с тем, что у тебя в конфигураторе в окошке "О программе".
19 WED
 
19.12.12
23:17
(17) Код - простая математика: на входе два числа, в зависимости от первого изменяется второе. И результат и оба входящих числа пишу в журнал для проверки. Когда вызов простой - результат правильный, когда вызов из фонового - входящие числа есть, результата нет, точнее первое число как было так и осталось.
20 WED
 
19.12.12
23:19
(18) совпадают.
21 WED
 
19.12.12
23:20
Пробовал писать в журнал изменяемое число после каждой формулы - не изменяется вообще. т.е. запись в журнал работает, а математика (банальное А=А+2) нет. Ну как так?
22 Александр_
Тверь
 
19.12.12
23:21
попробуй перегрузить сервер предприятия.
23 WED
 
19.12.12
23:22
(22) Уже пробовал. Практически самое первое и было.
24 Александр_
Тверь
 
19.12.12
23:23
(23) динамическое обновление использовал?
25 WED
 
19.12.12
23:26
Всё. Заработал код.
скопировал весь код из модуля в блокнот, убил модуль (с сохранением конфы), создал заново, вставил код.
26 WED
 
19.12.12
23:28
Вопрос из разряда: А шо это было?!
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший