Tab.FinishEdit

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

Функция инициирует окончание редактирования ячейки таблицы в указанном режиме. Работает для визуальных таблиц, для которых активен режим редактирования ячейки. Функция не ожидает результата действия, возвращаясь сразу после вызова. При определенных условиях, в окончании режима редактирования может быть отказано. Функция может быть вызвана для таблиц, где режим редактирования в данный момент не активен, в этом случае, никаких действий выполнено не будет.

Синтаксис

Tab.FinishEdit(<Режим окончания редактирования (INT)>,<Индекс выделенного столбца после окончания редактирования или ноль (INT,STRING)>)

Аргументы

  • <Режим окончания редактирования (INT)> - (необязательный аргумент) Возможны следующие значения:
    • 0 -- отказаться от введеленных изменений и окончить редактирование.
    • 1 -- (по умолчанию) принять результат редактирования и окончить редактирование.
    • 2 -- принять результат редактирования и продолжить редактирование (следующий аргумент задает следующую ячейку для редактирования).
  • <Индекс выделенного столбца после окончания редактирования или ноль (INT,STRING)> - (необязательный аргумент) Задает либо наименование, либо индекс столбца, который будет выделен, как текущий после выполнения действий для окончания редактирования. Если задан 0, будет выполнено изменение текущего столбца, если это необходимо в контексте редактирования таблицы. Особые условия, связанные с изменением текущего столбца при выполнении функции:
  1. Если происходит принятие результата редактирования (первый аргумент равен 1 или 2), и индекс нового столбца не задан, система произведен действия по своему усмотрению (будет выбран следующий столбец в цепочке столбцов редактирования и для режима 2 будет инициировано его редактирование).
  2. Если происходит принятие результата редактирования (первый аргумент равен 1 или 2), и индекс нового столбца задан, система сначала выполнит окончание редактирования, если окончание удачное, будет активирован указанный столбец (и инициирована попытка начать редактирование ячейки этого столбца для режима 2), если же окончить редактирование не удалось текущий столбец изменен не будет, и его редактирование будет продолжено.
  3. Если происходит отмена принятия результата редактирования (первый аргумент равен 0), и отменить редактирование не получилось, либо индекс нового столбца не задан, текущий столбец не будет изменен.
  4. Если происходит отмена принятия результата редактирования (первый аргумент равен 0), индекс нового столбца задан, и отмена редактирования выполнена успешно, система изменит текущий столбец на заданный, инициирование начала редактирования ячейки нового столбца произведено не будет.

Примеры

//Ниже показан пример обработчика события OnAfterEditCell для визуальной таблицы
MainTab:=Form.MainTab.Value;
MainTab.CurLine:=MainTab.SelectedLine;

//Если происходит окончание редактирования ячейки в столбце "КодКлиента", найдем
//  клиента по коду и пропустим столбец "Клиент" (так как он уже заполнен) и перейдем к редактированию столбца "Сумма"
If MainTab.SelectedColumnName=uppercase("КодКлиента") Then
  Код:=Value;
  аЭл:=глНайтиПоКоду("кнтКонтрагенты",Код);
  If аЭл=0 Then
    Box("Контрагента с таким кодом не существует!",Q_STOP);
    Exit;
  EndIf;
  If аЭл.IsFolder() Then
    Box("Введенному коду соответствует папка контрагентов!",Q_STOP);
    Exit;
  EndIf;
  //Обновим сохраняемое значение (ведущие нули при вводе были пропущены)
  Value:=аЭл.Code;
  MainTab.КодКлиента:=Value;
  //Заполним следующий столбец "Клиент"
  MainTab.Клиент:=аЭл;
  //Вызовем успешное завершение редактирования и автоматическую инициацию редактирования столбца "Сумма"
  MainTab.FinishEdit(2,"Сумма");
EndIf;