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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.06.2008, 15:09   #1  
Zeratul is offline
Zeratul
Участник
 
75 / 10 (1) +
Регистрация: 29.09.2005
Адрес: Минск
Думаю, что такие таблицы, как InventTrans, InventBatch и InventDim - это стандартные таблицы , которые присутствуют во всех версиях Аксапты.
Помогите, пожалуйста, написать корректно запрос вида: "В текущей компании найти самую первую проводку прихода со статусом Приобретено по коду номенклатуры, конфигурации и номеру партии из строки накладной."

<div class='XPPtop'>X++</div><div class='XPP'>[color=:blue]select[/color] [color=:blue]firstonly[/color] InventTransCreator [color=:blue]where[/color] InventTransCreator.StatusReceipt [color=:blue]==[/color] StatusReceipt::Purchased
&& InventTransCreator.ItemId [color=:blue]==[/color] custInvoiceTrans.ItemId
&& InventTransCreator.ConfigId [color=:blue]==[/color] custInvoiceTrans.ConfigId
&& [color=:blue]?[/color][color=:blue]?[/color][color=:blue]?[/color][color=:blue]?[/color][color=:blue]?[/color][color=:blue]?[/color][color=:blue]?[/color][color=:blue]?[/color]</div>

Проблема в том, что необходимо как-то связать 3 таблицы.
Старый 17.06.2008, 17:25   #2  
Zeratul is offline
Zeratul
Участник
 
75 / 10 (1) +
Регистрация: 29.09.2005
Адрес: Минск
неужели никто не знает?
Старый 17.06.2008, 22:21   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Aliaksei_Berkau Посмотреть сообщение
Думаю, что такие таблицы, как InventTrans, InventBatch и InventDim - это стандартные таблицы , которые присутствуют во всех версиях Аксапты.

Помогите, пожалуйста, написать корректно запрос вида: "В текущей компании найти самую первую проводку прихода со статусом Приобретено по коду номенклатуры, конфигурации и номеру партии из строки накладной."

<div class='XPPtop'>X++</div><div class='XPP'>[color=:blue]select[/color] [color=:blue]firstonly[/color] InventTransCreator [color=:blue]where[/color] InventTransCreator.StatusReceipt [color=:blue]==[/color] StatusReceipt::Purchased
&& InventTransCreator.ItemId [color=:blue]==[/color] custInvoiceTrans.ItemId
&& InventTransCreator.ConfigId [color=:blue]==[/color] custInvoiceTrans.ConfigId
&& [color=:blue]?[/color][color=:blue]?[/color][color=:blue]?[/color][color=:blue]?[/color][color=:blue]?[/color][color=:blue]?[/color][color=:blue]?[/color][color=:blue]?[/color]</div>

Проблема в том, что необходимо как-то связать 3 таблицы.
Это не проблема. Читайте руководство разработчика

Проблема со словом "первый".
Понятно, что первые находятся в самой ранней дате. Но внутри этой даты может быть несколько проводок. Какая из них является первой?

Один из вариантов
<div class='XPPtop'>X++</div><div class='XPP'>
[color=:blue]select[/color] [color=:blue]firstonly[/color] InventTrans
order [color=:blue]by[/color] Datefinansical, InventTransId
[color=:blue]where[/color] InventTrans.StatusReceipt [color=:blue]==[/color] StatusReceipt::Purchased
&& InventTransCreator.ItemId [color=:blue]==[/color] custInvoiceTrans.ItemId
join InventDim
[color=:blue]where[/color] inventdim.inventDimId [color=:blue]==[/color] InventTrans.InventDimId
join Inventdim2
[color=:blue]where[/color] inventdim2.inventDimId [color=:blue]==[/color] custInvoiceTrans.InventDimId
&& inventdim2.ConfigId [color=:blue]==[/color] inventdim.ConfigId
&& inventdim2.inventBatchId [color=:blue]==[/color] inventdim.myBatchId
</div>

Внимание - писал без Аксапты, поэтому могут быть синтаксические ошибки. Но суть понятна.
Обратите внимание, что таблица InventBatch избыточна.
Обратите внимание, что мой запрос написан чертовски неоптимально и требует оптимизации
__________________
полезное на axForum, github, vk, coub.
Старый 18.06.2008, 12:56   #4  
Zeratul is offline
Zeratul
Участник
 
75 / 10 (1) +
Регистрация: 29.09.2005
Адрес: Минск
"Походу" вот такой запросик
Код:
	queryTMP = new Query (QueryStr(QueryGeterRep9));
	queryTMP.datasourceTable(tablenum(InventTrans)).FindRange(fieldnum(InventTrans,StatusReceipt)).Value(strfmt('%1',StatusReceipt::Purchased));
	queryTMP.datasourceTable(tablenum(InventTrans)).FindRange(fieldnum(InventTrans,ItemId)).Value(strfmt('%1',мой_ItemId));
	queryTMP.datasourceTable(tablenum(InventTrans)).FindRange(fieldnum(InventTrans,ConfigId)).Value(strfmt('%1',мой_ConfigId));
	queryTMP.datasourceTable(tablenum(InventDim)).FindRange(fieldnum(InventDim,inventBatchId)).Value(strfmt('%1',мой_inventBatchId()));
	queryRunTMP = new QueryRun(queryTMP);


	while (queryRunTMP.next())
	{
		InventTransCreator = queryRunTMP.get(tableNum(InventTrans));
	}
 


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

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

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