Имя: Пароль:
1C
1С v8
Как определить регламентное задание?
0 extrim-style
 
24.05.13
09:54
База клиент-серверная. Создал предопределенное регламентное задание, которое должно в том числе записывать документы. Как мне в процедуре ПередЗаписью документа определить, что документ записывается регламентным заданием?
1 extrim-style
 
24.05.13
10:13
Ап
2 Sammo
 
24.05.13
10:15
1. На сервере
2. Доп. объекты
3 extrim-style
 
24.05.13
10:19
(2) что за доп. объекты?
4 extrim-style
 
24.05.13
10:29
Оно же в отдельном сеансе выполняется? Можно его как-то отладить?
5 Sammo
 
24.05.13
10:30
(3) Структура у объекта.
ДополнительныеСвойства (AdditionalProperties)
Использование:
Только чтение.
Описание:
Тип: Структура. Может использоваться в тех случаях, когда необходимо хранить некоторые значения, связанные с объектом, на время выполнения некоторых операций, без изменения объекта. Например, при обработке событий в подписке на события.
XML-сериализация.
6 Sammo
 
24.05.13
10:30
(4) См. отладка на сервере
7 extrim-style
 
24.05.13
10:49
(6) ну я включил отладку на сервере ключом -debug, а как мне фоновое задание отладить?
И что с (5) делать?
8 extrim-style
 
24.05.13
10:51
9 Irbis
 
24.05.13
10:56
(7) Самое простое суёшь свое задание в обработку, и отлаживаешь. А потом просто вызываешь в регламенте.
10 Shurjk2
 
24.05.13
10:57
(0) Реквизит или переменная тебя спасет.
11 extrim-style
 
24.05.13
10:58
(9) в обработке работает, но от пользователя. А в регламенте почему-то работает только наполовину.
12 extrim-style
 
24.05.13
11:01
(10) чтож вы всё не договариваете? я уж и клещи раскаленные приготовил). Говоря говори.
13 Irbis
 
24.05.13
11:06
(11) В обработке не должно быть ничего, что нельзя вызвать на сервере.
14 extrim-style
 
24.05.13
11:07
(13) вроде бы нет ничего.
15 Irbis
 
24.05.13
11:12
(14) Да и чудес я тоже не встречал... При выполнении в консоли заданий глючный регламент ошибку пишет. Смотри и думай.
16 Sammo
 
24.05.13
11:18
(12) А подумать?
вариант -
1. в своей обработке перед вызовом записи объекта добавить в структуру
Объект.ДополнительныеСвойства новй элемент.
2. Перед записью проверять на наличие в структуре ДополнительныеСвойства значения по ключу

Либо делать проверку на то - где исполняется запись - на клиенте или на сервере.

Вариант реквизита возможен, но более избыточен - зачем в базе создавать строку в таблице метаданного, если можно без него спокойно обойтись
17 extrim-style
 
24.05.13
11:23
(15) проверил в консоли - ошибок нет, но и документы не записыаваются почему-то
18 extrim-style
 
24.05.13
11:24
+(17) хотя чтение почты нормально отрабатывает
19 Serg_1960
 
24.05.13
11:30
(0) Перед записью документа не нужно этого знать, поверь на слово :)
(17) Если "ошибок нет" это ещё не факт что их нет на самом деле. "Если... Отказ = Истина..." и/или "Попытка... Исключение... КонецПопытки" могут спрятать ошибки так, что не сразу заметишь :(
20 extrim-style
 
24.05.13
11:39
Не получается отладить фоновое задание.
Включено:
- ключ -debug (работает, заходит в обработке в серверную процедуру)
- устанавливать режим разрешения отладки
- начинать отладку при запуске
- предметы отладки - автоматическое подключение фонового задания

В точку останова не заходит. Что делать?
21 Serg_1960
 
24.05.13
11:40
Можно без затей, тупо "в лоб" - в копии базы пройтись по алгоритму записи документа и в "критичных местах" расставить "метки" - вывод сообщений в журнал действий пользователя.
22 acsent
 
24.05.13
11:41
Пиши лог додробный. Всегда пригодится
23 extrim-style
 
24.05.13
11:41
+(20) еще порты посмотрел на сервере и в отладке подправил
24 extrim-style
 
24.05.13
11:43
(22) лучше подскажи как фоновое задание отладить
25 Infsams654
 
24.05.13
11:57
(24) "ну я включил отладку на сервере ключом -debug, а как мне фоновое задание отладить?" - не останавливается ? Тогда пиши в ЖР где нужно, там и увидишь что не так
26 temmy70
 
24.05.13
12:46
можно в ЖР писать, можно в текстовый файл. Запилил процедурку для записи логов:


Процедура ЗаписатьЛогОшибок(Текст)
   
   ЛогФайл = "ваш_путь";
   зт = Новый ЗаписьТекста(ЛогФайл,,,истина,);
   зт.ЗаписатьСтроку(Текст);
   зт.Закрыть();    
   
КонецПроцедуры
27 extrim-style
 
24.05.13
13:02
Итак, правильный ответ проблемы отладки фонового задания тут:
http://www.nastroy-ka.ru/faq/8-faq/132-2012-10-16-09-50-35.html
или можно как в (6) v8: Не запускается отладка фонового задания.

Я бы, наверное охарактеризовал эту проблему как "необходимость писать имя сервера большими буквами"

Сохраню на всяк. случай:
1. Остановить службу 1C:Enterprise 8.2 Server Agent
2. В реестре в ветке HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\1C:Enterprise 8.2 Server Agent\ для параметра ImagePath добавляем -debug и сохраняем. Получается что-то вроде такого: «C:\Program Files\1cv82\8.2.10.82\bin\ragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «C:\Program Files\1cv82\srvinfo» -debug
3. Записываем и запускаем службу.
4. В параметрах базы сервер прописываем заглавными буквами
или в фоновом задании добавляем код ЗаписьЖурналаРегистрации("Соединение с базой",,,,СтрокаСоединенияИнформационнойБазы()); - потом смотрим в журнал и сличаем с параметрами подключения к базе (можно так:
файл=новый ТекстовыйДокумент;
файл.ДобавитьСтроку("СТРОКА:"+СтрокаСоединенияИнформационнойБазы());        
файл.Записать("c:\qwerty.txt");
5. Запускаем конфигуратор, ставим флаг в Отладка - Подключение - Автоматическое подключение - Фоновые задания (флаг слетает при каждом перезапуске конфигуратора на 8.2.17.153)
При попадании в точку останова в Отладка - Подключение будет пустой пользователь с типом Фоновое задание