Имя: Пароль:
1C
1С v8
Как в УФ прочитать/записать данные из/в Хранилище значения
, ,
0 Max1986
 
25.03.12
01:06
Еще вопрос - не бейте - изучаю УФ первый раз.
Как в УФ прочитать/записать данные из/в Хранилище значения?

В обычных было так:

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
   Описание = Новый ХранилищеЗначения(ЭлементыФормы.ПолеТекстовогоДокумента1.ПолучитьТекст());
КонецПроцедуры

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
   Описание1 = Описание.Получить();
   ЭлементыФормы.ПолеТекстовогоДокумента1.УстановитьТекст(Описание1);
КонецПроцедуры
1 Max1986
 
25.03.12
01:07
Поле "ПолеТекстовогоДокумента1" имеет тип "Текстовый документ"
2 Азат
 
25.03.12
01:07
а ДенисЧ у тебя опять СП украл? посмотреть там религия не позволяет?
3 H A D G E H O G s
 
25.03.12
01:08
ПередЗаписьюНаСервере()

ПриСозданииНаСервере()
4 Max1986
 
25.03.12
01:09
(3)спасибо! И вы не спите )))
5 H A D G E H O G s
 
25.03.12
01:10
Мэйл бота прижало так, что он в ночь субботы управляемые формы познает. Бывает и такое.
6 Max1986
 
25.03.12
01:10
Блин!
Элементы.ПолеТекстовогоДокумента1 не имеет метода "УстановитьТекст". Какой же тогда использовать?
7 Max1986
 
25.03.12
01:10
(5)та не...
надо задание по видеоуроку сделать, а там что то не очень описано
8 Азат
 
25.03.12
01:10
(6) СП КУРИ
9 Max1986
 
25.03.12
01:16
(8)черт, почитал - не понял.
так как же?
Я делаю так
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   Описание1 = Описание.Получить();
   Элементы.ПолеТекстовогоДокумента1. - ?
КонецПроцедуры
10 Max1986
 
25.03.12
01:19
понял!
Надо не к элементу, а к реквизиту обращатся
ПолеТекстовогоДокумента1.Добавить("123");
11 Икогнито
 
25.03.12
01:22
нужно передать значение на сервер, а там запихать его в хранилище
12 Max1986
 
25.03.12
01:24
не получается считать из хранилища
Описание1 = Описание.Получить();
где Описание - это хранилище.
Пишет: Переменная не определена (Описание).
Но ведь это реквизит Объекта
13 H A D G E H O G s
 
25.03.12
01:41
(12)

В ПриСозданииНаСервере()

ЭтотОбъект=РеквизитФормыВЗначение("Объект");
ЭтотОбъект.Описание.Получить();
14 H A D G E H O G s
 
25.03.12
01:41
15 andrewks
 
25.03.12
07:04
(14) это ж читать надо! а читать мы, окромя мэйл.ру, не любим
16 Max1986
 
25.03.12
19:06
(13)Вот спасибо!
Эти УФ какой то бред! Все по новой учить.
17 H A D G E H O G s
 
25.03.12
19:08
Толи еще будет.
Эти УЫ - это не только бред - но и отличный фильтр боты<->спецы.
18 Max1986
 
25.03.12
19:09
(17)в чем именно фильтр не понял? Если долго копаться и их можно выучить. В чем фильтр проявляется?
19 Юрий Лазаренко
 
25.03.12
19:10
(17)+(18) Бггггггг! )))))
20 H A D G E H O G s
 
25.03.12
19:13
Напомнило:
"Существует 10 типов людей - одни понимают двоичную систему, остальные - нет. И тут одно из 10, либо вы ее знаете, либо нет!"
21 Max1986
 
25.03.12
19:13
А вот последний вопрос - подскажите.
У меня на форме есть Поле форматированного документа. Я там его отформатировал, типа жирным выделил, цветом, вставил картинку и проч.
Могу ли я сохранить в хранилище значений это все? Т.е. целиком весь отформатированный текст, включая картинку и форматирование?
Или можно только текст?
22 Юрий Лазаренко
 
25.03.12
19:17
(21) Можешь.
23 H A D G E H O G s
 
25.03.12
19:18
ПолучитьHTML()
УстановитьHTML()

не?
24 Max1986
 
25.03.12
19:20
(23)понял.
Это делать в ПередЗаписьюНаСервере(), а вытаскивать в ПриСозданииНаСервере() ?
25 H A D G E H O G s
 
25.03.12
19:20
yeh, baby
26 Max1986
 
25.03.12
19:22
спасибо. буду пробовать
27 Max1986
 
25.03.12
19:38
Что то не выходит записать изменненый тест в Хранилище значений объекта.

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
 ЭтотОбъект=РеквизитФормыВЗначение("Объект");
 ТекстHTML = ""; Вложения = Новый Структура;
 ПолеТекстовогоДокумента1.ПолучитьHTML(ТекстHTML,Вложения);
 ЭтотОбъект.Описание = Новый ХранилищеЗначения(ПолеТекстовогоДокумента1.ПолучитьТекст());
// здесь все  хорошо и ЭтотОбъект.Описание содержит мой измененный текст
КонецПроцедуры

Но при открытии оказывается что в ЭтотОбъект.Описание опять старые данные.
ЧЯДНТ?
28 Max1986
 
25.03.12
19:42
и еще - прочитал на одном сайте, что при получении параметров объекта вместо ПриСозданииНаСервере() лучше использовать ПриЧтенииНаСервере().
Так ли это?
29 Юрий Лазаренко
 
25.03.12
21:15
(27) А зачем тебе текст в хранилище значений сохранять? Сохраняй в текстовом реквизите с неограниченной длиной, все равно это HTML - форматирование, разметка и шрифты останутся. в ХЗ только структуру картинок сохранять надо.
30 andrewks
 
25.03.12
21:24
(20) :-)
31 Юрий Лазаренко
 
25.03.12
21:25
(27) А чтобы хранилище сохранялось, перепиши так:

 ТекстHTML = ""; Вложения = Новый Структура;
 ПолеТекстовогоДокумента1.ПолучитьHTML(ТекстHTML,Вложения);
 ТекущийОбъект.Описание = Новый ХранилищеЗначения(ПолеТекстовогоДокумента1.ПолучитьТекст());

Не надо никаких объектов формы в значение, у тебя в процедуре уже есть ТекущийОбъект
32 H A D G E H O G s
 
25.03.12
21:29
(28) Так.
33 Max1986
 
25.03.12
21:53
(31)спасибо!
Только тогда не понял, почему при ПриСозданииНаСервере() нет объекта и надо его получить:
ЭтотОбъект=РеквизитФормыВЗначение("Объект");
А
ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) уже есть объект?
34 Юрий Лазаренко
 
26.03.12
11:48
(33) Это, кстати, может быть причиной того, что лучше работать с хранилищем в ПриЧтенииНаСервере. Не помню, какая из этих функций срабатывает первой и на каком этапе. Возможно в ПриЧтенииНаСервере объект есть, надо смотреть.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн