Имя: Пароль:
1C
1С v8
Фоновые задания и временное хранилище
,
0 Powerfool
 
26.06.14
13:01
Я все перепробовал у меня не работает!!! Все в мире статьи перечитал и теперь уже в нирване. Толи вы лжете и это не работает, то ли я такой >|<оп0рукий рук0>|<0п.
Хочу из формы запустить выполнение кода в форме, и чтобы потом получить результат его исполнения обратно в форме.



Вот код формы (на клиенте)

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

Если КлючУникальности = Неопределено Тогда

КлючУникальности = Новый УникальныйИдентификатор;

КонецЕсли;

КонецПроцедуры


Процедура СодержитАвтоПодборТекста(Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;
Адрес = ПоместитьВоВременноеХранилище("ПУСТО", КлючУникальности);
Параметры = Новый Массив;
Параметры.Добавить(Адрес);
ФоновыеЗадания.Выполнить("ДК_ОбработчикиСобытий.НайтиОбъекты", Параметры, КлючУникальности, "ПоискОбъектов");
ПодключитьОбработчикОжидания("ОбновитьОтбор", 1);

КонецПроцедуры

Процедура ОбновитьОтбор()

Сообщить(ПолучитьИзВременногоХранилища(Адрес));

КонецПроцедуры


Вот код на сервере

Процедура НайтиОбъекты(Адрес) Экспорт

ПоместитьВоВременноеХранилище("Готово", Адрес);

КонецПроцедуры




На выходе имею "ПУСТО", хотя должно быть "Готово". Где я не прав?
1 Cube
 
26.06.14
13:03
(0) Ну, и запускаешь ты это всё на клиент-серверной базе, да?
2 Powerfool
 
26.06.14
13:04
Проверял. Выполнял код в клиенте, всё работает
3 Powerfool
 
26.06.14
13:04
(1) АГА. Клиент-сервер. 8.3.4.408
4 Powerfool
 
26.06.14
13:05
Еще пробовал вызывать процедурку "ОжидатьЗавершения", думал, может он там где то подвисает по пути. Нифига подобного
5 Powerfool
 
26.06.14
13:09
вира
6 Powerfool
 
26.06.14
13:17
вира (5)
7 Powerfool
 
26.06.14
13:20
Я иссякаю. Похоже это заявленная фича одинэс, которую они только объявили, но вот сделать забыли. Нет ну реально я уже иссяк. Я все варианты перебрал. А самое обидное, что у кого-то, с их слов, все работает
8 Powerfool
 
26.06.14
13:29
up
9 hhhh
 
26.06.14
13:37
а где написано, что на клиенте? Вроде всё на сервере у вас.
10 Powerfool
 
26.06.14
13:38
(9) То что написано в (1) на клиенте - это код из модуля формы выбора справочника. А то что написано на сервере - это код из серверного общего модуля
11 acsent
 
26.06.14
13:43
почему в качестве ключа не используешь ид формы
12 Powerfool
 
26.06.14
13:48
(11) Что есть ИД формы?
13 hhhh
 
26.06.14
13:50
(10) если написано &НаКлиенте значит на клиенте, всё остальное на сервере.
14 Powerfool
 
26.06.14
13:51
(13) Тоесть Вы хотите сказать что код модуля формы справочника выполняется на сервере?
15 H A D G E H O G s
 
26.06.14
13:57
(14) Там много всякого непонятного. Ты не поймешь :=)
16 Powerfool
 
26.06.14
13:58
(15) Так ты ведь даже не попробовал, глядишь и пойму
17 hhhh
 
26.06.14
14:00
(14) где же еще?
18 H A D G E H O G s
 
26.06.14
14:00
(16) Форма - управляемая или обычная?
19 Powerfool
 
26.06.14
14:02
(17) Вообще я всю свою сознательную жизнь работы с 1С думал, что формы живут на клиентах

(18) Обычная
20 H A D G E H O G s
 
26.06.14
14:08
(19) "Вообще я всю свою сознательную жизнь работы с 1С думал, что формы живут на клиентах "

скоро придется отвыкать
21 ИсчадиеADO
 
26.06.14
14:08
никуя тс-а не понял
Процедура НайтиОбъекты(Адрес) Экспорт

ПоместитьВоВременноеХранилище("Готово", Адрес);

КонецПроцедуры

1) почему у помещения в хранилище имя НайтиОбъекты???

2)должно быть как то так:

Функция ПоместитьТекст(УИД)
  Возврат ПоместитьВоВременноеХранилище("Готово", УИД);
КонецФункции
22 Powerfool
 
26.06.14
14:08
(17) А это вообще как то к теме относится? Или это просто потребность в самореализации за счет умных слов воткнутых в контекст?
23 H A D G E H O G s
 
26.06.14
14:09
Адрес = ПоместитьВоВременноеХранилище("ПУСТО", КлючУникальности);

заменить на

Адрес = ПоместитьВоВременноеХранилище("ПУСТО", Новый УникальныйИдентификатор);
24 ИсчадиеADO
 
26.06.14
14:11
(23) там же вроде значение в хранилище живет до тех пор, пока жив УИД, посему обычно используют УИД формы
25 Powerfool
 
