Table.Object.Value

From SunFlurry wiki
Jump to: navigation, search
  Object.Value (Доступ к свойствам объектов)
Объект:Электронная таблица
Статус разработки: Реализована
Тип:Атрибут
Обращение к БД:Нет
Доступность:Чтение и запись
Исключения:Объект не выбран
Визуальность:Нет

Атрибут возвращает или изменяет значение, ассоциированное с текущим объектом таблицы. Значение может иметь произвольный тип, в т.ч. объект базы данных и также сложные типы, как список и таблица. Значение не выводится на экран, однако, если объект имеет значение, курсор мыши, находящийся над объектом, будет имеет другой вид и двойной клик по объекту по умолчанию будет открывать объект базы данных (если это возможно), хранящийся в этом атрибуте. Поведение системы при двойном клике мышью или нажатии клавиши Enter можно изменить с помощью предопределенных событий, типа OnDoubleClick. Атрибут работает только, когда визуальный объект был выбран для работы в текущем объекте.

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

Синтаксис

Table.Object.Value:<Значение объекта>

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

Возвращает значение объекта.

Примеры

//Пример функции, вызываемой свободной таблицей при нажатии Enter или двойном клике по ячейке или объекту таблицы
Function OnDoubleClick(Таб)
  If Таб.SelectionMode>1 Then
    //Выделен объект, а не ячейка
    if Таб.SelectedObjects().Count()<1 Then
      Exit;
    EndIf;
    Obj:=Таб.SelectedObjects().Get(1);
    //Получим значение объекта
    Сп:=Obj.Value;
  Else
    //Получим значение ячейки под курсором
    Сп:=Таб.Area(Таб.CurCol,Таб.CurLine,Таб.CurCol,Таб.CurLine).Value;
  EndIf;  
  If TypeStr(Сп)<>"LIST" Then
    Exit;
  EndIf;
  //Откроем модуль, закодированный в значении объекта или ячейки
  If not isEmpty(Сп.GetByName("Module")) Then
    Путь:=Сп.GetByName("Module");
    Сп:=List.Create();
    Сп.SetByName("Table",Таб);
    Сп.SetByName("SimpleRootCall",1);
    LoadModule(0,Путь,Сп,0,"Module","Form");
  EndIf;
EndFunction