![]() |
|
Отдел технической поддержки дата обновления 07.08.2024 |
|
"Команды генератора"Команды генератора отчетов условно разделены на несколько типов. УстановочныеУстановочные команды инициализируют предопределенные параметры форматов.
~Точность:А:B:",":"x"~ - установка обязательной (А), дополнительной (В) точностей вывода вещественных значений и параметров, а также символ-разделитель целой и дробной части, пробел-разделитель разрядов. Обязательная точность указывает количество всегда выводимых знаков после запятой. Дополнительная точность указывает максимальное число выводимых знаков после запятой при условии не равности этого разряда нулю.
Команды предопределенных цикловВ базовой версии генератор отчетов поддерживает команды циклов по одному проекту: по проекту, по изделиям, спецификации и работам. При наличии модуля склада добавлены команды циклов по состоянию складов и накладным. В модуле статистики добавляются команды программируемых циклов SQL. К предопределенным циклам относятся:
Форматы команд циклов~Цикл: УПОРЯДОЧИТЬ:Поле1…~ <!-- указать поля упорядочивания -->~Цикл:НАЧАЛО~ <!-- начало цикла --> ~Цикл:ПодстПоле~ <!-- вывод подставляемого поля --> ~Цикл:ПодстПоле:Тип:параметр~ <!-- ввод параметра с присвоением значения подставляемого поля --> ~Цикл:Поле:Тип~ <!-- вывод поля по типу --> ~Цикл:Поле:Тип:параметр~ <!-- ввод параметра с присвоением значения поля --> ~Цикл:ВЫХОД~ <!-- выход из цикла --> ~Цикл:КОНЕЦ~ <!-- конец цикла --> Генератор отчетов не различает строчные и заглавные буквы в описании команд. В отличие от 2-й версии программы в одной строке может быть несколько команд, но недопустим перенос на следующую строку внутри одной команды. В связи с возможными авто переносами строк браузером html в описании команд недопустимы пробелы. Типы полейЕсли осуществляется вывод подставляемого поля, то генератор автоматически определит поле на основе анализа структуры таблицы базы данных. При прямом выводе полей необходимо указать тип. В генераторе отчетов определено 4 типа : AsInteger - целое значение (возможен сокращенный вариант AsInt)AsFloat - вещественное значение AsDate - значение типа дата AsString - строковое значение AsText - строка без кавычек ВНИМАНИЕ !Необходимо помнить, что вызов подставляемого поля возможен только внутри цикла, т.е. между командами начала конца. В противном случае в выходном отчете ничего не появится ! Дополнительные сведенияЦикл Спецификация имеет дополнительные возможности указания группы печати, фильтра по типам комплектующим, принадлежности к комплектации, выборки непрямоугольных заполнений и т.п. Кроме этого для этого цикла имеется режим запроса 'Погонаж' - вывод суммарного количества по проекту на каждый комплектующий. В режиме 'Погонаж' для вывода доступны поля : Артикул, Название, Ед.Изм., Текстура, Общий_погонаж. Установка режимов и фильтров происходит непосредственно перед командой ~Спецификация.НАЧАЛО~. Перед следующем использованием цикла фильтр можно отменить : ~Спецификация:Фильтр:Очистить~. Применение и набор дополнительных фильтров смотрите в мастере кода. ~AsTextCurrency:Параметр~ - вывод значения параметра прописью валюты. По умолчанию выводит прописью для основной валюты. Если отчет вызывается из цикла проекта, то валюта с ее точностью и обозначением берется по проекту (валюта указывается для каждого проекта). ~AsTextCurrency:Параметр:ПараметрВалюты~ - расширенный синтаксис с указанием параметра-индекса валюты. ~SQLn:Поле:AsImage:width=100:height=100~ - включение в отчет чертежа; текстовое поле содержит ссылку на этот файл (имя файла), например прикрепленное изображение к артикулу, варианту соединения или состава. ~ИНДЕКСn:УСТАНОВИТЬ:индекс~ установка в начало отчета индекса вызываемого цикла. Удобно для тестирования отчета, если нужно просмотреть вид выходного отчета с данными для проекта, изделия, накладной или другого окна программы без закрытия окна редактирования исходного текста отчета. Примеры<!-- начало цикла по проектам (для одного проекта цикл проходит один раз ) -->~Проект:НАЧАЛО~ <!-- выводим поля проекта --> ~Проект:Менеджер~ Шабровкин Д.О. ~Проект:Контрагент.Название_контрагента~ Колобковкин В.В. ~Проект:kName:AsString~ Колобковкин В.В. ~Проект:kName:AsString:Заказчик~ ~AsString:Заказчик~ Колобковкин В.В. ~Проект:Себестоимость_проекта~ 1500,00 ~Проект:КОНЕЦ~ <!-- конец цикла --> <!-- Установить вызов отчета для проекта № 4 --> ~ИНДЕКС1:УСТАНОВИТЬ:4~ <!-- Установить вызов отчета для изделия № 2 в проекте № 5 --> ~ИНДЕКС1:УСТАНОВИТЬ:5~ ~ИНДЕКС2:УСТАНОВИТЬ:2~ <!-- Пример выбора подставляемого кода по условию. Вывод целых хлыстов по результатам раскроя с отображением статуса остатков - неликвид или деловой --> <TABLE style="border-collapse: collapse" border=1 bordercolor=#0> <TR> <TD align=center>Артикул</TD> <TD align=center>Название</TD> <TD align=center>Текстура</TD> <TD align=center>Остаток, мм</TD> <TD align=center>Статус</TD> </TR> ~Оптимизация.Профили:НАЧАЛО~ ~Оптимизация.Профили:Длина_остатка,_мм:AsFloat:остаток~ <TR> <TD>~Оптимизация.Профили:Артикул~</TD> <TD>~Оптимизация.Профили:Название~</TD> <TD>~Оптимизация.Профили:Текстура~</TD> <TD align=center>~Оптимизация.Профили:Длина_остатка,_мм~</TD> <TD align=center> ~IF:остаток<1500:THEN~ неликвид ~ELSE~ деловой ~ENDIF~ </TD> </TR> ~Оптимизация.Профили:КОНЕЦ~ </TABLE> Выходной отчет будет иметь примерный вид:
<!-- использование предопределенного цикла `Составы` для вывода названия составов (и других полей) к каждому элементу изделия цикл `Составы` должен быть определен внутри цикла `Спецификация`, так как получает три индекса: проект, изделие, элемент в расчетных данных должен быть установлен флаг: "Спецификация профилей и пакетов для сборки" ! --> <TABLE style="border-collapse: collapse" border=1 bordercolor=#0> <TR> <TD bgColor=#CCCCCC align=center>№</TD> <TD bgColor=#CCCCCC align=center>Артикул</TD> <TD bgColor=#CCCCCC align=center>Название</TD> <TD bgColor=#CCCCCC align=center>Составы</TD> </TR> ~AsInt:Номер=0~ ~Спецификация:Фильтр:Основной_элемент~ ~Спецификация:Начало~ ~AsInt:Номер=Номер+1~ <TR> <TD valign=top align=center>~AsInt:Номер~</TD> <TD valign=top nowrap>~Спецификация:Артикул~</TD> <TD valign=top nowrap>~Спецификация:Название~</TD> <TD valign=top nowrap> ~Составы:Начало~ ~Составы:Наименование_состава~ ~Составы:Конец~ </TD> </TR> ~Спецификация:Конец~ </TABLE> Выходной отчет будет иметь примерный вид:
ФильтрыДля предопределенного цикла 'Спецификация' имеется возможность определить команду установки фильтра, которая должна находиться перед командой~Спецификация:Начало~. Допустимо применение логических операций 'И' и 'ИЛИ' в определении фильтров, формат команд установки фильтров: ~Спецификация:Фильтр:Текст_фильтра~ ~Спецификация:Фильтр:Текст1_фильтра:И: Текст2_фильтра~ ~Спецификация:Фильтр:Текст1_фильтра:ИЛИ: Текст2_фильтра~ ~Спецификация:Фильтр:Группа_печати:Название_группы~ Команда установки фильтра может располагаться на нескольких строках, ее действие распространяется до конца отчета, поэтому чтобы отменить фильтр необходимо использовать команду: ~Спецификация:Фильтр:Очистить~, или установить новый фильтр. Примеры~Спецификация:Фильтр:Очистить~<!-- установка фильтра - выводить в отчет только аксессуары, уплотнения и инструмент --> ~Спецификация:Фильтр:Аксессуары:ИЛИ:Уплотнения:ИЛИ:Инструмент~ АналогииВ генераторе отчетов любой предопределенный цикл можно определить с помощью программируемых циклов SQL, например код:~Спецификация:Фильтр:Аксессуары:ИЛИ:Уплотнения~ ~Спецификация:Начало~ … аналогичен следующему коду с программируемыми циклами SQL: ~SQL1:Установить:SELECT * FROM SpecPAU WHERE~ ~SQL1:Добавить:(pUnic=:Индекс1.AsInteger)and((aTypM=2)or(aTypM=3))~ ~SQL1:Добавить:ORDER BY aNumb~ ~SQL1:Начало~ … Следует точно использовать логические операции: 'И' (логическое умножение 'and') и 'ИЛИ' (логическое сложение 'or'). Ошибка применения фильтра приводит к тому, что ничего в отчет не попадет. Например, следующий фильтр: ~Спецификация:Фильтр:Профили:И:Аксесcуары~ - нечего не выведет. Группы печатиВ фильтре можно указать или исключить необходимую группу печати:~Спецификация:Фильтр:Группа_печати:Название_группы:ДА~ ~Спецификация:Фильтр:Группа_печати:Название_группы:НЕТ~. Группу печати можно указывать совместно со стандартными фильтрами по типам, например вывод аксессуаров по группе 'Сборка_пакетов': ~Спецификация:Фильтр:Аксессуары:И:Группа_печати:Сборка_пакетов:ДА~ Ошибки при указании фильтровВ отчетах часто требуется составить сложный фильтр с указанием нескольких условий по типам мат.ценностей и групп печатей. Неопытный пользователь просто составляет фильтр в мастере кода, методы которого по умолчанию добавляет все условия с префиксом 'ИЛИ', например:~Спецификация:Фильтр:Аксессуары: ИЛИ:Уплотнеиия: ИЛИ:Заполнения: ИЛИ:Группа_печати:Сборка_пакетов:ДА: ИЛИ:Группа_печати:Фурнитура:ДА~ Этот фильтр является ошибочным, поскольку пять условий фильтра (1,2,3 по типам МЦ и 4,5 по группам печати) указаны без логического разграничения скобками, что приведет к выводу произвольных данных SQL процессором. Проблему решает применение в описании фильтра скобок., с помощью которых необходимо разграничить применения SQL условий 'И' и 'ИЛИ'. С учетом этого, правильный фильтр по данному примеру должен иметь следующий вид: ~Спецификация:Фильтр: (:Аксессуары:ИЛИ:Уплотнеиия:ИЛИ:Заполнения:): И: (:Группа_печати:Сборка_пакетов:ДА: ИЛИ: Группа_печати:Фурнитура:ДА:)~ ПОЯСНЕНИЕ Этот фильтр указывает, что нужно вывести материальные ценности только типа: аксессуары, уплотнения, заполнения, и которые определены в группе печати 'Сборка_пакетов' или 'Фурнитура'. Команды управления отчетомК командам управления отчетам относятся команды загрузки кода из других отчетов и файлов, сохранение выходного отчета во внешний файл, принудительного прерывание формирования отчета.Загрузка в исходный код отчета текста другого отчета: ~Отчет:Загрузить_из_отчета:название_отчета~ - команда должна быть единственной в строке. Загрузка в исходный текст отчета текста внешнего текстового файла: ~Отчет:Загрузить_из_файла:название_файла~ - команда должна быть единственной в строке. Команды загрузки применяются для организации пакетной печати, а также для подстановки фирменных бланков. Сохранить выходной сформированный отчет во внешний текстовый файл: ~Отчет:Сохранить_в_файл:название_файла~ - команда должна быть единственной в строке, обычно ставится в конце отчета. Сохранить выходной сформированный отчет во внешний текстовый файл c выводом предварительного диалогового окна с подтверждением имени и пути файла или отмены сохранения: ~Отчет:Сохранить_в_файл_?:название_файла~ - команда должна быть единственной в строке, обычно ставится в конце отчета. Сохранить файл выходного отчета вместе с присоединенными рисунками (в т.ч. эскизами изделий) в отдельном каталоге c выводом предварительного диалогового окна с подтверждением пути или отмены сохранения: ~Отчет:Сохранить_в_каталог_?:Каталог~ - служит для сохранения отчетов с присоединенными файлами изображений и диаграмм в отдельном каталоге. Решает проблему 'пропажи рисунков' при открытия отчета в приложениях офиса. Если каталога не существует, то он автоматически будет создан. Команда фонового (предварительного) показа сформированного отчета: ~Отчет:Показать~ - применяется для пошагового предварительного просмотра при длительном формировании отчета. Команда принудительного прерывания создания отчета и закрытия окна предварительного просмотра: ~Отчет:Закрыть~ отчет будет сформирован только до этой команды. Команда запуска внешнего приложения или приложения, ассоциированного с расширением указанного файла: ~Отчет: Запустить_файл:название_файла~ - возможно указать дополнительные параметры-строки к вызываемому исполняемому файлу, например сформированный текстовый файл для станка с ЧПУ резки профиля. Примеры<!-- загрузить в исходный текст содержание отчета 'Итоговая накладная' -->~Отчет:Загрузить_из_отчета:Итоговая накладная~ <!-- загрузить в исходный текст фирменный бланк, сохраненный в файле --> ~Отчет:Загрузить_из_файла:\\Server?c?\profsegment\ФирмБланк.html~ <!-- сохранить сформированный отчет в текстовом файле --> ~Отчет:Сохранить_в_файл:\\Server?c?\profsegment\Результат.html~ <!-- создать и сохранить отчет с присоединенными файлами рисунков и диаграмм в каталог, именованный номером заказа --> ~Отчет:Сохранить_в_каталог_?:C?\ProfSegment\:Заказ№.AsString~ <!-- запустить AutoCad и открыть в нем файл 'Фасад.dwg' --> ~Отчет:Запустить_файл:C?\AutoCad\Фасад.dwg~ <!-- запустить MicroSoft Excel и открыть в нем файл 'Расчеты.xls' --> ~Отчет:Запустить_файл:C?\Primer\Расчеты.xls~ <!-- запустить MicroSoft Word и открыть в нем файл 'Инструкция.doc' --> ~Отчет:Запустить_файл:C?\Primer\Инструкция.doc~ <!-- запустить файл, сохраненный предыдущей командой --> ~Отчет:Запустить_файл:Сохраненный~ <!-- запустить файл управления оборудованием с передачей команды резки '-r' и сформированного файла данных --> ~Отчет:Запустить_файл:C?\Equp\Optimize.exe -r C:\ Equp\Data.txt~ <!-- Команда принудительного прерывания создания отчета --> ~Отчет:Выход~ отчет будет сформирован только до этой команды. <!-- Команда принудительного прерывания создания отчета с закрытием окна предварительного просмотра --> ~Отчет:Закрыть~ отчет будет сформирован только до этой команды. Команды архирования файловВ отчете можно использовать встроенный в программу ZIP-архиватор, для этого имеются следующий набор команд:<!-- задание имения файла, который будет упакован --> ~Отчет:Файл_Имя:C?\AutoCad\Фасад.dwg~ <!-- задание имени создаваемого файла zip-архива --> ~Отчет:Файл_ZIP:C?\AutoCad\Фасад.zip~ <!-- команда архивирования указанного файла --> ~Отчет:Файл_Архивировать~ <!-- команда архивирования с предварительным запросом имени создаваемого файла zip-архива --> ~Отчет:Файл_Архивировать_?~ ДополнительноПри загрузке в отчет других отчетов и внешних файлов полезно будет применение команды принудительного разрыва страницы:<br style="page-break-before: always"> . |