![]() |
|
Отдел технической поддержки дата обновления 07.08.2024 |
|
"Формы интерфейса"НазначениеФормы интерфейса, являющиеся частью функционала модуля мультиформатной поддержки, предназначены для получения в программе собственных диалоговых форм, на которых можно расположить компоненты. Большинство компонентов позволяют выводить в параметры отчетов данные, а некоторые, как например выпадающий список, заполнять данными для выбора из ограниченного списка значений. Примером может служить организация из отчета окна с выбором группы материальных ценностей. Кроме описанных возможностей, созданные окна можно использовать не только для выбора и передачи параметров в отчет для печати, а также для формирования справочных форм в программе, в этом случае необходимо создать отчет с формой вызова 'макрос' - вызов макросов осуществляется специальной кнопкой на панели инструментов главного окна программы. К СВЕДЕНИЮ Перед началом создания условий выбора проектов неоюходжимо всегда помнить три глобальных события по проекту:
Cоздание диалогового окнаГенератор отчетов позволяет создавать собственные диалоговые окна без использования предопределенного окна "Статистика".Для создания формы потребуется список компонентов с набором свойств, которые можно посмотреть и выбрать на странице "Формы статистики" в окне "Мастер кода". Создание диалогового окна осуществляется набором следующим команд: ~Форма.Создать~ ~Форма.Заголовок=Ввод данных~ ~Форма.Ширина=300~ ~Форма.Высота=200~ ~Форма.Вывод=Параметр_целый~ <!-- здесь добавляются компоненты: переключатели, календари, таблица …) --> . . . ~Форма.Показать~ Создается и показывается окно с кнопками "Применить" и "Отменить". Указывается заголовок окна, ширина и высота рабочей области окна, а также название числового параметр отчета, который будет создан при закрытии окна. Этому параметру присваивается `0` при нажатии кнопки "Применить", и `-1` при нажатии кнопки "Отменить". Для каждого макроса/отчета возможно создание нескольких диалоговых окон с использованием следующих компонентов среды Windows:
Примеры<!-- вывод проектов с созданием диалогового окна с вводом периода и установки опции 'Только проекты, отправленные в производство' -->~Форма.Создать~ ~Форма.Заголовок=Введите данные для отчета~ ~Форма.Ширина=280~ ~Форма.Высота=100~ ~Форма.Вывод=КнопкаПрименить~ ~Форма.Надпись.Создать~ ~Форма.Надпись.Текст=Начало периода~ ~Форма.Надпись.Сверху=12~ ~Форма.Надпись.Слева=10~ ~Форма.Надпись.Ширина=90~ ~Форма.Календарь.Создать~ ~Форма.Календарь.Сверху=8~ ~Форма.Календарь.Слева=100~ ~Форма.Календарь.Ширина=90~ ~Форма.Календарь.Вывод=Дата1~ ~Форма.Надпись.Создать~ ~Форма.Надпись.Текст=Конец периода~ ~Форма.Надпись.Сверху=42~ ~Форма.Надпись.Слева=10~ ~Форма.Надпись.Ширина=90~ ~Форма.Календарь.Создать~ ~Форма.Календарь.Сверху=38~ ~Форма.Календарь.Слева=100~ ~Форма.Календарь.Ширина=90~ ~Форма.Календарь.Вывод=Дата2~ ~Форма.Флаг.Создать~ ~Форма.Флаг.Текст=Только проекты, отправленные в производство~ ~Форма.Флаг.Сверху=80~ ~Форма.Флаг.Слева=10~ ~Форма.Флаг.Ширина=300~ ~Форма.Флаг.Включить=Да~ ~Форма.Флаг.Вывод=Флаг_В_производство~ ~Форма.Показать~ При запуске макроса (просмотре отчета) программа выведет следующее окно:
<!-- при нажатии кнопки "Применить" создается числовой параметр 'КнопкаПрименить' со значением = `0` --> ~IF:КнопкаПрименить<0:THEN~ ~Отчет:Закрыть~ <!-- принудительное завершение создания отчета и закрытие окна прежварительного просмотра --> ~ENDIF~ <!-- отображение выбранного периода в заголовка отчета --> <P style="font-size:16px; text-align:center; font-family:Arial; color:#0;"> Период с ~AsDate:Дата1~ по ~AsDate:Дата2~ </P> <!-- составляем запрос по проектам для программируемого цикла SQL1 --> ~SQL1:Установить:SELECT pUnic FROM ListPrj WHERE~ <!-- добавляем условие по периоду из параметров, переданных из диалогового окна --> ~SQL1:Добавить:(pDate>=:Дата1.AsDate:)AND(pDate-1<:Дата2.AsDate:)~ <!-- если был установлен флаг 'Только проекты, отправленные в производство', то добавляем условие отправки проекта в производство --> ~IF:Флаг_В_производство>0:THEN~ ~SQL1:Добавить:AND(pWork=1)~ ~ENDIF~ <!-- автоматическое выделение нужных проектов --> ~SQL1:Выбор.Проекты~ <TABLE style="border-collapse: collapse" border=1 bordercolor=#0> <TR><!-- заголовок таблицы --> <TD align=center bgColor=#CCCCCC>Заказ №</TD> <TD align=center bgColor=#CCCCCC>Регистрация</TD> <TD align=center bgColor=#CCCCCC>Адрес</TD> <TD align=center bgColor=#CCCCCC>Контрагент</TD> <TD align=center bgColor=#CCCCCC>Телефон</TD> </TR> ~Проект:Начало~ <TR> <TD align=center>~Проект:Номер_заказа~</TD> <TD align=center>~Проект:Дата_регистрации~</TD> <TD align=left>~Проект:Адрес~</TD> <TD align=left>~Проект:Контрагент~</TD> <TD align=left>~Проект:Контрагент.Телефон~</TD> </TR> ~Проект:Конец~ </TABLE> При условии выбора пользователем начала и конца периода (месяц март), выходной отчет будет иметь примерный вид: Период c 1.03.2009 по 31.03.2009
Пояснение В условии выборки указание периода для даты конца периода "Дата2" указан "+1" день: (pDate>=Дата1)AND(pDate-1<Дата2). Это связано с тем, что поля дат представлены на уровне базы данных вещественными значениями (целая часть - это дни, а дробная часть - часы, минуты, секунды), и дата регистрации проекта содержит добавку времени. Так как параметр "Дата2" подставляется как целое значение в текущем диалекте базы данных, то нужно учесть добавку времени и проверку необходимо указать до начала следующего дня. <!-- пример создания компонента-таблицы отображения данных запроса SQL для отображения длины поставки целых хлыстов профилей --> ~Форма.Создать~ ~Форма.Заголовок=Ввод данных~ ~Форма.Ширина=327~ ~Форма.Высота=128~ ~Форма.Вывод=КнопкаПрименить~ ~Форма.Таблица.Создать~ ~Форма.Таблица.Ширина=327~ ~Форма.Таблица.Высота=128~ ~Форма.Таблица.Сверху=0~ ~Форма.Таблица.Слева=0~ ~Форма.Таблица.Столбец.Добавить~ ~Форма.Таблица.Столбец.Поле=aNumb~ ~Форма.Таблица.Столбец.Ширина=60~ ~Форма.Таблица.Столбец.Выровнять=Слева~ ~Форма.Таблица.Столбец.Заголовок.Текст=Артикул~ ~Форма.Таблица.Столбец.Заголовок.Выровнять=Центр~ ~Форма.Таблица.Столбец.Добавить~ ~Форма.Таблица.Столбец.Поле=aName~ ~Форма.Таблица.Столбец.Ширина=150~ ~Форма.Таблица.Столбец.Выровнять=Слева~ ~Форма.Таблица.Столбец.Заголовок.Текст=Название~ ~Форма.Таблица.Столбец.Заголовок.Выровнять=Центр~ ~Форма.Таблица.Столбец.Добавить~ ~Форма.Таблица.Столбец.Поле=aLeng~ ~Форма.Таблица.Столбец.Ширина=80~ ~Форма.Таблица.Столбец.Выровнять=Центр~ ~Форма.Таблица.Столбец.Заголовок.Текст=Поставка, мм~ ~Форма.Таблица.Столбец.Заголовок.Выровнять=Центр~ ~Форма.Таблица.SQL.Установить=SELECT aNumb,aName,aLeng FROM Artikls~ ~Форма.Таблица.SQL.Добавить=WHERE aTypM=1 ORDER BY aNumb~ ~Форма.Таблица.SQL.Открыть~ <!-- компонент-таблица может создать параметр, именованный только как поле в запросе ! --> ~Форма.Таблица.Вывод=aNumb.AsString~ ~Форма.Показать~ При просмотре отчета программа выведет следующее окно:
Передача выборкиВ генераторе отчетов существует специальная команда, позволяющая сформировать выборку нескольких значений по указанному полю для подстановки этой выборки в другой SQL-цикл: ~Форма.Таблица.Выборка=Поле.AsInt~ или ~Форма.Таблица.Выборка=Поле.AsString~.<!-- пример формирования выборки проектов с подстановкой в другой SQL-цикл--> ~Форма.Создать~ ~Форма.Заголовок=Выбор проектов~ ~Форма.Ширина=327~ ~Форма.Высота=128~ ~Форма.Вывод=КнопкаПрименить~ ~Форма.Таблица.Создать~ ~Форма.Таблица.Ширина=327~ ~Форма.Таблица.Высота=128~ ~Форма.Таблица.Сверху=0~ ~Форма.Таблица.Слева=0~ ~Форма.Таблица.Столбец.Добавить~ ~Форма.Таблица.Столбец.Поле=zNumb~ ~Форма.Таблица.Столбец.Ширина=60~ ~Форма.Таблица.Столбец.Выровнять=Слева~ ~Форма.Таблица.Столбец.Заголовок.Текст=Заказ~ ~Форма.Таблица.Столбец.Заголовок.Выровнять=Центр~ ~Форма.Таблица.Столбец.Добавить~ ~Форма.Таблица.Столбец.Поле=pDate~ ~Форма.Таблица.Столбец.Ширина=80~ ~Форма.Таблица.Столбец.Выровнять=Центр~ ~Форма.Таблица.Столбец.Заголовок.Текст=Регистрация~ ~Форма.Таблица.Столбец.Заголовок.Выровнять=Центр~ ~Форма.Таблица.Столбец.Добавить~ ~Форма.Таблица.Столбец.Поле=kName~ ~Форма.Таблица.Столбец.Ширина=150~ ~Форма.Таблица.Столбец.Выровнять=Слева~ ~Форма.Таблица.Столбец.Заголовок.Текст=Заказчик~ ~Форма.Таблица.Столбец.Заголовок.Выровнять=Центр~ ~Форма.Таблица.ВЫБОРКА=pUnic.AsInt~ ~Форма.Таблица.SQL.Установить=SELECT zNumb,pDate,kName,pUnic FROM ListPrj~ ~Форма.Таблица.SQL.Добавить=WHERE pWork=1 ORDER BY zNumb~ ~Форма.Таблица.SQL.Открыть~ ~Форма.Показать~ При просмотре отчета программа выведет следующее окно:
((pUnic=5)OR(pUnic=7)OR(pUnic=12)). <!-- передаем выборку проектов в SQL-цикл по спецификации проектов в качестве условия запроса --> ~SQL1:Установить:SELECT aNumb,clNum,aQtyA,oNumb FROM SpecPAU WHERE~ ~SQL1:Добавить:ВЫБОР.ФОРМА.ТАБЛИЦА~ ~SQL1:Начало~ ... ~SQL1:Конец~ |