Имя: Пароль:
1C
1С v8
Управляемые формы. УП. Как переключаться между разными формами внешней обработки?
0 Родом из детства
 
15.07.21
18:51
Ранее не почти не имел дела с управляемыми формами. Имеется внешняя обработка. В ней несколько форм. По нажатию на кнопку на форме нужно открыть другую форму. Но как это сделать я не понимаю.
Пробовал так:
ОткрытьФорму("ИмяФормы", Параметры);
Возвращает ошибку. Видимо поиск сначала идет не внутри обработки. Заранее спасибо за ответы
1 ДенисЧ
 
15.07.21
18:53
ОткрытьФорму("ВнешняяОбработка.ТвояОбработка.Форма.Форма"...);
2 Родом из детства
 
15.07.21
18:56
(1) А нужно добавлять её для этого во внешние обработки?
3 Родом из детства
 
15.07.21
18:58
Имя обработки: ЖурналЗаказов
Имя формы в обработке: РулоннаяМашина
Вызываю так:
ОткрытьФорму("ВнешняяОбработка.ЖурналЗаказов.РулоннаяМашина");
Падает в ошибку(
4 Кулибин
 
15.07.21
19:14
Форму забыл перед Рулонными
5 ДедМорроз
 
16.07.21
00:41
Потом еще будет неожиданность,что у каждой формы своя версия обработки,и данные из одной формы в другую не попадают.
6 Родом из детства
 
16.07.21
10:24
(5) Вот и получается все как-то неочень. Может, поделитесь правильным алгоритмом работы с формами и обменом данными между ними во внешних обработках? В нете, обычно, гайды о том, как добавить внешнюю обработку(
7 Родом из детства
 
16.07.21
10:25
Если брать внешнюю обработку, как экземпляр класса. То нужно обращаться к формам этого экземпляра, а не создавать новые. Однако, не могу понять, в каком месте я могу к этому экземпляру обратиться
8 ДенисЧ
 
16.07.21
10:32
Не надо тянуть в 1с оопшные привычки...
9 Родом из детства
 
16.07.21
10:34
Или кейс, когда у меня нет реквизитов форм. То есть они обращаются к реквизитам обработки. Тогда, при открытии новой формы, она будет обращаться к реквизитам не моей обработки, а к только что созданной. Получается, при открытии формы, нужно сначала передавать ей необходимые реквизиты с обработки-владельца. Затем, в обработчике создания формы назначать эти параметры реквизитам новой обработки и к ним обращаться? как-то непонятно
10 Родом из детства
 
16.07.21
10:35
(8) Да из ООПшных привычек у меня вуз только:) Могу и в таких утверждениях ошибаться. Просто не могу понять механику
11 ptiz
 
16.07.21
10:37
(0) С УФ не работаю , но 5 миинут хватило, чтобы разобраться.
    ИмяФормыДляОткрытия = СтрЗаменить(ЭтаФорма.ИмяФормы, "Форма1", "Форма2");
    ОткрытьФорму(ИмяФормыДляОткрытия);
12 Родом из детства
 
16.07.21
10:37
Да и откуда вообще 1сина узнает, какую внешнюю обработку я хочу открыть. Если я открываю их через файл-открыть(без добавления). Логичнее было тогда прописывать в путь открытия формы (ОткрытьФорму(путь)) полный адрес расположения файла. Вдруг у меня есть две одноименные обработки
13 ptiz
 
16.07.21
10:42
Кстати, зря они ЭтаФорма сделали устаревшим. Каким еще образом можно все свойства формы посмотреть в отладчике?
14 lodger
 
16.07.21
10:48
(13) ЭтотОбъект?
15 ptiz
 
16.07.21
10:54
(14) Действительно. То же самое выдаёт.
16 lodger
 
16.07.21
11:07
(15) унификация обращения к текущему объекту же.
17 ДедМорроз
 
16.07.21
22:28
Так они ЭтаФорма переименовали в ЭтотОбъект.

Ну и еще,если очень хочется обмена между формами,то в клиентской переменной сохраняется указатель,полученный через открыть форму,а в самой форме экспортная процедура и ее можно вызывать через указатель. Плюс этого метода в том,что все на клиенте,и сервер не дергается вообще.
18 Мимохожий Однако
 
17.07.21
00:04
Проще всё сделать в одной форме со сменой видимости страниц или групп по необходимости