Добрый день! Начинаю разбираться с УФ, и сразу вопрос/проблема:

Есть обработка, в которой несколько форм и все эти формы должны работать с одной глобальной Структурой. Переменная в глобальном модуле не подходит по условиям задачи.

Не могу понять как это реализовать.

Делаю например реквизит обработки типа "Структура", но когда открываю форму через "ОткрытьФорму("Обработки.Моя_Обработка.Формы.Фрома2") - создается форма из нового объекта обработки и новый экземпляр нужной мне структуры.

Подскажите пжл как сделать
---
Если одну из форм можно выделить как главную (открыта все время, а остальные служебные и открываются из нее или из форм, открытых из нее), то просто храни данные в реквизитах этой формы а в остальных стучись к ним через владельца. Про реквизиты самой обработки забудь. Они "не жильцы". В тонком клиенте в сеансовых данных хранятся только реквизиты управляемой формы. Ну и параметры сеанса с временным хранилищем.
ЗЫ. Ну и традиционная путевка.
---
Используй либо реквизиты живой формы, либо передавай необходимые данные в виде параметров при открытии очередной формы. Создавать параметры фактически на форме не обязательно, можно и программно. Главное помни, что параметры нужно распределить в процедуре "при создании на сервере". Дальше они уже не существуют. (только ключевые)
---
Использовать параметры сеанса?
---
в параметрах как я понимаю структура может быть только в виде ХранилищаЗначений. Это неудобно, т.к. требуется запаковка/распаковка каждый раз. но В принципе вариант рабочий и оставлю про запас.
---
Реквизитом формы может быть список значений. Если нужна именно структура, то можно сделать реквизит формы произвольного типа и присвоить ему структуру. Внутри может быть что угодно, главное чтобы немутабельное (нормально сериализовывалось при клиент-серверных вызовах).
(9) Да, фигня выходит. Связи между открытыми формами доступны только на клиенте... Тогда предложенный вариант не очень удачный.
Но 100% удачный я не знаю, какой будет. Если критично и на сервере и на клиенте иметь потенциально большие данные, то они ведь все равно будут туда-сюда гоняться с клиент-серверными вызовами. С этой точки зрения можно вообще тогда забить на "глобальную переменную" и просто копировать туда-обратно в формы, когда надо. Если же удобнее хотя бы на сервере держать в одном месте эту структуру а на клиенте ее не иметь, тогда можно запихнуть структуру во временное хранилище, связанное с главной формой и адрес этого хранилища передавать остальным формам. Это, наверное, имеет смысл, когда на самого клиента все данные тянуть не надо.
---
И уж если совсем глобально: Справочники, РегистрыСведений, Документы
---
Если одну из форм можно выделить как главную (открыта все время, а остальные служебные и открываются из нее или из форм, открытых из нее), то просто храни данные в реквизитах этой формы а в остальных стучись к ним через владельца. Про реквизиты самой обработки забудь. Они "не жильцы". В тонком клиенте в сеансовых данных хранятся только реквизиты управляемой формы. Ну и параметры сеанса с временным хранилищем.
ЗЫ. Ну и традиционная путевка.
---
кажется оно, одна форма действительно главная, проверяю.
---
под капотом читал - согласен, крутейший материал
---
Выяснилась проблема, что ВладелецФормы не существует на сервере..

Получается, что нужно будет получать эту структуру на клиенте и отправоять ее в серверном вызове... Потенциально структура может быть большой и вроде как не красиво..

Что то недопонимаю или все так?
---
Форму зачем запускать на сервере?
Форма запускаться должна на клиенте, из первой формы

При том что глобальная переменная - реквизит Объекта обработки. Она будет видна из всех форм
---
Имею ввиду что запускаю на клиенте Форму2 из Формы1. Устанавливаю Форма2.ВладелецФормы = Форма1.

Далее в процедуре Формы2 &НаСервере - мне не виден реквизит Форма2.ВладелецФормы.

Вобщем то ерунда, уже подумал что это просто небольшое неудобство и в принципе пойдет это решение.

А на счет: "При том что глобальная переменная - реквизит Объекта обработки. Она будет видна из всех форм" - я писал в условиях задачи, что когда открываешь Форма2 через
ОткрытьФорму("Обработки.Моя_Обработка.Формы.Фрома2") - получается новый объект обработки..
---
Вот потому и не надо получать НОВЫЙ объект обработки...
2 формы , да и вообще хоть 10 прекрасно вызываются друг из друга
А зачем вам в процедуре Формы2 &НаСервере - мне не виден реквизит Форма2.ВладелецФормы. если не секрет?
---
подскажите пжл код, не могу сообразить как открыть форму, чтобы это было в одном объекте обработки

(13) А зачем вам
в процедуре на сервере получаются и обрабатываются данные БД и затем ими дополняется "глбальная" структура
---
Из Синтаксис-помощника:
"ВнешняяОбработка.<имя обработки>.Форма.<имя формы>;
,,,
При этом внешний отчет или обработка должны быть предварительно зарегистрированы в системе с помощью метода Подключить или Подключить соответственно. <Имя отчета> и <имя обработки> - это имена, под которыми зарегистрированы внешний отчет или обработка. "
---
После команды
НоваяФорма=ОткрытьФорму("Обработки.Моя_Обработка.Формы.Фрома2");
Сразу передавайте ваши реквизиты
НоваяФорма.Реквизит=....
---
Протестировал... Простите - ввел в заблуждение...
Короче кроме чем через ВременноеХранилище не получится ...
Не видит вторая форма глобальных реквизитов обработки... (((
---
а почему не использовать реквизит обработки?