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