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