Руководство разработчика

Запрет редактирования ячейки

Запрет редактирования ячейки можно осуществлять несколькими способами. Самый универсальный вариант запрета редактирования ячейки - это установить занчение НЕТ для признака Возможность редактирования в Инспекторе объектов, или у признака Разрешено в секции Редактирование у меню Форма-Ячейки-Атрибуты.

При помощи обработчика ячейки редактирование тоже осуществляется запрет редактирования ячейки. Вместо создания редактора ячейки могут выполняться другие действия.

Запрет редактирования ячейки обеспечивается константой РЕД_ЗАПРЕТ.

Вместо создания редактора ячейки может происходить, например, показ диалога.

Константа РЕД_ЗАПРЕТ прерывает все последующие действия по редактированию, и вызов обработчика "сохранение" не происходит.

Пример

Пример иллюстрирует редактируемую табличную форму. Для редактирования ячеек столбца единиц измерения вызывается диалог для выбора единиц измерения из справочника, а для ячеек остальных столбцов редактирование производится встроенных механизмом.

ТИП РедФорма(ТАБ_ФОРМА)
[
  ПОДМЕНА файл = "Ред_форма.ibf";
  ПОДМЕНА редактирование = {Редактирование};

  ФУНКЦИЯ ЦЕЛОЕ: Редактирование(ПЕРЕМ ТАБ_ФОРМА: форма; ТФ_ЯЧЕЙКА: ячейка; 
  ПЕРЕМ *: знач; ПЕРЕМ СТРОКА: парам)
    ЕСЛИ ячейка.столбец = 2  ТО
	  РЕЗУЛЬТАТ = РЕД_ЗАПРЕТ
      ПЕРЕМ АНАЛИТИКА: об;
      КОНСТ ветка = "НОМЕНКЛАТУРА/ЕДИЗМ/СПР"
      ПЕРЕМ ДИАЛОГ_АНАЛИТ: выб_длг
      выб_длг.заголовок = "Выберите единицу измерения"
      выб_длг.абс_код = ДА
      выб_длг.выбор_множ = НЕТ
      выб_длг.состояния[1] = [корень = ветка]
      ЕСЛИ выб_длг.ПОКАЗАТЬ ТО
        об._код = выб_длг.выд_одиноч.код
        об.СЧИТАТЬ
        знач = об._название
        форма.УСТ_ДАННЫЕ_ЯЧЕЙКИ(ячейка, знач)
      КОНЕЦ_ЕСЛИ
	КОНЕЦ_ЕСЛИ
  КОНЕЦ_ФУНКЦИИ


  ФУНКЦИЯ Тиражирование_строк
    ПЕРЕМ ТФ_РЕЖИМ_ДОБАВЛЕНИЯ: режим_добавления
    режим_добавления =[копировать_данные = НЕТ, копировать_атрибуты = ДА, 
	деление_границ = ТФ_ДГ_КОПИРОВАТЬ]
    УСТ_РЕЖ_ДОБАВЛЕНИЯ(режим_добавления)
    ПЕРЕМ стр = ПОЗ_СТРОКИ("Раздел2", "строка")
    ЦИКЛ ПОКА(стр <= 5)
      ДОБАВИТЬ_СТРОКУ("Раздел2", стр)
      стр++
    КОНЕЦ_ЦИКЛА
  КОНЕЦ_ФУНКЦИИ


  ФУНКЦИЯ Заполнение_строк
    ПЕРЕМ ТФ_ЯЧЕЙКА: яч_наим, яч_ед, яч_цена
    ПЕРЕМ стр = ПОЗ_СТРОКИ("Раздел2", "строка")
    ЦИКЛ ПОКА(стр <= КОЛ_СТРОК("Раздел2")-1)
      ПЕРЕМ ЦЕЛОЕ: цена = СЛУЧ_ЧИСЛО(2000)
      яч_наим = [имя_раздела = "Раздел2", имя_столбца = "наименование", строка = стр]
      яч_ед = [имя_раздела = "Раздел2",  имя_столбца = "ед_изм", строка = стр]
      яч_цена = [имя_раздела = "Раздел2",  имя_столбца = "цена", строка = стр]
      УСТ_ТИП_ЯЧЕЙКИ(яч_наим, ТФ_ТЯ_СТРОКА)
      УСТ_ТИП_ЯЧЕЙКИ(яч_ед, ТФ_ТЯ_СТРОКА)
      УСТ_ТИП_ЯЧЕЙКИ(яч_цена, ТФ_ТЯ_СТРОКА)
      УСТ_ДАННЫЕ_ЯЧЕЙКИ(яч_наим, "Товар " + СТР(стр-1))
      УСТ_ДАННЫЕ_ЯЧЕЙКИ(яч_цена, СУММАП(цена))
      УСТ_ДЗНАЧ_ЯЧЕЙКИ(яч_цена, СТР(яч_цена.строка), цена)
      стр++
    КОНЕЦ_ЦИКЛА
  КОНЕЦ_ФУНКЦИИ

]

ВЫЧИСЛИТЬ
  ПЕРЕМ РедФорма: тф
  // тф <- данные
  тф.Тиражирование_строк
  тф.Заполнение_строк
  тф.ПОКАЗАТЬ
КОНЕЦ

См. также: