Функции
Пример со Забаваction dlStringReplace
На извештајот '10А - Извештај за Материјални Движења - Детализиран' кој е во програмското мени 'Стоки | Материјално Движење' додадете "Текст" објект на бендот именуван 'Детал' и напишете израз кој враќа серијални броеви кои припаѓаат на избраната позиција и избраната фактура. Функцијата SQLExp враќа сите записи, секој во своја ред, но ние сакаме да ги прикажеме серијалните броеви во една ред, одделени со запирки.
[dlStringReplace(SQLExp('SELECT acSerialNo, FROM tHE_MoveItemSerialNo WHERE acKey = ''' + <qReportIzpis."acKey"> + ''' AND acIdent = ''' + <qReportIzpis."acIdent"> + ''' GROUP BY acSerialNo UNION ALL SELECT acSerialNo FROM tHE_OrderItemSerialNo WHERE acKey = ''' + <qReportIzpis."acKey"> + ''' AND acIdent = ''' + <qReportIzpis."acIdent"> + ''' GROUP BY acSerialNo ORDER BY acSerialNo'), #13#10, ', ', 'rfReplaceAll', '')]
Пример со Датумски Полја
На клонирањето на извештајот '241 - Фактура' кој е во програмското мени 'Стоки | Издавање | Документ (нпр. 3000 - Продажба)' додадете го салдото на примателот на фактурата на сметката 2200 на денот на фактурата. Важно е датумот да биде форматиран во облик yyyymmdd.
[SQLExp('SELECT SUM(anValDebit-anValCredit) from tHE_AcctTransItem where acAcct = 2200 and acSubject=''' + <qReportIzpisD."acReceiver"> + ''' and adDateDoc <= ''' + FormatDateTime('yyyymmdd',<qReportIzpisD."adDateInv">) + '''')]
Пример со Број
Во овој случај користиме извештајот '156 - Извештај за Материјални Движења - Резиме по Артикли' кој е во програмското мени 'Стоки | Материјални Движења' кој покажува количина во алтернативна мерна единица.
Пошто немаме фактор за конверзија на количината во примарната мерна единица (U/M) во U/M 2, мораме да ги добиеме од регистарот на Мерни Единици користејќи ја функцијата SQLExp.
Ова го правиме со следниот израз:
[SQLExp('SELECT anUMToUM2 FROM tHE_SetItem WHERE acIdent = ' + dlQuotedStr(<qReportIzpis."acIdent">)+'')]
Горниот израз враќа број како текст. Сега сакаме да ја отпечатиме количината отпечатена во U/M2, па мораме да ја конвертираме вредноста добиена со dlStrToFloatDef функцијата во број. Потоа ја делиме сумата во EM со факторот добиен, и користејќи ја dlDiv функцијата наместо да ја делиме од нула, а не со обичната делба. На крај, добиваме:
[dlDiv(<qReportIzpis."anBegState">, dlStrToFloatDef(SQLExp('SELECT anUMToUM2 FROM tHE_SetItem WHERE acIdent = ' + dlQuotedStr(<qReportIzpis."acIdent">) +''), 1))]
Пример со Читање Податоци од PANTHEON Прозорец
Ќе направиме следниот пример кој може да се направи на клонирање на извештајот '16Б - Издадени Фактури - по Добавувачи и Артикли', кој е во програмското мени 'Стоки | Издадени Извештаи за Фактури | Издадени Фактури/Маржа на Профит'. Ако е избрано складиште во прозорецот, изразот ја прикажува целата залиха на артиклот, инаку само ја печати залихата во избраното складиште.
Прозорецот во програмата од кој започнува извештајот се вика 'PrometObracunIzdRac', влезното поле во кое го селектираме складиштето и има име 'fWarehouse'. Терминот кој враќа текст во овој објект е веќе познат:
[GetFormValue('PrometObracunIzdRac.fWarehouse')]
Прво проверуваме дали е избрано складиште. Ако не, првиот SQLExp израз кој враќа целата залиха на избраниот артикл во сите складишта, инаку вториот враќа залиха на артиклот само во избраното складиште.
[IIF (GetFormValue('PrometObracunIzdRac.fWarehouse') = '',
SQLExp('select SUM (anStock) from tHE_Stock where acIdent = ' +
dlQuotedStr(<qReportIzpis."acIdent">) + ''),
SQLExp('select anStock from tHE_Stock where acIdent = ' +
dlQuotedStr(<qReportIzpis."acIdent">) + ' and acWarehouse = ''' +
GetFormValue('PrometObracunIzdRac.fSkladisce') + ''''))]
Пример со Комплексен Израз за Избор
Специјално третирање заслужува изразот на извештајот '3АР - Запис за Вработени' кој прикажува дали работникот е инвалид или не. Тој е во програмското мени 'Персонал | Досиеја на Вработени'. Потоа кликнете на иконата 'Печати'.
Оваа информација не е директно напишана во податочниот сет, но содржи категорија на инвалидност во полето "acDisabilityCode" во табелата "tHR_PrsnHealth". Пошто категоријата на инвалидност на поединечен работник може да се промени, мораме да ја добиеме онаа која последно е внесена. Датумот на промената на инвалидноста е складиран во полето "adCreationDate" во истата табела. Следниот термин ви дава последниот датум кога категоријата на инвалидност за избраниот работник се променила.
[SQLExp('select max(adCreatonDate) from tHR_PrsnHealth where acWorker = ''' + <qryDelavec."acWorker"> + '''')]
Потоа, со терминот подолу, ја добиваме категоријата на инвалидност на работникот
[SQLExp('select acDisabilityCode from tHR_PrsnHealth where acWorker = ''' + <qryDelavec."acWorker"> + ''' and adCreatonDate = (select max(adCreatonDate) from tHR_PrsnHealth where acWorker = ''' + <qryDelavec."acWorker"> + ''')')]
Ако во горниот термин го замениме полето "acDisabilityCode" со 'ДА', изразот враќа 'ДА' ако работникот е инвалид, инаку враќа празна низа. Пошто, во случај кога работникот не е инвалид, изразот враќа 'НЕ', му даваме терминот на условната реченица IIF и на крај добиваме
[IIF(SQLExp('select ''YES'' from tHR_PrsnHealth where acWorker = ''' + <qryDelavec."acWorker"> + ''' and adCreatonDate = (select max(adCreatonDate) from tHR_PrsnHealth where acWorker = ''' + <qryDelavec."acWorker"> + ''' and acDisabilityCode > ''0'')') = 'YES','ДА','НЕ')]
Сортирање и Групирање по Поле кое не е во Податочниот Сет
Многу необична и корисна употреба на функцијата SQLExp е за сортирање и групирање по поле кое не е во податочниот сет.
Како основа, ќе земеме извештај '164 - Извештај за Издадени Фактури - Детализиран' кој е во програмското мени 'Стоки | Издадени Извештаи за Фактури | Издадени Фактури/Маржа на Профит'. Прво создаваме клон на кој ќе работиме. Податоците ќе бидат групирани по издавачот на фактурата и сортирани по издавачот и бројот на документот.
Поставуваме својство "Услов" на "Групен Заглавие" на;
SQLExp('select G.acIssuer from tHE_Move G where G.acKey = ''' + <qReportIzpis."acKey"> + '''')
Потоа заменуваме описот кој ја опишува информацијата која ја групираме, и за самите податоци. Внесуваме истото како погоре, но да го ставиме во квадратни загради (како што е прикажано на сликата). За да ја промениме сортирањето променете го полето 'Сортирај по' во регистарот на извештаи:
(select G.acIssuer from tHE_Move G where G.acKey = P.acKey), G.acKey

