Form.SwitchToForm

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

Функция позволяет загрузить форму с указанным именем вместо загруженной в данный момент формы. При загрузке формы, поля редактирования с одинаковыми именами будут сохранять свое содержимое. Для новых полей будет использовано содержимое по умолчанию (если они связаны с реквизитами объекта базы данных, они будут загружены из базы данных). Инициализацию визуальных элементов значениями текущей формы можно при необходимости отключить. Форма теряет признак полной загрузки (IsFullyInitialized) на время загрузки. Копирование данных из старой формы для визуальных элементов будет выполнено, если:

  • Визуальный элемент не связан с редактируемым в данный момент объектом базы данных (для таких элементов информация будет загружена из текущего объекта, она должна совпадать с информацией в элементе старой формы).
  • Визуальный элемент имеет такое же имя, что и визуальный элемент старой формы из которого выполняется копирование
  • Визуальный элемент имеет тот же тип, что и визуальный элемент старой формы из которого выполняется копирование (к примеру, оба элемента -- поля редактирования).
  • Для разных типов визуальных элементов будет скопирована разная информация. К примеру, для поля редактирования -- содержимое поля, тогда как для таблицы, связанной с базой данных, позицию курсора внутри таблицы (элемент позиционирования) и т.д.

Синтаксис

Form.SwitchToForm(<Наименование формы (STRING)>,<Не загружать данные текущей формы в новую форму (INT)>=0)

Аргументы

  • <Наименование формы (STRING)> - Задает наименование новой формы, которая должна быть инициализирована вместо текущей. Наименование может совпадать с наименованием текущей формы, совместно с вторым параметром это позволяет загрузить форму с настройками по умолчанию.
  • <Не загружать данные текущей формы в новую форму (INT)> - (необязательный аргумент) Если параметр равен единице, после инициализации новой формы, данные старой формы, не связанные с текущим элементом (к примеру, содержимое полей редактирования, или индексы полей со списками), не будут скопированы в новую (если визуальный элемент в новой форме существует), иначе будет произведено копирование (по умолчанию).

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

Возвращает объект дочерней формы.

Примеры

//Пример функции, которая меняет форму документа в момент, когда пользователь выбирает другой код операции.
Function ПослеИзмененияКодаОперацииВДокументе()
  aEl:=Form.Object;
  пИмя:="Form";
  If (aEl.КодОперации=Enum.коРегистрацияОС.СписаниеОСКомиссия)Or(aEl.КодОперации=Enum.коРегистрацияОС.СписаниеОС)Or(aEl.КодОперации=Enum.коРегистрацияОС.ВводВЭксплуатациюИСписаниеОС)
      Or(aEl.КодОперации=Enum.коРегистрацияОС.РеализацияОС)Or(aEl.КодОперации=Enum.коРегистрацияОС.ВводВЭксплуатациюОС) Then
    пИмя:="FormСписание";
  ElseIf aEl.КодОперации=Enum.коРегистрацияОС.ИнвентаризацияОС Then
    пИмя:="FormИнвентаризация";
  ElseIf aEl.КодОперации=Enum.коРегистрацияОС.ПеремещениеОС Then
    пИмя:="FormПеремещение";
  EndIf;

  If Uppercase(пИмя)<>Uppercase(RemoveExt(GetFileName(Form.GetFormFileName()))) then
    Form.SwitchToForm(пИмя);
  EndIf;
EndFunction