CftClub.ru
Клуб специалистов ЦФТ-Банк

Свой шаблон для XLSX-отчёта в локальном СП

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих
Предыдущая тема :: Следующая тема  
Автор Сообщение
yaro4plp
Участник


Вступление в Клуб: 03.10.2024
СообщениеСб Ноя 02, 2024 23:03   Свой шаблон для XLSX-отчёта в локальном СП Ответить с цитатой
Полезность: Нет оценки
Добрый день!

Первый раз делаю операцию для формирования Excel-отчёта. Локальный СП.

На основе других исходников вырисовывается такая "картина маслом":

Операция создания XLSX файла отчёта

- Для отчёта создаётся запись в таблице-очереди обработки и запуска отчётов.

- В таблицу параметров очереди добавляются значения и имена входных параметров, требующиеся для формирования отчёта.

- Для графического форматирования и загрузки данных и формул в ячейки отчёта используются инструменты [OOXML].[API_XL].

- Для рисования отчёта и загрузки в него данных ( на основе шаблона ) используется глобальная функция, объявленная в текущей операции и возвращающая BLOB-данные финального XLSX-файла.

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


"Внимание, вопрос!"

Как указать путь к своему шаблону, чтобы отчёт формировался на его основе?


Видел в исходниках такую строчку (см. первую строку в теле функции):


Код:

-- Функция формирования отчёта --

public fnc(pTplName varchar2, ...) return blob is

  xlsx blob;

begin

  -- Предположительно загрузка BLOB-файла шаблона для последующей обработки
  xlsx := ::[BLOB_FILE].[FILE_LIB].file2blob(trim(::[RS_QUEUE_PARAM].[LIB].GetStrParam('RS_RPT_XLS_PATH'), '/ '), pTplName);

  &xl.open_file(xlsx); -- распаковка данных шаблона для редактирования

  draw_report(...); -- рисование отчёта

  &xl.finish(xlsx); -- сборка XLSX-архива в BLOB

  return &lib_ooxml.xl_finish( p_show == true, p_description == &METHOD$NAME );

end;



Если правильно понял, первой строчкой в теле функции блоб-переменная инициализируется файлом шаблона c именем pTplName, а путь к нему берётся из параметра 'RS_RPT_XLS_PATH'.

Можно ли предварительно вместо геттера использовать сеттер и записать в параметры 'pTplName' и 'RS_RPT_XLS_PATH' имя и путь к своему шаблону, чтобы операция подхватила в работу его?

Чтобы стало:

- RS_RPT_XLS_PATH = 'C:/.../excel/my_templates'
- pTplName = 'my_template.xltx'

(сам непосредственно только после праздников смогу эту возможность проверить)


PS:
При запуске в Навигаторе операции с пустым именем шаблона pTplName функция формирования отчёта успешно (без ошибок) отрабатывала: выводила сообщение "Отчёт передан в обработку", а в очереди отчётов появлялась новая запись в статусе "Отчёт ожидает обработки".
Предположительно джоб, отработав функцией построения XLSX-файла и получив пустой BLOB из-за отсутствия файла шаблона с указанным именем в каталоге RS_RPT_XLS_PATH, не переводит отчёт в следующий статус, ожидая появления шаблона для начала обработки и непустого BLOB-результата.
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеПн Ноя 04, 2024 08:34   Re: Свой шаблон для XLSX-отчёта в локальном СП Ответить с цитатой
Полезность: 1
yaro4plp пишет:
(skip) Как указать путь к своему шаблону, чтобы отчёт формировался на его основе? (skip)


Посмотрите реализацию любой операции PRN_00цифра в типах, дочерних от REPS_DATA, либо в REPS_DATA.LIB_PRINT.init_xls (или xls_init, не помню точно). Реализация использует шаблон XLSX-файлов, которые лежат в справочнике SHABLON_DOC, что гораздо удобнее файловой системы.

PS: Шаблон, расположенный на локальной станции пользователя на диске C: однозначно использован быть не может, предварительно нужно организовать передачу шаблона на серверную сторону, так как именно там формируется и заполняется файл.
yaro4plp
Участник


Вступление в Клуб: 03.10.2024
СообщениеПн Ноя 04, 2024 13:39   Re: Свой шаблон для XLSX-отчёта в локальном СП Ответить с цитатой
Полезность: Нет оценки
Эмиралька пишет:
Посмотрите реализацию любой операции PRN_00цифра в типах, дочерних от REPS_DATA, либо в REPS_DATA.LIB_PRINT.init_xls (или xls_init, не помню точно). Реализация использует шаблон XLSX-файлов, которые лежат в справочнике SHABLON_DOC, что гораздо удобнее файловой системы.

