Свой шаблон для XLSX-отчёта в локальном СП
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 локального СП, тогда да, но как вы на проме это будете организовывать? |
Спасибо всем за замечания! Обязательно возьму на заметку. Мне пока просто на попробовать("поиграться"/поизучать) инструменты редактирования шаблона. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|