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