Отчет с типом «Двоичные данные» – средство формирования отчетности в любом формате (HTML, Excel, Word, pdf) Миндияров Илья Главный специалист Центра информационных технологий и консалтинга ПАРУС [email protected] Комплексная система.

Download Report

Transcript Отчет с типом «Двоичные данные» – средство формирования отчетности в любом формате (HTML, Excel, Word, pdf) Миндияров Илья Главный специалист Центра информационных технологий и консалтинга ПАРУС [email protected] Комплексная система.

Slide 1

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 2

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 3

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 4

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 5

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 6

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 7

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 8

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 9

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 10

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 11

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 12

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 13

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 14

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 15

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 16

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 17

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 18

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 19

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 20

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 21

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 22

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 23

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки


Slide 24

Отчет с типом
«Двоичные данные» – средство
формирования отчетности в любом
формате (HTML, Excel, Word, pdf)

Миндияров Илья
Главный специалист
Центра информационных технологий и консалтинга
ПАРУС
[email protected]

Комплексная система управления.

Вопросы рассматриваемые в презентации

• Особенности создания отчетов с типом “Двоичные данные”
• Пример создания пользовательских отчетов в MS Word

Для получения текста программ нажмите правой кнопкой мыши на объекте
“BinaryReports.zip” выберите “Копировать”, а затем в проводнике нажмите правую
кнопку мыши и выберите “Вставить”.

Комплексная система управления.

Зачем нужно
Отчеты с типом “Двоичные данные” применяются если:
1. Нужно сформировать отчет с типом данных отличных от стандартных типов
отчетов ПП Парус 8, например, PDF, HTML, RTF, MS Word
(презентация http://www.parus.com/docs/09_mindijarov_13122012.pps);
2. Нужно, частично или полностью, формировать отчет НЕ на клиенте ПП Парус 8
(презентация http://www.parus.com/docs/imindiyarov_20130725.ppsx);
3. Предоставить пользователю произвольные файлы из других информационных
систем.

Комплексная система управления.

Особенности написания отчета
Отчеты с типом “Двоичные данные” всегда:
1. Основываются на процедуре PL/SQL.
2. Имеют входной числовой параметр с типом привязки “Идентификатор процесса”.
3. Данные, которые будут переданы клиенту должны быть записаны в таблицу
FILE_BUFFER.
4. Если необходимо вызывать отчет из разделов, то нужно выполнить “Загрузить из
файла…” и указать любой файл ненулевой длины.
Пример отчета:
CREATE OR REPLACE PROCEDURE UDO_P_SAMPLE_BREPORT
( NPROCESS IN NUMBER --Идентификатор процесса
) IS
c
clob;
begin
dbms_lob.createtemporary(c,true,dbms_lob.call);
dbms_lob.append(c,'Hello world!');
insert into FILE_BUFFER
(IDENT, FILENAME, DATA, run_cmd)
values
(NPROCESS, '.txt', C, null);
end ;

Комплексная система управления.

Особенности написания отчета
Особенности заполнения таблицы FILE_BUFFER
• В поле IDENT необходимо записывать “идентификатор процесса”;
• Если имя файла начинается с “.”, то на клиенте будет создано случайное имя файла;
• В поле DATA записываются данные с типом CLOB, либо в поле BDATA
записываются данные с типом BLOB;
• Если в параметр RUN_CMD:





записать NULL, то это будет запущено приложение, которое ассоциировано с расширением
имени файла;
записать ‘NULL’ (как строковую константу), то файл будет создан, но никакой команды на
запуск выполнено не будет;
Записать имя исполняемого файла и символы ‘%1’, например, ‘some_program.exe /q -x %1’, то
будет запущена указанная программа, символы %1 будут заменены на имя файла, который будет
создан из полей BDATA или DATA.

Комплексная система управления.

Особенности выполнения отчета




Файлы создаются во временной папке пользователя (заданной в переменной
окружения TEMP);
Файлы не удаляются;
Файлы создаются и выполняются по порядку, в зависимости от значения поля RN
таблицы FILE_BUFFER;

Комплексная система управления.

Установка примера
Под пользователем SYS! Выполнить UnderSYS.sql
Под администратором Парус 8! Выполнить UnderPARUS.sql
Из папки “Пример” архива выполните UDO_P_CHANGEFIO_RPT.sql
Добавьте пользовательский отчет с типом “Двоичные данные”

У этого пользовательского отчета выполните действие “Загрузить из файла…” в
качестве параметра укажите файл ФАМИЛИЯ.xml из папки “Пример” архива

Комплексная система управления.

Установка примера
Настройте образцы приказов и образцы пунктов приказов

Комплексная система управления.

Демонстрация примера
Создадим приказ о смене фамилии Ивановой на Петрову

Комплексная система управления.

Демонстрация примера
На вкладке пункт укажем 2 основания.
Примечание: переход на новую строку осуществляется нажатием +Enter

Комплексная система управления.

Демонстрация примера
Печатаем отчет

Комплексная система управления.

Демонстрация примера
Откроется MS Word

Комплексная система управления.

Программная реализация примера
Откроется MS Word и наберем текст приказа

Комплексная система управления.

Программная реализация примера
В свойствах документа добавим текстовые свойства как показано на скриншоте

Комплексная система управления.

Программная реализация примера
Вставляем поля в документ. Сохраняем документа как “XML – документ Word 2003”
На скриншоте показаны коды полей

Комплексная система управления.

Программная реализация примера
Обратите внимание на константу TABLE_REASONS в отличии от PRSG_EXCEL
таблицы идут по номерам в шаблоне, а не по именам

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Загружаем файл отчета

Комплексная система управления.

Программная реализация примера
Выбираем данные по отмеченным записям
Обратите внимание вставляем разрывы страниц для НЕ первой записи

Комплексная система управления.

Программная реализация примера
Устанавливаем значения полей

Комплексная система управления.

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

Удаляем единственную строку второй таблицы (с 1 строки по 1 строку)
UDO_PKG_WINWORD.DELETE_TABLEROW(TABLE_REASONS, 1, 1);
Добавляем в конец второй таблицы строку столько раз сколько строк в основании приказа.
Поскольку каждая добавленная строка содержит поле 'REASON‘, то у метода
SET_DOCPROPERTY указываем третий параметр nROW.
UDO_PKG_WINWORD.SET_DOCPROPERTY('REASON', trim(s), nROW);
То, что мы сначала удалили строки таблицы 2 ничего не значит
nROW := UDO_PKG_WINWORD.APPEND_TABLEROW(TABLE_REASONS, 1, 1);
APPEND_TABLEROW берет XML-код строк таблицы из оригинального шаблона

Комплексная система управления.

Программная реализация примера
Сохраняем новый XML – документ.
Передаем на выполнение клиенту обычным образом

Обратите внимание, что не обязательно в параметре run_cmd указывать
‘winword.exe %1’

Комплексная система управления.

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

Т – номер таблицы
R – номер строки
С – номер ячейки