|
<< Click to Display Table of Contents >> Navigation: Раздел 6 Язык программирования L9 > Встроенные процедуры и функции > Работа с модулями > ПолучитьМодульПоКлючу (GetModuleByKey) |
Описание:
Функция ищет в памяти ранее загруженный модуль. Если модуль есть в памяти, то возвращается найденный модуль. В противном случае возвращается Неопределено.
Модуль ищется по переданному в параметре значению ключа загруженного модуля – см. Ключ().
Синтаксис:
ПолучитьМодульПоКлючу(<Строка>)
GetModuleByKey(<String>)
Параметры:
Строка (String) – ключ модуля, полученный вызовом метода Ключ(). Строковое значение. Если значение другого типа, то метод вернет Неопределено.
Возвращаемые значения:
Объект "Модуль" или Неопределено.
Примечание
Пример кода ниже учитывает сразу 2 требования Платформы:
•В Платформе не рекомендуется хранить модули в глобальных переменных, т.к. есть риск получения ошибки при попытке обратиться к уже выгруженному модулю через глобальную переменную.
Исключения возможны только для модулей, которые не связаны с формами и которые должны работать на протяжении всего времени работы программы.
Поэтому лучше сначала получить загруженный модуль методом ПолучитьМодульПоКлючу() и, если модуль был получен, то обращение к модулю будет без ошибок.
Если же модуль не был получен, то загрузить модуль в память методом ОткрытьМодуль().
•Особенности Платформы позволяют загрузить один и тот же модуль в память несколько раз и в итоге в памяти могут возникнуть несколько разных экземпляров одного и того же модуля.
Чтобы избежать избыточной загрузки одного и того же модуля нужно использовать метод ПолучитьМодульПоКлючу().
Пример:
// Пример загрузки модуля по ключу
Перем МодульВВодаКоличестваКлюч; // глобальная пременная, хранит ключ модуля
// Функция загружает модуль в память только если его нет в памяти.
Функция ЗапроситьКоличество() Экспорт
МодульВВодаКоличества = ПолучитьМодульПоКлючу(МодульВВодаКоличестваКлюч);
Если МодульВВодаКоличества = Неопределено Тогда
МодульВВодаКоличества = ОткрытьМодуль(ИменаМодулей.ФормыДиалогов.ФормаВводаКоличества);
МодульВВодаКоличестваКлюч = МодульВВодаКоличества.Ключ();
МодульВВодаКоличества.УстановитьОбработкуВыбора(ОбработчикВводаКоличества);
Иначе
ОтладочноеСообщение("Модуль 'ФормаВводаКоличества' не выгружался из памяти, новая загрузка не требуется.");
КонецЕсли;
Возврат МодульВВодаКоличества;
КонецФункции