Имя: Пароль:
1C
1С v8
Данные реквизита типа "Табличная часть" внешней обработки не видны во второй форме
, ,
0 Elkin-Palkin
 
16.04.20
13:42
Есть внешняя обработка, управляемые формы. В обработке есть реквизит типа "Табличная часть" - МояТЧ. Так же в обработке есть две формы.
В обеих формах в качестве основного реквизита указан объект обработки. В одной форме я заполнил этот реквизит МояТЧ, а во второй хочу использовать.
В первой форме перед самым открытием второй формы я вижу, что МояТЧ - заполнена. Однако, в процедуре-обработчике ПриСозданииНаСервере() во второй форме сразу после
ОбработкаОбъект = РеквизитФормыВЗначение("Объект")
вижу, что ОбработкаОбъект.Количество() = 0 , т.е. как будто бы МояТЧ - пустая.
Подскажите, как мне увидеть во второй форме этот реквизит обработки заполненным?
1 Ненавижу 1С
 
гуру
16.04.20
13:46
(0) почему решили, что это формы одного и того-же объекта?
2 patria0muerte
 
16.04.20
13:46
(0) Передавать параметром. В данном случае - на второй форме у тебя новый экземпляр обработки.

Либо можно попробовать перед открытием второй формы сделать что-то типа КопироватьДанныеФормы
3 Elkin-Palkin
 
16.04.20
13:48
(1) По аналогии с обычными формами
4 Ненавижу 1С
 
гуру
16.04.20
13:50
(3) и в обычных формах не всегда один и тот же объект в формах
5 Elkin-Palkin
 
16.04.20
13:54
(3) Может быть. Но конкретно у меня такое вот проканывало - в любой форме из ОДНОЙ И ТОЙ ЖЕ обработки я видел все реквизиты обработки.
6 Elkin-Palkin
 
16.04.20
13:55
(5) было к (4)
7 Ненавижу 1С
 
гуру
16.04.20
14:00
ок, как открываете вторую форму? если из первой, то надо передавать объект
8 Elkin-Palkin
 
16.04.20
14:05
(7) Вот так:
ВтораяФорма = ПолучитьПолноеИмяФормы("МояВтораяФорма");
ОткрытьФорму(ВтораяФорма);

ПолучитьПолноеИмяФормы() - функция, которая возвращает полное название с названием моей обработки. Т.е. ВнешняяОбработка.МояВнешняяОбработка.Форма.МояВтораяФорма

Если нифига с этим реквизитом не получится, то придётся использовать вариант с параметрами, как посоветовал в (1)
9 Ненавижу 1С
 
гуру
16.04.20
14:10
(8) так и не получится, вторая обработка ничего не знает об экземпляре объекта первой формы
10 Ненавижу 1С
 
гуру
16.04.20
14:13
Форма2 = ПолучитьФорму("ИмяФормы",,ЭтаФорма);
КопироватьДанныеФормы(Объект,Форма2.Объект);
Форма2.Открыть();
11 Elkin-Palkin
 
16.04.20
14:17
(8) Ты хотел сказать не вторая "обработка", а вторая "форма"? Да? Я же использую вторую форму ТОЙ ЖЕ обработки.
12 Elkin-Palkin
 
16.04.20
14:18
Бл%! Опять промахнулся. (11) к (9)
13 Ненавижу 1С
 
гуру
16.04.20
14:21
(11) с чего ты так решил? ПолучитьФорму теперь метод глобального контекста
14 Elkin-Palkin
 
16.04.20
14:33
С чего я решил? Ну это ведь две формы в одной и той же обработке! С этого я и решил :)
Видимо, я всё ещё мыслю категориями обычных форм, а в управляемых формах по другому: при открытии второй формы, которая хоть и находится в этой же обработке, создаётся ВТОРОЙ экземпляр, который не знает о первом экземпляре ничего. В том числе о заполненных реквизитах обработки. Я правильно понимаю?
15 Elkin-Palkin
 
16.04.20
14:34
Перечитал (9). Похоже это ответ на мой заданный вопрос.
16 Ненавижу 1С
 
гуру
16.04.20
14:41
(14)
1. в обычных формах методы самого объекта были доступны из формы, поэтому прямо из формы можно было вызывать метод объекта ПолучитьФорму - естественно создавалась форма объекта его вызывавшего
2. теперь объект на сервере живет и поэтому у него не может быть методов ПолучитьФорму, эти процедуры стали глобальным контекстом, доступным на клиенте - но теперь данные объекта надо передавать явно
17 Elkin-Palkin
 
16.04.20
15:07
Спасибо!
Трудно, ох трудно менять подход к РАЗНОМУ поведению объектов 1С в обычных и управляемых формах.
Воспользуюсь предложенным вариантом в (2), а Обожателю1С :) спасибо за развёрнутое пояснение.