Имя: Пароль:
1C
1С v8
УФ. Своя расшифровка работает только 1 раз.
0 DirecTwiX
 
15.03.14
23:18
При открытии формы формирую отчёт в ней. ДанныеРасшифровки помещаю во временное хранилище.
При обработке расшифровки достаю их оттуда, и первый раз всё нормально отрабатывает. Но второй раз из временного хранилища ничего не достаётся. Пробовал помещать сразу же обратно - толку ноль.

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ПриОткрытииНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПриОткрытииНаСервере()
    ... Вывод отчёта на СКД
    АдресРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровки);
КонецПроцедуры

&НаСервере
Функция ПолучитьРасшифровку(Расшифровка)
    ДанныеРасшифровки = ПолучитьИзВременногоХранилища(АдресРасшифровки);
    //АдресРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровки);    
    Расш = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0];
    Если Расш.Поле = "СписаниеСРС" ИЛИ Расш.Поле = "Ссылка" ИЛИ Расш.Поле = "Контрагент" Тогда    
        Возврат (Расш.Значение);    
    КонецЕсли;
    Возврат Неопределено;
КонецФункции


&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Р = ПолучитьРасшифровку(Расшифровка);
    Если Р <> Неопределено Тогда
        ОткрытьЗначение(Р);    
    КонецЕсли;
КонецПроцедуры
1 DirecTwiX
 
16.03.14
14:50
Ап
2 ivanovnm
 
16.03.14
15:07
(0) "ПриОткрытииНаСервере" вызывается дважды, и на клиенте и на сервере, возможно даже перед открытием форма отправляется с клиента на сервер. Зачем?

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ПриОткрытииНаСервере();
КонецПроцедуры
3 ivanovnm
 
16.03.14
15:16
(0) С временным хранилищем не работал, но в описании команды "ПоместитьВоВременноеХранилище" сказано для параметра "Адрес" указано "Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы." При втором вызове расшифровки видимо уже нет.
4 DirecTwiX
 
16.03.14
17:30
(2) ПриОткрытииНаСервере - не обработчик открытия на сервере) И вызывается 1 раз.
(3) Я пробовал второй раз поместить в хранилище сразу после получения - в коде закомментирована строчка.
А как получить свободной адрес для записи во временное хранилище?)
5 DirecTwiX
 
16.03.14
18:11
Ап
6 PiVa123
 
16.03.14
18:20
В ПоместитьВоВременноеХранилище нужно указать второй параметр уникального идентификатора. Читайте СП.
7 ivanovnm
 
16.03.14
18:37
(4) Если обработчик "ПриОткрытииНаСервере" не гонит форму на сервер, то почему в названии "Сервер"? ИМХО сбивает с толку.
8 ivanovnm
 
16.03.14
18:39
(4) А как же "&НаСервере"? Последовательность выполнения перед открытием: Сервер->Клиент->Сервер->Клиент.
9 ivanovnm
 
16.03.14
18:41
(2) Перепутал с "ПриСозданииНаСервере()"
10 DirecTwiX
 
16.03.14
19:06
(6) Можно и без. Уже процитировали СП.
Почему сразу же не удаётся поместить обратно?
11 DirecTwiX
 
16.03.14
22:53
Ап
12 marvak
 
16.03.14
22:58
В (3) и (6) тебе все объяснили.
При втором вызове ДанныеРасшифровки = ПолучитьИзВременногоХранилища(АдресРасшифровки) ничего не получаешь.
Передавай второй параметр, например УИД формы.
13 RomaH
 
naïve
16.03.14
23:06
(10) внимательно еще раз прочитай СП
на пальцах - в твоем случае-
помещенное значение будет удалено ... при контекстном и неконтекстном серверном вызове из формы
14 RomaH
 
naïve
16.03.14
23:09
почему поместить не удается
почему не удается - помещается, но ... похоже у тебя после этого идет вызов сервера
разве открытьЗначение не обращается к серверу?
15 RomaH
 
naïve
16.03.14
23:10
Р = ПолучитьРасшифровку(Расшифровка);
    
тут есть
Если Р <> Неопределено Тогда
        ОткрытьЗначение(Р);    
а тут нет?
    КонецЕсли;
16 DirecTwiX
 
17.03.14
02:25
(14) Теперь понял. Спасибо!

(12) Тоже спасибо за УИД!
Не может получится так, что по адресу УИД форме уже что-то будет храниться?