Спасибо! Посмотрю эти операции. Хотел увидеть вариант, не предусматривающий предварительную перекачку шаблона в таблицу-справочник БД, а использующий локальный файл.

Эмиралька пишет:
PS: Шаблон, расположенный на локальной станции пользователя на диске C: однозначно использован быть не может, предварительно нужно организовать передачу шаблона на серверную сторону, так как именно там формируется и заполняется файл.

Про передачу шаблона с локальной станции на серверную сторону: а локальный СП (у меня такой) не на локальной станции? Или имеется в виду сервер БД? Туда надо шаблон загонять? Там хранимые процедуры и функции будут с ним работать? Можете этот момент прояснить? Без погружения в детали реализации - самую суть.
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеПн Ноя 04, 2024 20:47   Re: Свой шаблон для XLSX-отчёта в локальном СП Ответить с цитатой
Полезность: 1
yaro4plp пишет:
Эмиралька пишет:
Посмотрите реализацию любой операции PRN_00цифра в типах, дочерних от REPS_DATA, либо в REPS_DATA.LIB_PRINT.init_xls (или xls_init, не помню точно). Реализация использует шаблон XLSX-файлов, которые лежат в справочнике SHABLON_DOC, что гораздо удобнее файловой системы.

Спасибо! Посмотрю эти операции. Хотел увидеть вариант, не предусматривающий предварительную перекачку шаблона в таблицу-справочник БД, а использующий локальный файл.

Насколько я помню, для OOXML файл шаблона должен быть расположен в blob, а уж как он в него попадёт... А чем не нравится справочник?

yaro4plp пишет:
Эмиралька пишет:
PS: Шаблон, расположенный на локальной станции пользователя на диске C: однозначно использован быть не может, предварительно нужно организовать передачу шаблона на серверную сторону, так как именно там формируется и заполняется файл.

Про передачу шаблона с локальной станции на серверную сторону: а локальный СП (у меня такой) не на локальной станции? Или имеется в виду сервер БД? Туда надо шаблон загонять? Там хранимые процедуры и функции будут с ним работать? Можете этот момент прояснить? Без погружения в детали реализации - самую суть.


FIO я имею в виду. Ну, если вы положил шаблон в локальную папку, в которой организовали FIO локального СП, тогда да, но как вы на проме это будете организовывать?
pabrz
Участник со стажем


Вступление в Клуб: 27.09.2022
СообщениеВт Ноя 05, 2024 01:39    Ответить с цитатой
Полезность: 1
История с файлами обычно так себе.
В таком случае народ чаще всего бегает через какой-нибудь citrix на котором настроен map на конкретную директорию в сети с шаблонами.

По факту с блобами в shablon_doc намного удобнее.
А так то диск не примэпится, то не на том диске шаблон поменяли (потому что нужен еще и тестовый) и т.д. и т.п.
yaro4plp
Участник


Вступление в Клуб: 03.10.2024
СообщениеВт Ноя 05, 2024 08:11   Re: Свой шаблон для XLSX-отчёта в локальном СП Ответить с цитатой
Полезность: Нет оценки
Эмиралька пишет:
yaro4plp пишет:
Эмиралька пишет:
Посмотрите реализацию любой операции PRN_00цифра в типах, дочерних от REPS_DATA, либо в REPS_DATA.LIB_PRINT.init_xls (или xls_init, не помню точно). Реализация использует шаблон XLSX-файлов, которые лежат в справочнике SHABLON_DOC, что гораздо удобнее файловой системы.

Спасибо! Посмотрю эти операции. Хотел увидеть вариант, не предусматривающий предварительную перекачку шаблона в таблицу-справочник БД, а использующий локальный файл.

Насколько я помню, для OOXML файл шаблона должен быть расположен в blob, а уж как он в него попадёт... А чем не нравится справочник?

yaro4plp пишет:
Эмиралька пишет:
PS: Шаблон, расположенный на локальной станции пользователя на диске C: однозначно использован быть не может, предварительно нужно организовать передачу шаблона на серверную сторону, так как именно там формируется и заполняется файл.


Про передачу шаблона с локальной станции на серверную сторону: а локальный СП (у меня такой) не на локальной станции? Или имеется в виду сервер БД? Туда надо шаблон загонять? Там хранимые процедуры и функции будут с ним работать? Можете этот момент прояснить? Без погружения в детали реализации - самую суть.


FIO я имею в виду. Ну, если вы положил шаблон в локальную папку, в которой организовали FIO локального СП, тогда да, но как вы на проме это будете организовывать?


Спасибо всем за замечания! Обязательно возьму на заметку. Мне пока просто на попробовать("поиграться"/поизучать) инструменты редактирования шаблона.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах