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

Использование дополнительных значений для редактируемых ячеек

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

В таком случае используются дополнительные значения ячеек, в которых хранятся числовые значения. Дополнительные значения устанавливаются при помощи метода УСТ_ДЗНАЧ_ЯЧЕЙКИ по мере заполнения всей табличной формы.

В обработчике редактирование считывается дополнительное значение редактируемой ячейки и записывается в значение, соответствующее текущим данным ячейки. В обработчике сохранение устанавливаем значение ячейки методом УСТ_ДАННЫЕ_ЯЧЕЙКИ, так как стандартный механизм сохранения недоступен из-за различных типов редактируемого и сохраняемого значений.

В примере ниже приведен листинг редактирования ячеек со значением цены прописью.

Пример

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

  ФУНКЦИЯ ЦЕЛОЕ: Редактирование(ПЕРЕМ ТАБ_ФОРМА: форма; ТФ_ЯЧЕЙКА: ячейка; ПЕРЕМ *: знач; 
  ПЕРЕМ СТРОКА: парам)
    РЕЗУЛЬТАТ = РЕД_ЦЕЛОЕ
    ПЕРЕМ СТРОКА: имя
    форма.СЧИТАТЬ_ДЗНАЧ_ЯЧЕЙКИ(ячейка, СТР(ячейка.строка),знач)
  КОНЕЦ_ФУНКЦИИ


  ФУНКЦИЯ ЛОГИКА: Сохранение(ПЕРЕМ ТАБ_ФОРМА: форма; ТФ_ЯЧЕЙКА: ячейка; *: знач)
    РЕЗУЛЬТАТ = ДА
    форма.УСТ_ДЗНАЧ_ЯЧЕЙКИ(ячейка, знач)
    форма.УСТ_ДАННЫЕ_ЯЧЕЙКИ(ячейка, СУММАП(знач))
  КОНЕЦ_ФУНКЦИИ

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


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

]

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

См. также: