Имя: Пароль:
1C
 
Работа ВременногоХранилища
0 13spartak13
 
09.02.16
09:13
В МодулеУправляемогоПриложения у меня выполняется:

Процедура ПриНачалеРаботыСистемы()
    Если Вопрос("Вы желаете обновить базу данных?",РежимДиалогаВопрос.ДаНет,10) = КодВозвратаДиалога.Нет Тогда
        ПередНачалом.Обновление2();

        ПоказатьОповещениеПользователя("Добро пожаловать");
Иначе
    ПередНачалом.Обновление();
    Предупреждение("Обновление выполнено!",10);
    КонецЕсли;
КонецПроцедуры


В общем модуле ПередНачалом.Обновление2(); у меня помещается переменная во временное хранилище, почему я больше ей нигде не могу воспользоваться пишет переменная не определена???
1 Остап Сулейманович
 
09.02.16
09:15
Интересно задан вопрос.
"Вот код. Он к проблеме отношения не имеет. А то за что вопрос - я вам не покажу. Догадывайтесь сами."
2 13spartak13
 
09.02.16
09:17
(1) Процедура Обновление2()  Экспорт
        
    //СоздаемТаблицуЗначений
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("ЛицевойСчет");
    ТЗ.Колонки.Добавить("Адрес");
    ТЗ.Колонки.Добавить("Марка");
    ТЗ.Колонки.Добавить("Номер");
    ТЗ.Колонки.Добавить("ДатаУстановки");
    ТЗ.Колонки.Добавить("МестоУстановки");
    ТЗ.Колонки.Добавить("ПоказанияПриСнятии");
    ТЗ.Колонки.Добавить("ПоказанияПриУстановке");
    ТЗ.Колонки.Добавить("ПоследняяПоверкаМесяц");
    ТЗ.Колонки.Добавить("ПоследняяПоверкаГод");
    ТЗ.Колонки.Добавить("СледущаяПоверкаМесяц");
    ТЗ.Колонки.Добавить("СледующаяПоверкаГод");
    //Открываем ДБФ файл
    ФайлТМЦ = Новый XBase("D:\1с-8\Водомеры\V.dbf");
    ФайлТМЦ.Кодировка = КодировкаXBase.OEM;
    ФайлТМЦ.Первая();
    //Копируем из ДБФ в ТЗ
    Пока Не ФайлТМЦ.ВКонце() Цикл
        НоваяСтрока                          = ТЗ.Добавить();
        НоваяСтрока.ЛицевойСчет              = ФайлТМЦ.CP;
        НоваяСтрока.Адрес                    = ФайлТМЦ.ADR;
        НоваяСтрока.Марка                    = ФайлТМЦ.MARKA;
        НоваяСтрока.Номер                    = ФайлТМЦ.NOM;
        НоваяСтрока.ДатаУстановки            = ФайлТМЦ.DUST;
        НоваяСтрока.МестоУстановки           = ФайлТМЦ.MUST;
        НоваяСтрока.ПоказанияПриСнятии       = ФайлТМЦ.PRED_P;
        НоваяСтрока.ПоказанияПриУстановке    = ФайлТМЦ.POSL_P;
        НоваяСтрока.ПоследняяПоверкаМесяц    = ФайлТМЦ.M_POSL;
        НоваяСтрока.ПоследняяПоверкаГод      = ФайлТМЦ.G_POSL;
        НоваяСтрока.СледущаяПоверкаМесяц     = ФайлТМЦ.M_SLED;
        НоваяСтрока.СледующаяПоверкаГод      = ФайлТМЦ.G_SLED;
        ФайлТМЦ.Следующая();
    КонецЦикла;
    
    ФайлТМЦ.ЗакрытьФайл();
    ТЗ2 = ТЗ.Скопировать();
    ТЗ.Свернуть("Адрес,Лицевойсчет");
    
    //Работа с временным хранилищем
    Временная = ПоместитьВоВременноеХранилище(ТЗ2,Новый УникальныйИдентификатор());
КонецПроцедуры

Вот Код общего модуля!
3 ДенисЧ
 
09.02.16
09:18
А получать как пытаешься?
4 vicof
 
09.02.16
09:19
Продам СП. Недорого.

Глобальный контекст.ПоместитьВоВременноеХранилище (Global context.PutToTempStorage)
Глобальный контекст (Global context)
ПоместитьВоВременноеХранилище (PutToTempStorage)
Синтаксис:

ПоместитьВоВременноеХранилище(<Данные>, <Адрес>)
Параметры:

<Данные> (обязательный)

Тип: Произвольный.
Данные, которые необходимо поместить во временное хранилище.
<Адрес> (необязательный)

Тип: УникальныйИдентификатор; Строка.
Уникальный идентификатор формы, во временное хранилище которой надо поместить данные и вернуть новый адрес. Или адрес во временном хранилище, по которому надо поместить данные. Адрес должен получен ранее с помощью данного метода.
В случае, если передается УникальныйИдентификатор формы или адрес в хранилище, то значение будет автоматически удалено после закрытия этой формы.
Если передан УникальныйИдентификатор, не являющийся уникальным идентификатором формы, то значение будет удалено после завершения сеанса пользователя.
Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы.
Возвращаемое значение:

Тип: Строка.
Адрес во временном хранилище.
Описание:

Сохраняет сериализуемое значение во временное хранилище.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Вызов метода выполняет обращение к серверу.

Примечание:

