ModuleTag

From SunFlurry wiki
Revision as of 08:51, 7 February 2021 by Admin (talk | contribs) (1 revision imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  ModuleTag (Системные функции)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Визуальность:Нет

Функция получает или изменяет свободную переменную, привязанную к текущему (исполняемому) модулю. Значение может использоваться по усмотрению разработчика. Функция может использоваться для хранения значений, когда модуль может быть вызван с формой или без формы. К примеру, если форма, создавшая электронную таблицу, была закрыта пользователем, модуль остается в памяти до тех пор, пока таблица не будет закрыта. Если в таблице присутствуют интерактивные элементы (кнопки, поля и пр.), они будут вызывать соответствующие функции событий из модуля. Однако, зачастую, при формировании таблицы используется некий набор параметров, без которых выполнение некоторых событий не будет возможно (требуются фильтры оригинальной формы или период формирования и пр.). Чтобы обойти эту проблему, можно хранить нужные параметры непосредственно в созданной таблице, а можно в переменной, привязанной к модулю. При начале выполнения любого модуля, функция ModuleTag возвращает пустое значение. Важно также понимать, что в функциях глобальных модулей, доступ будет осуществляться по-прежнему к значению, привязанному в активному модулю текущего потока, а не глобальному модулю, в котором располагается вызываемая функция.

Синтаксис

ModuleTag(<Новое значение>):<Предыдущее значение>

Аргументы

  • <Новое значение> - (необязательный аргумент) изменяет значение, привязанное к текущему модулю.

Возвращаемое значение

Возвращает текущее (предыдущее) значение, привязанное к текущему модулю.

Примеры

//Функции позволяют сохранять или получать произвольные значения, привязанные к текущему модулю, по их имени.
Function СохранитьВМодуле(Имя,Значение)
  aList:=ModuleTag;
  if TypeStr(aList)<>"LIST" Then
    aList:=List.Create();
    ModuleTag(aList);
  EndIf;
  aList.SetByName(Имя,Значение);
EndFunction

Function ПолучитьИзМодуля(Имя)
  aList:=ModuleTag;
  if TypeStr(aList)<>"LIST" Then
    Exit;
  EndIf;
  Exit aList.GetByName(Имя);
EndFunction