![]() |
|
Отдел технической поддержки дата обновления 07.08.2024 |
|
Выборка проектов по требуемым отметкамДля выборки проектов, для которых пользователями установлены требуемые метки в генераторе отчетов имеются две команды перечисления номеров отметок.Для предопределенного цикла ~Проект~: ~ПРОЕКТ:ОТМЕТКИ:НомерОтметки1:НомерОтметки2:…~ Для командных циклов ~SQLn~ по таблице ListPRJ: ~SQLn:ОТМЕТКИ.ПРОЕКТЫ:НомерОтметки1:НомерОтметки2:…~ Прямые команды и проверкаВ ПК "ПрофСтрой 4" имеются команды изменения и проверки одной отметки на проект с принудительным сохранением контекста транзации для многопользовательских версий:~ОТМЕТКИ.ПРОЕКТ.УСТАНОВИТЬ:НомерОтметки:ИндексПроекта~ ~ОТМЕТКИ.ПРОЕКТ.СНЯТЬ:НомерОтметки:ИндексПроекта~ ~ОТМЕТКИ.ПРОЕКТ.ПРОВЕРИТЬ:НомерОтметки:ИндексПроекта:Результат~. Если параметр Результат.AsInt = 0, то отметка не установлена. Примеры<!-- для случая настройки в программе следующих отметок проектов -->![]() <!-- вывести в отчет только проекты, отправленные в производство и имеющие отметки 'нестандартные изделия' и 'алюминий раздвижка' --> ~SQL1:УСТАНОВИТЬ:SELECT * FROM ListPRJ WHERE (pWork=1)AND~ ~SQL1:ОТМЕТКИ:2:3~ ~SQL1:НАЧАЛО~ … ~SQL1:КОНЕЦ~ <!-- или то же самое с помощью предопределенного цикла ~Проект~ --> ~ПРОЕКТ:УСЛОВИЕ:(pWork=1)~ ~ПРОЕКТ:ОТМЕТКИ:2:3~ ~ПРОЕКТ:НАЧАЛО~ … ~ПРОЕКТ:КОНЕЦ~ Пояснение В случае предопределенного цикла `Проект` добавлять 'AND' в команде условия не нужно, так как она добавляется автоматически. Вывод определенных отметок по проектуДля вывода определенных отметок по проекту в генераторе отчетов предусмотрена команда формирования целочиленного массива отметок ~SQLn:Отметки.В_Массив~. По этой команде создается массив элементов ~AsInt:Отметки[1]~ ... ~AsInt:Отметки[40]~, имеющих значение 1, если отметка определена для проекта или 0 в противном случае. Номер отметки применяется в качестве индекса этого массива.<!-- вывести описания отметок для проекта--> ~SQL1:УСТАНОВИТЬ:SELECT pReme FROM ListPRJ WHERE pUnic=:Индекс1.AsInt~ ~SQL1:НАЧАЛО~ ~SQL1:ОТМЕТКИ.В_МАССИВ~ <UL> ~SQL2:Установить:SELECT rNumb,rName FROM RemePrj ORDER BY rNumb~ ~SQL2:Начало~ ~SQL2:rNumb:AsInt:НомерОтметки~ ~IF(Отметки[НомерОтметки]>0)THEN~ <LI>~SQL2:rName:AsString~ ~ENDIF~ ~SQL2:Конец~ </UL> ~SQL1:КОНЕЦ~ Альтернатива В примере показать SQL запрос для получения названия отметок непосредственно из таблицы базы данных. Это будет полезно для IT-отделов, осуществляюших самостоятельную разработку документооборота внешним ПО, без использования встроенного генератора отчетов. На самом деле командой ~SQL1:ОТМЕТКИ.В_МАССИВ~ вместе с целочисленными значениями параметров ~AsInt:Отметки[НомерОтметки]~, автоматически создаются строчные значения этих же параметров ~AsString:Отметки[НомерОтметки]~, которые уже содержат названия отметок. Таким образом, приведенный выше пример можно записать другим способом: <!-- вывести описания отметок для проекта--> ~SQL1:УСТАНОВИТЬ:SELECT pReme FROM ListPRJ WHERE pUnic=:Индекс1.AsInt~ ~SQL1:НАЧАЛО~ ~SQL1:ОТМЕТКИ.В_МАССИВ~ ~SQL1:КОНЕЦ~ ~AsInt:НомерОтметки:=0~ <UL> ~LABEL:Цикл~ ~AsInt:НомерОтметки=НомерОтметки+1~ ~IF(Отметки[НомерОтметки]>0)THEN~ <LI>~AsString:Отметки[НомерОтметки]~ ~ENDIF~ ~IF(НомерОтметки<40)THEN GOTO Цикл~ </UL> |