Метод ЭЛЕКТРОННАЯ_ТАБЛИЦА. СОЗДАТЬ_БУФЕР
Метод СОЗДАТЬ_БУФЕР позволяет создать временный буфер для подготовки значений ячеек и их форматов, которые позднее могут быть эффективно записаны в электронную таблицу офисного приложения. Установка значений и форматов ячеек в буфере не требует взаимодействия с офисным приложением и выполняется в десятки раз быстрее, чем запись без использования буфера. Передача значений и форматов из буфера офисному приложению выполняется методом ЗАПИСАТЬ_БУФЕР.
Четырехугольная область ячеек электронной таблицы, для которой следует создать буфер, определяется текущей ячейкой и размерами, задаваемыми в параметрах метода. Текущая ячейка должна быть предварительно выбрана вызовом метода УСТ_ТЕК_ПОЗ или УСТ_ТЕК_ЯЧЕЙКУ.
ФУНКЦИЯ ЛОГИКА: СОЗДАТЬ_БУФЕР(ЦЕЛОЕ: ширина; ЦЕЛОЕ: высота)
Параметры
- ширина
- Горизонтальный размер буфера (количество ячеек).
- высота
- Вертикальный размер буфера (количество ячеек).
Возвращаемое значение
ДА – в случае успешного создания, НЕТ – в случае ошибки. Сообщение об ошибке может быть получено с помощью метода ПОСЛ_ОШИБКА.
Запись данных в буфер выполняется только методами УСТ_ЗНАЧ_ЯЧЕЙКИ и УСТ_ФОРМАТ_ЯЧЕЙКИ. Буфер записи содержит не только значения ячеек, но и форматы, чем отличается от буфера чтения. Выбор текущей ячейки выполняется как обычно: вызовом метода УСТ_ТЕК_ПОЗ или УСТ_ТЕК_ЯЧЕЙКУ. Если выбрана ячейка вне области буфера, то ее запись выполняется в обход буфера (т.е. медленно).
После того, как все необходимые данные записаны в буфер, их нужно передать в документ вызовом метода ЗАПИСАТЬ_БУФЕР. Метод ЗАПИСАТЬ_БУФЕР также закрывает буфер, т.е. освобождает все связанные с ним ресурсы. Закрыть буфер записи без сохранения данных можно вызовом метода ЗАКРЫТЬ_БУФЕР. При закрытии документа ресурсы буфера освобождаются автоматически без сохранения данных в документ.
Для данного документа одновременно поддерживается только один буфер (не важно – чтения или записи). Например, для записи двух несмежных столбцов можно сначала создать буфер для первого столбца, записать данные, записать буфер, а затем сделать то же для второго столбца.
Во время использования буфера запрещено переключение текущего листа методом УСТ_ТЕК_ЛИСТ.
Пример
Создается новая электронная таблица и в нее записывается 100 строк с 3-мя столбцами типов "целое", "текст" и "дата".
ПЕРЕМ ЭЛЕКТРОННАЯ_ТАБЛИЦА: т ЕСЛИ т.СОЗДАТЬ_ДОК("Default") ТО т.УСТ_ТЕК_ЛИСТ(т.ИМЯ_ЛИСТА(1)) // создаем буфер 3 x 100 т.УСТ_ТЕК_ЯЧЕЙКУ("A", 1) т.СОЗДАТЬ_БУФЕР(3, 100) ЦИКЛ ДЛЯ (стр = 1, 100) т.УСТ_ТЕК_ЯЧЕЙКУ("A", стр) // выбираем ячейку в столбце "A" т.УСТ_ЗНАЧ_ЯЧЕЙКИ(ЭТ_ЦЕЛОЕ, стр) // записываем номер строки как целое т.УСТ_ТЕК_ЯЧЕЙКУ("B", стр) // выбираем другую ячейку в столбце "B" т.УСТ_ЗНАЧ_ЯЧЕЙКИ(ЭТ_СТРОКА, СУММАП(стр)) // записываем номер строки прописью как строку т.УСТ_ТЕК_ЯЧЕЙКУ("C", стр) // выбираем другую ячейку в столбце "C" т.УСТ_ЗНАЧ_ЯЧЕЙКИ(ЭТ_ДАТА, ДАТА_ТЕК + стр, НЕТ) // записываем дату т.УСТ_ФОРМАТ_ЯЧЕЙКИ(ЭТ_ДАТА, "YYYY-MM-DD") // нестандартный формат для даты КОНЕЦ_ЦИКЛА // записываем буфер в документ т.ЗАПИСАТЬ_БУФЕР т.СОХРАНИТЬ_ДОК("test.ods") КОНЕЦ_ЕСЛИ