Также позволяет поместить данные из фонового задания в родительский сеанс. Для этого следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание.
--------------------------------------------------------------------------------

     Методическая информация


Читаем про возвращаемое значение.
5 13spartak13
 
09.02.16
09:20
(3) в формеДокумента

&НаКлиенте
Процедура АдресПриИзменении(Элемент)
    
    ТЗ2_КОПИЯ = ПолучитьИзВременногоХранилища(Временная);
    
        

КонецПроцедуры
6 busy1
 
09.02.16
09:20
А каким образом вы пытаетесь воспользоваться этой переменной? Вроде, как должно использоваться функция ПрочитатьИзВременногоХранилища()
7 13spartak13
 
09.02.16
09:20
(4)

я это все прочитал, просто не пойму почему воспользоваться нельзя какая-то проблема в сеансе или что???
8 13spartak13
 
09.02.16
09:22
(6) такой вроде нету
9 Остап Сулейманович
 
09.02.16
09:29
(2) Вот это вот "Временная" должно после выполнения Обновление2() вернуться на клиента. По том клиент в нужных местах должен передавать ее на сервер.
Примерно так:

Временная = ПередНачалом.Обновление2();
...
//Вызов процедуры на сервере
ВыполнитьСуперДвижухуНаСервере(Временная);

//Процедура Обновление2()
Функция Обновление2()
   ...
   Возврат ПоместитьВоВременноеХранилище(ТЗ2,Новый УникальныйИдентификатор());
КонецФункции

&НаСервере
Процедура ВыполнитьСуперДвижухуНаСервере(АдресВХ)
   ТЧ = ПолучитьИзВременногоХранилища(АдресВХ);
   ...
КонецПроцедуры

Вот как-то так
10 13spartak13
 
09.02.16
09:29
Тема открыта, вопрос не решен, жду вариантов....
11 Остап Сулейманович
 
09.02.16
09:30
(10) (9) уже осознал? Опробовал?
12 13spartak13
 
09.02.16
09:33
Если честно немного не понял, это получается каждый раз когда мне надо, получить ТЗ2, будет выполняться модуль???
13 Ma3eIIa
 
09.02.16
09:33
14 Остап Сулейманович
 
09.02.16
09:38
(12)
1. Поместить значение в хранилище и вернуть адрес на клиента.
2. При вызове серверных процедур, которым нужно сохраненное значение передавать им адрес.
3. Серверная процедура при вызове должна получить значение по переданному адресу.
15 13spartak13
 
09.02.16
09:42
(9) Я не знаю может что-то не так понимаю, но мне нужно чтобы при запуске коефигурации, ОбщийМодуль выполнился один раз, а вот эта ТЗ поместилась во временное хранилище, чтобы в дальнейшем я мог ей пользоваться, в моем коде все выполняется, и данные помещаются в хранилище, но уже на форме документа ими воспользоваться нельзя, что не так, где они стираются из хранилища???
16 13spartak13
 
09.02.16
09:43
(14) Просто по Вашему примеру я не совсем понял как и куда раскроить мой код....
17 Ma3eIIa
 
09.02.16
09:45
(16) можешь в параметры сеанса добавь хранилище и в него помещать что тебе нужно. и в разрезе пользователя ты сможешь это получать
18 13spartak13
 
09.02.16
09:46
(17) А как это сделать??
19 vicof
 
09.02.16
09:48
Временная - у тебя неглобальная переменная, которая живет только до конца выполнения функции.
Тебе нужно значение этой переменной куда-то сохранять. В параметр сеанса, например.
20 13spartak13
 
09.02.16
09:51
(19) Это я уже понял, но с параметрами сеанса не сталкивался, как это реализовать, какой тип, задать параметру??? Если не сложно подскажите!
21 vicof
 
09.02.16
09:51
(20) А какого типа у тебя Временная?
22 13spartak13
 
09.02.16
09:54
Вообще, ни какого, я же в нее помещал ТаблицуЗначений
23 vicof
 
09.02.16
09:55
(22) не ври. См (4)
24 13spartak13
 
09.02.16
09:58
(23) Получается строка
25 Остап Сулейманович
 
09.02.16
09:58
(22) Я весь потерян в догадках... ))) Как же узнать какой тип будет у временная после этого вот :

Временная = ПоместитьВоВременноеХранилище(ТЗ2,Новый УникальныйИдентификатор());

И в СП ничего не понять?

"Возвращаемое значение:

Тип: Строка.
Адрес во временном хранилище."
26 vicof
 
09.02.16
10:02
(24) Таааак...метод дедукции никогда не подводил Шерлока. Значит какого типа создаем параметр сеанса?
27 13spartak13
 
09.02.16
10:05
(26) Строка, а что дальше делать с параметром сеанса, я понимаю ваши издевательства))), но просто тяжело...
28 Остап Сулейманович
 
09.02.16
10:08
(27)
1. Положить туда адрес в хранилище
Примерно так :
ПараметрыСеанса.АдресТЧ =
ПоместитьВоВременноеХранилище(ТЗ2,Новый УникальныйИдентификатор());

2. Там, где это нужно вытаскивать твою Табличку.
Примерно так :

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

ЗЫ. Это все на стороне сервера.
29 13spartak13
 
09.02.16
10:13
(28) Пишет несоответствие типов
30 13spartak13
 
09.02.16
10:17
(29) мой косяк длину неограниченную не поставил...
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс