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