Имя: Пароль:
1C
1С v8
Структура из таблиц значений в фоновом задании
0 sereban
 
08.10.12
12:36
Помещаю структуру во временное хранилище:
СтруктураХранения = Новый Структура;
СтруктураХранения.Вставить("ТЗСоответствиеУслуг", ТЗСоответствиеУслуг);
СтруктураХранения.Вставить("ТЗКвитанции", ТЗКвитанции);
   
АдресДанных = ПоместитьВоВременноеХранилище(СтруктураХранения, УникальныйИдентификатор);

После этого в фоновом задании запускаю процедуру общего модуля, в которой получаю эти же таблицы из структуры:
СтруктураХранения = ПолучитьИзВременногоХранилища(АдресДанных);
ТЗСоответствиеУслуг = СтруктураХранения.ТЗСоответствиеУслуг;
ТЗКвитанции = СтруктураХранения.ТЗКвитанции;

Как результат получаю ошибку:
{Форма.Форма.Форма(404)}: Ошибка при вызове метода контекста (ОжидатьЗавершения)
ФоновыеЗадания.ОжидатьЗавершения(МассивЗаданий);
по причине:
Выполнение одного или нескольких заданий завершилось с ошибкой

отладчиком попасть в фоновое задание не получилось. Поэтому комментировал код, для выявления ошибки и обнаружил, что ошибка в строке:
ТЗСоответствиеУслуг = СтруктураХранения.ТЗСоответствиеУслуг;

При этом если вызвать процедуру общего модуля, которую запускает задание, то никаких ошибок не возникает. В чем может быть проблема? Заранее благодарю за дельные советы)
1 pumbaEO
 
08.10.12
12:39
Совет 1: подключиться отладчиком к фоновому заданию.
Совет 2: посмотреть на описание ошибки.
2 sereban
 
08.10.12
12:44
(1) Подключиться отладчиком это хорошо. Не срабатывает. Отладка на сервере включена (проверено работает во всех серверных процедурах). Галочка Автоматические подключение для фоновых заданий в отладке стоит. Все действия делаю на сервере 1с. Фоновое задание запускается вот так:
ФонЗадание = ФоновыеЗадания.Выполнить("тест.ЗагрузитьКвитанцииНаСервереВОтдельномПроцессе", МассивПараметров);

Должна работать отладка в таком случае?
3 pumbaEO
 
08.10.12
13:02
Должно работать.
В консоле заданий какую ошибку пишет?
4 sereban
 
08.10.12
13:21
(3) Чет я даже не подумал, что консоль может чем-то помочь. А то что она ошибку пишет - это хорошо. Не знал я этого. Не получается данные передать в фоновое задание. СтруктураХранения = неопределено, со всеми последствиями. А если процедуру задания вызвать отдельно, то все работает. Получается, что значение сохраненное с помощью ПоместитьВоВременноеХранилище() доступно только внутри сеанса.
5 sereban
 
08.10.12
13:21
(3) Спасибо ))
6 pumbaEO
 
08.10.12
13:25
(4) Не увидел у тебя нигде, что бы фоновое задание вообще с левого сеанса запускалось.
7 sereban
 
08.10.12
13:43
(6)А оно всегда будет с левого сеанса. Его же сервер запускает по моему запросу. В том то и суть, что задание будет выполняться, а пользователь продолжит работу. Жаль только параметры не получилось передать как я хотел. Придется в параметры процедуры совать их.
8 pumbaEO
 
08.10.12
13:47
(7) эээ, делаешь ты что-то неправильно. Все нормально отрабатывает у меня.
Смотри пример http://danila.org.ua/parallelnaya-zagruzka-zagruzitbyis/
9 sereban
 
08.10.12
14:25
(8) Спасибо! Отличная статья. Я так и сделал, когда первый вариант не получился. Просто изначально я параметры в фоновые задания пытался передать через ПоместитьВоВременноеХранилище, а их нужно "забирать" только таким способом, а передавать просто в параметрах процедуры при вызове. ФоновыеЗадания.Выполнить("ОбщийМодульСервер.ЗагрузитьИзВИБ",МассивПараметров)    - здесь у тебя в массиве параметров все что нужно, а у меня в массиве был адрес на временное хранилище только, в которое я все и засунул.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс