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