kos писал(а) 11. Декабря 2014 :: 10:45:ПОЯСНЕНИЕ: моя конечная цель (чего ради):
мне нужна переменная(объект) в области видимости конкретного контекста
Именно поэтому нельзя делать "общественную" глобальную переменну для "МойКласс".
Именно поэтому приходится извращаться - в каждую форму тыкать.....
(изначально именно ради этого хотел динамическую замену модулей)
Может я не оригинален: но по крайней мере должно работать.
Считаю задача "динамическая замента текста модуля форм
У меня аналогичная потребность реализована так:
Процедура СобытиеГМ_ПриОткрытии( Конт, фЧтенияНастройки ) Экспорт
...
...
// ----------------
//
Структура = СоздатьОбъект( "Структура" );
Структура.Вставить( "struModule", "" );
fl__ДобавитьКонтекст = 0; // Для того, чтобы отслеживать случай когда не получается выполнить функцию __ДобавитьКонтекст()
// /пока это не работает для объектов типа "ЖурналРасчетов"/
Попытка
Конт.__ДобавитьКонтекст( Структура );
Конт.struModule = СоздатьОбъект( "Структура" );
struModule = Конт.struModule;
Исключение
fl__ДобавитьКонтекст = 1;
struModule = СоздатьОбъект( "Структура" );
КонецПопытки;
// ----------------
// --- После обработки события СобытиеГМ_ПриЗагрузкеФормы нам известны:
//
// TypeModule - Тип объекта /Например: Справочник/
//
// NameModule - Идентификатор объекта /Имя справочника, ... .../
//
// ИмяФормыДляСпр - Ия формы /use только для справочников/
//
// acUseLayers - Использованные слои
//
// LastUseЗакладка - Номер последней использованной закладки формы
//
// Сохраняем значение этих переменных в контексте модуля
//
struModule.Вставить( "TypeModule", TypeModule, 1 );
struModule.Вставить( "NameModule", NameModule, 1 );
struModule.Вставить( "ИмяФормыДляСпр", ИмяФормыДляСпр, 1 );
acUseLayers = СоздатьОбъект( "АссоциативныйВектор" );
struModule.Вставить( "acUseLayers", acUseLayers, 1 );
struModule.Вставить( "LastUseЗакладка", 1, 1 );
if fl__ДобавитьКонтекст = 1 Then
VpIndex = глacКонтекст.НайтиКлюч(
ПолныйТипОбъекта,
1
);
if VpIndex = -1 Then
глacКонтекст.Добавить(
struModule, // value
ПолныйТипОбъекта // Ключ
);
endif;
endif; //
То бишь при создании контекста в него добавляется переменная типа "Структура" в которую уже затем помещаю необходимые мне
свойства.
Что имеем?
Любой контекст содержит всего одну добавленную переменную в
которую в любой момент можно добавить сколько угодно потребных свойств /грубо говоря переменных/