26.06.14
14:12
(23) Не уловил сути. Ключ уникальности формы и есть уид. К тому же я такую фигню из СП вычитал. Там прям русским по белому пишут (правда такое ощущение, что пишут не для того, чтобы людям было хорошо, а чтобы начальник не приставал)
26 Powerfool
 
26.06.14
14:12
(24) (11) ЧТО ЕСТЬ УИД ФОРМЫ?!!!
27 acsent
 
26.06.14
14:12
(12)  Форма.УникальныйИдентификатор
28 Powerfool
 
26.06.14
14:13
(24) Кстати значение живет. Я Получаю то значене которое положил туда сразу (ПУСТО)
29 H A D G E H O G s
 
26.06.14
14:13
(26) УИД формы есть только у управляемых форм. Ваш кэп.
30 Powerfool
 
26.06.14
14:14
(27) Нет такой буквы в этом слове. Всмысле нет такого реквизита в моей форме
31 acsent
 
26.06.14
14:14
(29) Тогда задача не решаема )))
32 acsent
 
26.06.14
14:14
А зачем хранилище то передавать в обычных формах?
33 H A D G E H O G s
 
26.06.14
14:15
(32) Автор реализует многопоточность. Давайте не будем мешать ему.
34 Powerfool
 
26.06.14
14:19
(33) Мешайте. Мешайте пожалуйста. Вы только это конструктивно делайте.
Меня сильно не устраивает вариант с допиленными костылями типа ВызватьИсключение или Отдельная таблица с результатами фонового задания. Я все таки на себя в первую очередь грешу, но теперь начинаю сомневаться в том что криво>|<опость - мой атрибут, а не 1Сников, да прибудет с ними сила
35 dj_serega
 
26.06.14
14:20
Я передавал такие данные через ХранилищеОбщихНастроек. Все прекрасно работало.
36 H A D G E H O G s
 
26.06.14
14:22
(35) как там с раздельным доступом?
37 Fragster
 
гуру
26.06.14
14:23
(34) Через СообщениеПользователю еще можно
38 Fragster
 
гуру
26.06.14
14:24
(37)+ а вот в обратную сторону - только через данные базы.
ну да может в 9ке что-нибудь типа вебворкеров запилят.
39 ИсчадиеADO
 
26.06.14
14:24
(34) короче, в метод ПоместитьВоВременноеХранилище 2ым параметром передается уникальный идентификатор (тип уник. идентификатор), возвращает он тип строка (которая явл. адресом врем. хранилища). Типы разные и эти данные не связаны. Тобишь  УИД <> Адрес.

ФоновыеЗадания.Выполнить("ДК_ОбработчикиСобытий.НайтиОбъекты", Параметры, КлючУникальности, "ПоискОбъектов")  - у тебя что-то делает, но что делает, твоя форма не знает. Адреса назад не получает. Адрес - это тот адрес, который ты получил при Адрес = ПоместитьВоВременноеХранилище("ПУСТО", КлючУникальности);
40 ИсчадиеADO
 
26.06.14
14:25
(34) тебя, видимо, попутала встроенная справка, где все называется Адресом :)
41 Fragster
 
гуру
26.06.14
14:27
кстати, в http://infostart.ru/public/173394/ в конце концов пришел к РС - ибо интенсивность чтения/записи там относительно низкая, а вот проблем решается куча.
42 Fragster
 
гуру
26.06.14
14:28
(41)+ в управляемом режиме блокировок с блокировками проблем нет
43 Powerfool
 
27.06.14
05:02
(39) Короче я не понял, что ты хотел этим сказать. Я понимаю что УИД <> Адрес. Может ты напишешь что надо сделать, чтобы заработало?
44 Powerfool
 
27.06.14
05:15
(39) Кстати вариант где в параметры добавляется КлючУникальности не канает. Его я уже пробовал

Параметры.Добавить(КлючУникальности);
45 Powerfool
 
27.06.14
05:38
(39) И последнее. Я уже писал в (2). Если сделать в форме

ПоместитьВоВременноеХранилище("Готово", Адрес);

То все ништяково отрабатывает
46 Powerfool
 
27.06.14
06:14
Утрешний АП
47 Powerfool
 
27.06.14
06:50
(35) Вот я кстати твой пост http://kb.mista.ru/article.php?id=696 читал, буду пробовать.
48 Powerfool
 
27.06.14
06:54
(47) А вот у меня вопрос только. А не получается ли что в этом объекте (хранилище общих настоек) будет захламление? Он же не чистится? Ну или по крайней мере, на сколько я понимаю, чиститься вместе с кэшем
49 Мимохожий Однако
 
27.06.14
08:10
Надо код поместить не в модуль формы, а в модуль объекта (обработки). Хранить настройки можно либо в регистре настроек пользователя из-под которого запускаешь, либо в добавленном регистре, либо в добавленном справочнике.
50 Мимохожий Однако
 
27.06.14
08:11
Фоновое задание формой не пользуется, она её просто не видит.
Ошибка? Это не ошибка, это системная функция.