OnBeforeSelect

From SunFlurry wiki
Jump to: navigation, search
  OnBeforeSelect (События таблиц)
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Расположение:Любой глобальный модуль, текущий локальный модуль
Визуальность:Да

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

Для дополнительной информации см. статьи OnBeforeEdit, OnAfterEdit, Электронная таблица SFT и Редактор электронных таблиц, Визуальные события.

Синтаксис

OnBeforeSelect(<Вызывающая таблица (TABLE)>,<Метод выбора (INT,OUT)>,<Наименование журнала (STRING,OUT)>,<Наименование модуля (STRING,OUT)>,<Наименование формы (STRING,OUT)>,<Параметр вызова (OUT)>,<Опция вызова (OUT)>,<Фильтры таблицы выбора (LIST,OUT)>,<Порядок сортировки (STRING,OUT)>,<Столбцы таблицы выбора (STRING,OUT)>,<Список подстановки в таблицу вызова (LIST,OUT)>):<Запретить выбор (INT)>

Аргументы

  • <Вызывающая таблица (TABLE)> - Таблица, для которой произведена попытка открытия редактируемого объекта.
  • <Метод выбора (INT,OUT)> - (возможен аргумент-переменная (ByRef)) 0 -- выбор будет происходить в виде выпадающей таблицы, встраиваемой к выбранному реквизиту, 1 -- в виде формы (вызываемой в модальном режиме, см. LoadModule)
  • <Наименование журнала (STRING,OUT)> - (возможен аргумент-переменная (ByRef)) Выбор может объекта может происходить как в форме списка объекта, так и в журнале, который включает объекты разных видов. Для выбора объекта из журнала, здесь указывается наименование журнала. Параметр используется при выборе методом 1.
  • <Наименование модуля (STRING,OUT)> - (возможен аргумент-переменная (ByRef)) Наименование модуля при отображении формы выбора. Параметр инициализируется модулем по умолчанию, ассоциированным с объектом редактирования. При выборе в журнале должен содержать имя модуля журнала. Параметр используется при выборе методом 1.
  • <Наименование формы (STRING,OUT)> - (возможен аргумент-переменная (ByRef)) Наименование формы при отображении формы выбора. Параметр инициализируется формой по умолчанию, ассоциированной с объектом редактирования. При выборе в журнале должен содержать имя формы журнала. Параметр используется при выборе методом 1.
  • <Параметр вызова (OUT)> - (возможен аргумент-переменная (ByRef)) Произвольное значение, которое будет доступно в форме выбора объекта в виде переменной Param. Для справочников с родителями, рекомендуется передавать значение родителя в этом параметре. Параметр используется при выборе методом 1.
  • <Опция вызова (OUT)> - (возможен аргумент-переменная (ByRef)) Произвольное значение, которое будет доступно в редактируемом объекте в виде переменной Option. Параметр используется при выборе методом 1.
  • <Фильтры таблицы выбора (LIST,OUT)> - (возможен аргумент-переменная (ByRef)) Список, по которому будет происходить фильтрация таблицы, при этом заголовки элементов списка будут использоваться, как идентификаторы реквизитов фильтра (см. Стандартные фильтры, только простой режим). Пример использования фильтров ищите ниже. Параметр используется при выборе методом 0.
  • <Порядок сортировки (STRING,OUT)> - (возможен аргумент-переменная (ByRef)) Строка порядка сортировки таблицы, представляет собой перечисление реквизитов, по которым будет сортироваться таблица, разделенных запятой со знаками + или - для указания порядка сортировки. Пример использования сортировки ищите ниже. Параметр используется при выборе методом 0.
  • <Столбцы таблицы выбора (STRING,OUT)> - (возможен аргумент-переменная (ByRef)) Идентификаторы реквизитов через запятую, которые будут выведены в столбцы таблицы. По умолчанию встраиваемая таблица для выбора содержит только один столбец с представлением элементов, здесь можно задать другие столбцы (наименования столбцов задаются через запятую). Пример использования ищите ниже. Параметр используется при выборе методом 0.
  • <Список подстановки в таблицу вызова (LIST,OUT)> - (возможен аргумент-переменная (ByRef)) Список с элементами, при заполнении которого в таблице будут отображаться только данные элементы списка, запрос к базе данных произведен не будет, а аргументы Фильтры таблицы выбора, Порядок сортировки и Столбцы таблицы выбора будут проигнорированы. Параметр используется при выборе методом 0.

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

Если функция возвратит ноль (ответ по умолчанию), действие будет разрешено (будет открыта форма выбора, либо показана выпадащая таблица для выбора), иначе действие будет отменено.

Примеры

//Переменная для временного хранения значения ячейки редактирования
Var спРедактируемоеЗначение Export;

Function OnBeforeEdit(SourceTable,EditMode,ObjectType,ObjectIndex,Line,Column,AttButtons,EditValue,EditMask)
  ...
  //Сохранить значение ячейки, так как оно будет утеряно после редактирования
  спРедактируемоеЗначение :=SourceTable.Area(Column,Line,Column,Line).Value;
  ...
EndFunction

Function OnBeforeSelect(SourceTable,ByRef Method,ByRef Journal,ByRef Module,ByRef FormName,ByRef Param,ByRef Option,ByRef Filters,ByRef SortOrder,ByRef Columns,ByRef CustomSelectList)
  Result:=1;
  if typeStr(спРедактируемоеЗначение )<>"LIST" Then
    //Если значение не является списком, не разрешать редактирование
    Exit;
  EndIf;
  if isEmpty(спРедактируемоеЗначение.GetByName("Индекс")) Then
    //Если в списке отсутствует элемент с именем "Индекс", не разрешать редактирование
    Exit;
  EndIf;
  //Необходимо выбрать партию номенклатуры, выбор будет производиться в виде выпадающей таблицы
  Method:=0;
  //В фильтрах укажем родителя и скроем удаленные элементы
  Filters:=List.Create();
  Filters.SetByName("@Parent",спРедактируемоеЗначение.GetByName("Номенклатура"));
  Filters.SetByName("@Status",0);
  //Сортировка будет производиться по дате партии
  SortOrder:="ДатаПартии+";
  //В таблице будут присутствовать дополнительные столбики (код и дата партии)
  Columns:="Code,ДатаПартии,Name"
  //Разрешить открытие таблицы выбора
  Result:=0;
  Exit;
EndFunction