Як обдурити NAV (підмінюємо джерело даних у формі), Navision – технології як мистецтво
Нехай ми маємо певну функцію, яка повертає тимчасову таблицю (наприклад, таблиця Customer) з результатом. Ми хочемо відобразити її у формі. Найпростіший спосіб це зробити знають усі:
Але є й інший спосіб зробити це - підмінити у формі тригери OnNextRecord, OnFindRecord таким чином:
OnFindRecord = VAR blnFound : Boolean ; BEGIN recTmpCustomer : = Rec; recTmpCustomer. COPY (Rec); blnFound: = recTmpCustomer. FIND (Which); IF blnFound THEN Rec: = recTmpCustomer; EXIT (blnFound); END;
OnNextRecord = VAR intResultStep : Integer ; BEGIN recTmpCustomer : = Rec; intResultStep : = recTmpCustomer . NEXT (Steps); IF intResultStep < ; > 0 THEN Rec: = recTmpCustomer; EXIT (intResultStep); END;
Цей варіант повністю працездатний, за одним винятком – не працюють марки. Тобто. звичайно, чорні крапки ставляться, але до рекорду recTmpCustomer це не має жодного відношення. Як змусити працювати марки в цьому випадку?
Достатньо лише перевизначити поєднання клавіш Ctrl+F1, і викликати за його натисканням свою власну функцію, яка і ставитиме марки в тимчасовій таблиці. Функція така:
В області Navision – з 2003 року. Професійні інтереси: NAV, MS SQL, .NET, BPMN, IT-менеджмент. Предметна галузь: логістика, фінанси, склади, 3PL.