AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.11.2005, 13:24   #1  
vey is offline
vey
Участник
 
60 / 12 (1) ++
Регистрация: 15.03.2005
Адрес: Киев
Проверка на передачу пустого параметра в макрос
Добрый день. Необходимо в зависимости от того, нужно или нет фильтровать проводки по складу, изменять запрос по проводкам. Возьмем самый простейший пример:


static void Job1(Args _args)
{
#macrolib.InventABC
InventTrans inventTrans;
InventDim inventDim;
InventLocationId location = 'Ск2';
;
while select inventTrans
{
print inventTrans.ItemId;
}
pause;
}


Решила реализовать данную задачу с использованием макроса, который будет подставлять в запрос либо Join с таблицей InventDim, либо ничего. Написанный макрос выглядит следующим образом:

/* %1 InventTrans, CustInvoiceTrans...*/
/* %2 InventLocationId */
#localmacro.InventABCDim
#ifnot.empty(%2)
join tableId from InventDim
index hint DimIdIdx
where (InventDim.InventDimId == %1.InventDimId) &&
(InventDim.InventLocationID == %2)
#endif
#endmacro


Но он не в полной мере меня устраивает. Если вызвать макрос с обеими заполненными параметрами, то печатаются все проводки по данному складу, все ок. Если второй параметр не указывать - печатает все проводки. Если в качестве второго параметра задать пустую строку, то, естественно, выводятся все проводки, у которых склад не задан. Мне же в этом случае необходимо, как и в случае с незаданным параметром "%2", выводить все проводки.
Есть ли в макросах, наряду с проверкой #ifnot.empty(%2) возможность проверки, что параметр передан, но он пустой (в случае строки) либо нулевой (в случае числа)? Не хочется в коде плодить лишние условия, ветки, дублировать запрос и т.д. Хотелось бы реализовать все красиво и одной строкой вида:

while select inventTrans #InventABCDim(inventTrans, location)

только не получается как-то сделать обработку условия, что переменная location - пустая (склад не указан). Возможно, решение совсем простое, только я его не вижу... Может, кто-то знает, как это реализовать?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Значение по умолчанию параметра типа EDT c array elements либо просто массива HorrR DAX: Программирование 16 20.02.2008 19:18
Выполнить макрос Excel из x++ vasiliy DAX: Программирование 2 24.11.2006 17:57
Проверка целостности coja DAX: Администрирование 6 06.09.2006 13:14
Проверка цикличности в спецификации vey DAX: Функционал 2 24.03.2005 11:03
Передача параметра из формы в отчет liza DAX: Программирование 1 29.09.2003 14:04

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:49.