Имя: Пароль:
1C
1С v8
Временное хранилище
0 Как же быть
 
12.08.16
17:41
Добрый вечер, товарищи.
Научите пользоваться временным хранилищем?
Почитал СП, пару сайтов, вроде все элементарно.

На практике:

&НаКлиенте
УникальныйИдентификатор = Новый УникальныйИдентификатор;
        Хранилище = ПоместитьВоВременноеХранилище(Счет, УникальныйИдентификатор);

&НаСервере
Счет = ПолучитьИзВременногоХранилища(Хранилище);

Переменная хранилище не определена.
1 Rasputin Dvaputin
 
12.08.16
17:46
Ну так ты функции "ПолучитьИзВременногоХранилища" скармливаешь переменную "Хранилище", которую никак не инициализируешь. О чем тебе 1С и рассказывает. Туда нужно запихать твой УникальныйИдентификатор, который ты использовал на клиенте в ПоместитьВоВременноеХранилище.
2 Rasputin Dvaputin
 
12.08.16
17:49
Хотя нет я наврал
3 Как же быть
 
12.08.16
17:49
(1) То-есть я должен на процедуру клиента передать УникальныйИдентификатор?
4 Как же быть
 
12.08.16
17:50
*В смысле на процедуру сервера
5 Rasputin Dvaputin
 
12.08.16
17:52
Нет у тебя все правильно. То что ты поместил в переменную "Хранилище" нужно передать на сервер. Это адрес где лежит твой счет. Судя по ошибке ты как-то неправильно пытаешься этот адрес на сервер передать.

Должно быть как-то так:

&НаКлиенте
Процедура ПроцедураНаКлиенте()
    УникальныйИдентификатор = Новый УникальныйИдентификатор;
    Хранилище = ПоместитьВоВременноеХранилище(Счет, УникальныйИдентификатор);
    ПроцедураНаСервере(Хранилище);
КонецПроцедуры

&НаСервере
Процедура ПроцедураНаСервере(Адрес)
    Счет = ПолучитьИзВременногоХранилища(Адрес);
КонецПроцедуры
6 Как же быть
 
12.08.16
17:59
(5) А. Ну я понял, спасибо! Я просто надеялся, что адрес будет волшебным способом передан во все процедуры на форме...Передовать его из процедуры в процедуру, конечно, не так интересно, но суть работы ясна)
7 Как же быть
 
12.08.16
18:01
А может кто-нибудь подскажет тогда самый простой способ создать переменную, к которой можно обратиться из любой процедуры? (УФ)
8 Зая Бусечка
 
12.08.16
18:17
(7) Параметры сеанса?
9 Как же быть
 
12.08.16
18:19
А во внешней обработке?
10 PLUT
 
12.08.16
18:21
(9) тады константа
11 Rasputin Dvaputin
 
12.08.16
18:30
Ну для всех серверных процедур можно например так (если конфигурацию очень не хочется изменять и использовать всякие константы):
ХранилищеОбщихНастроек.Сохранить("СтрокаИдентификатор", "СтрокаКлюч", <ЧтоСохраняем>,,"СтрокаКлючВместоИмениПользователя");

Переменная = ХранилищеОбщихНастроек.Загрузить("СтрокаИдентификатор", "СтрокаКлюч",,"СтрокаКлючВместоИмениПользователя");

Между клиентом и сервером естественно не получится. Это же могут быть физически разные машины, тут без явной печедачи не получится. Контекст-с
12 vicof
 
12.08.16
18:33
А что, реквизиты формы уже отменили?
13 Fram
 
12.08.16
18:36
(8) это ошибка дизайна. у тебя даже мысли такой не длолжно возникнуть
14 Fram
 
12.08.16
18:37
пардон (13) -> (7)
15 Как же быть
 
12.08.16
18:48
На самом деле, способ (11) - шикарен. Можно один раз передать необходимое данное на сервер и сделать его почти вседоступным. Мою проблему решило, большое спасибо!

А реквизиты формы - норм тема, но из-за моей криворукости, к сожалению, не всегда работают(
16 Fram
 
12.08.16
18:54
(15) это гомнокод! следующий же нормальный программист который столкнется с твоим кодом заставит тебя икать сильно долго и громко.
17 Zhuravlik
 
12.08.16
18:56
Я поступаю так:
1) Добавляю реквизит формы "СтруктураВспомогательныхДанных", тип - призвольный
2) ПриСозданииНаСервере - вызываю метод "ИнициализироватьСтруктуруВспомогательныхДанных()", в нем заполняю все нужные значения:
ЭтаФорма.СтруктураВспомогательныеДанные = Новый Структура();
ЭтаФорма.СтруктураВспомогательныеДанные.Вставить("ОсновнойПартнерЗаказа", ОбщегоНазначения.ПолучитьНастройку(Объект.Ссылка, "ОсновнойПартнерЗаказа"));

и т.п.
главное - не совать туда недоступные на клиенте типы.
3) В процессе работы обращаюсь к сохраненнному значению настройки:
Объект.Партнер = ЭтаФорма.СтруктураВспомогательныеДанные.ОсновнойПартнерЗаказа;
18 Как же быть
 
12.08.16
19:01
(16) Гомнокодом было создание УФ, из-за которого теперь каждый выкручивается кто как может, ибо универсального способа не терять нужные данные при большом количестве процедур\функций в великом СП нет.
19 Как же быть
 
12.08.16
19:01
(17) Спасибо за еще один способ.
20 vicof
 
12.08.16
19:03
Пффф
21 Fram
 
12.08.16
19:04
(18) в чем проблема передавать в качестве параметров?
22 vicof
 
12.08.16
19:04
Просто у тебя руки из жпо, уф тут ни при чем
23 Как же быть
 
12.08.16
19:04
Я знаю, что многие сейчас подумают про меня что-то плохое, но мне, как человеку только что перешедшему на УФ пока с ним не смириться(
24 Как же быть
 
12.08.16
19:04
Ну или не подумают, а напишут))
25 Zhuravlik
 
12.08.16
19:04
(18) А вот это зря...
26 Как же быть
 
12.08.16
19:05
В общем, я выяснил, что хотел, спасибо всем.
27 Fram
 
12.08.16
19:08
(26) даже если в данном случае твоя заплатка сработает, подумай о том, что ты будешь показывать/рассказывать будущему работадателю на собеседовании, если привикнешь кодить не понимая архитектуры
28 Как же быть
 
12.08.16
19:11
(27) Я согласен, со временем нужно будет многое освоить. Но когда с этим только-только сталкиваешься, невольно впадаешь в гнев. Прошу прощения за резкость.
29 vicof
 
12.08.16
19:23
(28) так гнев-то от собственного незнания, а не от того, что кто-то уф сделал
30 Как же быть
 
12.08.16
19:31
(29) Не, ну вам, как уже разобравшемся в этой идеи людям, она нравится?
31 vicof
 
12.08.16
19:34
(30) да
32 Рэйв
 
12.08.16
19:35
(0)Мне оно не нравится. Зоипешься работать с сервером.
Я лучше в файлах тмп хранить буду
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс