Имя: Пароль:
1C
 
8.3.12 Фоновое задание + Поместить во временное хранилище + ОФ
0 Air777
 
16.08.18
16:55
До 8.3.10 хоть как то работало в обычных формах. В 8.3.12 окончательно сломали. Выходит штатного рабочего метода вернуть результат в обычных формах теперь нет вовсе. Опять тягать через Ж.. простите, через базу и сериализацию в строку наше всё (

Спасибо вам разработчики.
1 polosov
 
16.08.18
17:00
"Повторное указание в качестве параметра Адрес метода ПоместитьВоВременноеХранилище() значения, для которого применялся метод УдалитьИзВременногоХранилища(), приведет к исключению.
В режиме совместимости с версией 8.3.11 поведение не изменилось."

Ты про это?
2 PiotrLoginov
 
16.08.18
17:01
(0) Во-первых, ИМНИП, критика платформы здесь запрещена. Во-вторых, почему у меня все возвращает из ФЗ?
3 PiotrLoginov
 
16.08.18
17:02
*ЕМНИП
4 Air777
 
16.08.18
17:13
(1) в описании изменений к платформе нет этого но глядя в то что они ковырялись там очевидно да.

Я про


ПоместитьВоВременноеХранилище(<Данные>, <Адрес>)
...
Сохраняет сериализуемое значение во временное хранилище.
...
Примечание:

Временное хранилище, сформированное в одном сеансе, недоступно из другого сеанса.
Исключением является возможность передачи данных из фонового задания в сеанс, инициировавший фоновое задание, с помощью временного хранилища. Для такой передачи следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание.
Данные, помещенные во временное хранилище в фоновом задании, не будут доступны из родительского сеанса до момента завершения фонового задания.
Данные, помещенные в фоновом сеансе в хранилище по сформированному в родительском сеансе адресу, сразу после помещения становятся недоступными в фоновом сеансе.
5 Air777
 
16.08.18
17:15
Изменение режима совместимости не решает проблему.
6 Air777
 
16.08.18
17:16
Есть много сообщений на форуме на эту тему. Оно хоть и криво но работало. Многие комментаторы отмечали что кривизна - фича.
Теперь умерла даже фича
7 Cyberhawk
 
16.08.18
17:16
Сообщить + ПолучитьСообщенияПользователя решает
8 DTX 4th
 
16.08.18
17:20
(4) Тип это работает только в УФ?
9 Air777
 
16.08.18
17:21
(7) мне нужно вернуть с сервера сгенерированные табличные документы. А там только текст. Варианты через Ж я знаю еще как минимум еще 2. Но я хотел штатный
10 Air777
 
16.08.18
17:21
(8)Да и это расходится с описанием
11 Вафель
 
16.08.18
17:22
(10) зачем ты ОФ платформу обновляешь?
12 Air777
 
16.08.18
17:24
(11) Ну не обновлять это вообще не вариант. Есть другие изменения в платформе которые интересны.
13 Cyberhawk
 
16.08.18
17:25
(9) "там только текст" // Не знаю, где "там", но через строку можно все что хочешь передать
14 Air777
 
16.08.18
17:27
(13) Я же не сказал что это не вариант. Да это вариант но он и  с той же грядки нештатных методов. Разрабы штатные то курочат а нештатные и подавна. Возьмут завтра введут лимит на длину строки и опять досвидос или еще чего.
15 Air777
 
16.08.18
17:29
+ передавать строкой большой файл это затратно. Я замеры делал через временное хранилище существенно быстрее на больших данных так как реально только указатель в памяти передается. А тут текстовый поток безмерной длины
16 Cyberhawk
 
16.08.18
17:29
Я так понял тебе не нужно что-то получать из ФЗ пока оно не завершено - тебе достаточно просто по его завершению получить результат, так?
17 Air777
 
16.08.18
17:30
да
18 Cyberhawk
 
16.08.18
17:31
Выполняй вызов ФЗ и получение его результата на сервере, а не на клиенте
19 Air777
 
16.08.18
17:32
На клиент как я передам значение результата?
20 Air777
 
16.08.18
17:32
Это ж ОФ
21 Cyberhawk
 
16.08.18
17:33
Какие проблемы?
22 Air777
 
16.08.18
17:34
(21)Разверни ответ я не понял
23 Air777
 
16.08.18
17:37
Народ у кого то тут есть доступ к партнерскому форуму? Пожалуйста переадресуйте вопрос туда.
На мой взгляд это очевидный баг и несоответствия описанию
24 Новиков
 
16.08.18
17:41
И что писать? Вот это? "8.3.12 Фоновое задание + Поместить во временное хранилище + ОФ"?
25 Cyberhawk
 
16.08.18
17:41
(22) Опиши как передаешь в ФЗ адрес ВХ
26 Air777
 
16.08.18
17:55
//Модуль формы
Перем Ключ;
Процедура Выполнить()
АдресРезультата=ПоместитьВоВременноеХранилище(Неопределено,Новый УникальныйИдентификатор);
Параметры=Новый Массив;
Параметры.Добавить(АдресРезультата);
Ключ=Новый УникальныйИдентификатор;
ФоновыеЗадания.Выполнить("ПолныеПрава.Сформировать",Параметры, Ключ, "ФЗ");
ПодключитьОбработчикОжидания("ПроверкаГотовности",1);
КонецПроцедуры

//
Процедура ПроверкаГотовности() Экспорт
ФильтрОтбора = Новый Структура("Наименование,Ключ,Состояние", "ФЗ", Ключ, СостояниеФоновогоЗадания.Завершено);
    МассивЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(ФильтрОтбора);
    Если МассивЗаданий.Количество() > 0 Тогда
        Значение=ПолучитьИзВременногоХранилища(АдресРезультата);
        Сообщить(Значение);

КонецЕсли;
КонецПроцедуры

//Серверный модуль ПолныеПрава
Процедура Сформировать(АдресРезульта)  Экспорт
    Результат=1;
    ПоместитьВоВременноеХранилище(Результат, АдресРезульта);    
КонецПроцедуры
27 Air777
 
16.08.18
17:56
Всегда возвращает Неопределено хотя должно быть 1
28 Air777
 
16.08.18
17:58
на 8.3.8 и 8.3.10 в файловой работает идеально в серверной со 2й попытки. В 8.3.12 в серверной не работает вовсе
29 Air777
 
16.08.18
18:05
Тестировал на 8.3.12.1595
30 Cyberhawk
 
16.08.18
18:06
Выполняй код получения адреса ВХ и вызова ФЗ на сервере
31 Fragster
 
гуру
16.08.18
18:13
Ну вообще помещенные во временное хранилище данные протухают при следующем вызове, если не указать при помещении идентификатор формы. Это по документации так. то, что работало в 8.3.8 - случайность :)
32 Cyberhawk
 
16.08.18
18:17
"помещенные во временное хранилище данные протухают при следующем вызове, если не указать при помещении идентификатор формы" // Ошибаешься
33 mszsuz
 
16.08.18
18:20
(26) А в ОФ можно в модуле формы объявлять переменную "Параметры"?
34 mszsuz
 
16.08.18
18:23
(31) серьезно?
35 Air777
 
16.08.18
18:27
Ребят может таки переадресуете вопрос на партнерский форум а?
Все таки хотелось бы внятного ответа, а не гадания на кофейной гуще.

Заранее спасибо.
36 Air777
 
16.08.18
18:28
(30) это никак не решает проблему передачи результат между сервером и клиентом. Сам сервер не хранит состояние, а в базу я это писать не хочу. Остается только в строку, но это тоже не подходит.
37 Cyberhawk
 
16.08.18
18:29
Какую проблему?
38 mszsuz
 
16.08.18
18:30
(35) Там ошибками не занимаются. Пиши на v8@1c.ru
39 mszsuz
 
16.08.18
18:33
(36) Посмотри в отладчике, в Сформировать(АдресРезульта) параметром точно адрес прилетает?
40 mszsuz
 
16.08.18
18:38
(31) "Если передан УникальныйИдентификатор, не являющийся уникальным идентификатором формы, то значение будет удалено после завершения сеанса пользователя."
т.е. значение будет храниться всё время сеанса.
И оно должно быть сериализуемым.
41 Fragster
 
гуру
16.08.18
18:47
(40) ну там же описание для фоновых написано - только УИД формы для передачи между сеансами катит
42 Air777
 
16.08.18
23:39
(39) точно, это выдержка из рабочего кода.
43 Agidel
 
09.11.18
10:52
А если вместо
АдресРезультата=ПоместитьВоВременноеХранилище(Неопределено,Новый УникальныйИдентификатор);
написать
АдресРезультата=ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший