Имя: Пароль:
1C
1С v8
Реквизиты объекта в дополнительной форме
0 Ookami
 
27.03.14
10:05
Доброго времени суток!

8.2, управляемые формы. Есть внешняя обработка с реквизитом. У обработки есть несколько форм, у всех в качестве основного реквизита по-умолчанию указан Объект. В основной форме устанавливаю значение реквизита объекта:

&НаСервере
Процедура УстановитьЗначениеРеквизита(Реквизит, ЗначениеРеквизита)
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    ОбработкаОбъект[Реквизит] = ЗначениеРеквизита;
    ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");
КонецПроцедуры

После этого по нажатию кнопки открывается дополнительная форма, в которой, помимо прочего, происходит обращение к реквизиту объекта, но его значение Неопределено. Обращаться к реквизиту пробовал и напрямую через Объект.Риквизит, и через РеквизитФормыВЗначение("Объект").Реквизит, результат один и тот же.

Что я делаю не так? Пните в нужном направлении, пожалуйста.
1 Ookami
 
27.03.14
10:06
(0) при обращении к реквизитам объекта из основной формы - все заполнено теми значениями, которыми и должно. Проблема только при открытии дополнительной формы
2 Fedor-1971
 
27.03.14
10:16
Точно заполняешь реквизит Объекта, а не формы объекта?
Попробуй заполнять так: Объект.Реквизит=нужное значение
3 Defender aka LINN
 
27.03.14
10:17
(0) А для нафига объект туда-сюда преобразовывать, чтобы серверу было чем заняться?
4 Ookami
 
27.03.14
10:32
(2) Попробовал, без изменений
(3) Вероятно, не до конца понимаю сакральный смысл РеквизитФормыВЗначение
5 Fedor-1971
 
27.03.14
10:38
а как форму открываешь?
6 Ookami
 
27.03.14
11:00
(5)
ФормаКарточкаДокумента = ПолучитьФорму("ВнешняяОбработка.МояОбработка.Форма.НужнаяФорма", , , Идентификатор);
ФормаКарточкаДокумента.Открыть();
7 Ookami
 
27.03.14
11:01
(5) И вот на этом месте я задумался о том что открываю неправильно =)
8 alexei366
 
27.03.14
11:05
(0) Тебе не кажется что Объект-Обработка не имеет "отображение в базе данных" и соответственно данные при открытии других форм не считываются с базы.
Это же религия)))
9 alexei366
 
27.03.14
11:06
(8) Ты его не записываешь, у обрабоки нет понятия Ссылки и т.д
10 Ookami
 
27.03.14
11:14
(8) я видимо что-то упустил в этой жизни. Есть объект (обработка) исполняющаяся в среде, и пока она исполняется - все данные, касающиеся ее работы, висят в памяти. Закрыли обработку - потеряли данные, это логично. Но пока она работает - доступ к ним должен быть.
11 Defender aka LINN
 
27.03.14
11:17
(10) Он и есть. Что тебя смущает?
12 alexei366
 
27.03.14
11:19
(10) Ну вот ты открываешь доп форму, что ты туда передаешь чтоб 1С поняла что это тотже объект что и в основной?
Я так думаю ничего
13 Ookami
 
27.03.14
11:19
(11) смущает написанное в (8) и (9)

Если обработка при открытии своей второй формы не в состоянии передать ей свои реквизиты - смысл вообще тогда в этих реквизитах?
14 Ookami
 
27.03.14
11:20
(12) я к этому и пришел в (7), вопрос в том как при открытии формы сказать что это форма того же объекта
15 alexei366
 
27.03.14
11:28
(14) Передавай Объект в доп форму и там заполняй реквизиты "местного объета", можеш используя метаданные объекта с обходом реквизитов)
наверно так.

Я реквизиты обработки использую в серверных процедурах и функциях.
16 alexei366
 
27.03.14
11:29
(14) Или попробуй вдруг сработает.
Получаешь доп форму и в её экспортную процедуру передаешь объект основной формы, там переходишь на серверную процедуру и там попробывать ЗначениеВРеквизитФормы(ОбработкаОсновнойОбъект, "Объект");
17 Defender aka LINN
 
27.03.14
11:54
(13) Напиши код и передавай что угодно. А у другой формы объект тоже другой.
18 Ookami
 
27.03.14
12:13
(15) гонять весь объект между формами кажется мне плохой идеей. Но нашел такой вариант решения:

Форма = ПолучитьФорму("ВнешняяОбработка.Обработка.Форма.ИмяФормы", , ЭтаФорма, Идентификатор);

Тогда реквизиты объекта доступны через владельца: ВладелецФормы.Объект
19 alexei366
 
27.03.14
12:29
(18) Ну удачи тебе с поиском хорошей идеи)))
20 anton_mgn
 
27.03.14
12:42
(0) Возможно прощк вместо открытия разных форм менять страницы на панели одной формы.
21 Ookami
 
27.03.14
18:04
(19) задача решена использованием владельца формы, спасибо (20) на основной форме уже итак много страниц, тем более открываемое окно может существовать одновременно в нескольких экземплярах

Всем спасибо, проблема решена