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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.12.2009, 12:26   #1  
skazochnik is offline
skazochnik
Участник
 
35 / 10 (1) +
Регистрация: 08.10.2008
Запрос
Доброе время суток.
Помогите создать запрос. так что бы пробежаться по таблице inventSum, где надо определить наличие ТМЦ по определенному складу(аналитике)
Старый 01.12.2009, 12:49   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
А что конкретно вызывает трудности? Отсутствие HAVING?
Старый 01.12.2009, 12:49   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Класс InventOnHand. У него куча методов для инициализации на основе ItemId + Dimensions.
Он возвращает кол=во в наличии на текущую дату.
Старый 01.12.2009, 13:09   #4  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
наличие на текущий момент, или на дату?
если на текущий момент то воспользуйтесь советом от kashperuk
если на дату то используйте класс InventSumDatePhysicalDim и статический метод в нем onHandQty.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 02.12.2009, 09:13   #5  
skazochnik is offline
skazochnik
Участник
 
35 / 10 (1) +
Регистрация: 08.10.2008
Запрос победил.
Кому интересно
ttsbegin;
while select inventDim
where inventDim.InventLocationId == 'SKLAD1'
{
while select inventSum
where inventSum.InventDimId == inventDim.inventDimId
{
inventJournalTrans.JournalId = inventJournalTable.JournalId;
inventJournalTrans.JournalType = InventJournalType::Transfer;
inventJournalTrans.TransDate = systemdateget();
info(inventSum.ItemId);
inventJournalTrans.ItemId = inventSum.ItemId;
inventJournalTrans.inventDimId = inventSum.InventDimId;
inventJournalTrans.ToInventDimId = inventSum.InventDimId;
inventJournalTrans.Qty = -(inventSum.PhysicalInvent);
inventJournalTrans.CostPrice = inventSum.PostedValue;
inventJournalTrans.lineNum = InventJournalTrans::lastLineNum(inventJournalTrans.journalId) + 1;
inventJournalTrans.insert(NoYes::Yes);

}
//inventJournalTrans.insert(NoYes::Yes);
}
ttscommit;

едиственное Но
Как можно обойти такую фишку
"Складская аналитика 'Из' и 'На' должны отличаться"
тоесть у меня ИЗсклада = склад1 и НА склад = склад1,
Старый 02.12.2009, 09:34   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Ну вы и вопросы формулируете.

Цитата:
Сообщение от skazochnik Посмотреть сообщение
едиственное Но
Как можно обойти такую фишку
"Складская аналитика 'Из' и 'На' должны отличаться"
тоесть у меня ИЗсклада = склад1 и НА склад = склад1,

Если все остальные складские аналитики не нужны (нужен только склад), то
X++:
ToInventDimId = InventDim::findOrCreateInventLocationId("НА склад").InventDimId;
А если нужно сохранить другие аналитики, то вот так
X++:
InventDimTo = InventDim::find(inventSum.InventDimId);
InventDimTo.InventLocationId = "НА склад";
// здесь также можно поменять ещё какието аналитики
ToInventDimId = InventDim::findOrCreate(InventDimTo).InventDimId;

Последний раз редактировалось S.Kuskov; 02.12.2009 в 09:42. Причина: дополнения
Старый 02.12.2009, 09:39   #7  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Цитата:
Сообщение от skazochnik Посмотреть сообщение
Запрос победил.
Кому интересно
...
Да Вы, батенька, тролль.
Давайте теперь устроим соревнование, кто больше замечаний напишет к приведенному коду
За это сообщение автора поблагодарили: _scorp_ (1).
Старый 02.12.2009, 09:45   #8  
skazochnik is offline
skazochnik
Участник
 
35 / 10 (1) +
Регистрация: 08.10.2008
Цитата:
Сообщение от Wamr Посмотреть сообщение
Да Вы, батенька, тролль.
Давайте теперь устроим соревнование, кто больше замечаний напишет к приведенному коду
Почти Троль
Пишите очень даже интересно
Старый 02.12.2009, 10:22   #9  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
К Вашему сведению, в inventSum содержится много строк, в которых все кол-ва == 0

Более того, Вы уверены, что нужно программировать?
Похоже, что вам нужно просто создать новый журнал инвентаризации и воспользоваться функцией создания "В наличии":

Нажмите на изображение для увеличения
Название: Setup.png
Просмотров: 388
Размер:	68.0 Кб
ID:	5412

В результате получите журнал с созданными строками след. вида. Останется только проставить кол-во желаемое и поменять склад:

Нажмите на изображение для увеличения
Название: Result.png
Просмотров: 421
Размер:	54.0 Кб
ID:	5413

Последний раз редактировалось kashperuk; 02.12.2009 в 10:25.
За это сообщение автора поблагодарили: mazzy (2).
Старый 02.12.2009, 10:22   #10  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,732 / 406 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от skazochnik Посмотреть сообщение
Запрос победил.
Кому интересно
ttsbegin;
while select inventDim
where inventDim.InventLocationId == 'SKLAD1'
{
while select inventSum
where inventSum.InventDimId == inventDim.inventDimId
{
inventJournalTrans.JournalId = inventJournalTable.JournalId;
inventJournalTrans.JournalType = InventJournalType::Transfer;
inventJournalTrans.TransDate = systemdateget();
info(inventSum.ItemId);
inventJournalTrans.ItemId = inventSum.ItemId;
inventJournalTrans.inventDimId = inventSum.InventDimId;
inventJournalTrans.ToInventDimId = inventSum.InventDimId;
inventJournalTrans.Qty = -(inventSum.PhysicalInvent);
inventJournalTrans.CostPrice = inventSum.PostedValue;
inventJournalTrans.lineNum = InventJournalTrans::lastLineNum(inventJournalTrans.journalId) + 1;
inventJournalTrans.insert(NoYes::Yes);

}
//inventJournalTrans.insert(NoYes::Yes);
}
ttscommit;

едиственное Но
Как можно обойти такую фишку
"Складская аналитика 'Из' и 'На' должны отличаться"
тоесть у меня ИЗсклада = склад1 и НА склад = склад1,
по коду:ни в коем случае так не делайте!!!

в inventsum нет ни ИЗ ни НА, там содержатся остатки товара в разрезе аналитик.

PS Читайте документацию
За это сообщение автора поблагодарили: mazzy (2).
Старый 02.12.2009, 11:05   #11  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Как программно создать журнал Переноса - это же ведь ваша тема? Вам же дали пример кода для создания журнала.
Старый 02.12.2009, 12:41   #12  
skazochnik is offline
skazochnik
Участник
 
35 / 10 (1) +
Регистрация: 08.10.2008
Цитата:
Сообщение от kashperuk Посмотреть сообщение
К Вашему сведению, в inventSum содержится много строк, в которых все кол-ва == 0

Вложение 5413
Что это значит?
ТО что при разноске она бедет ругаться на данные Нули?
Старый 02.12.2009, 12:53   #13  
Михаил Андреев is offline
Михаил Андреев
Участник
Компания АМАНД
Лучший по профессии 2009
 
1,296 / 239 (10) ++++++
Регистрация: 09.11.2001
Адрес: Химки, Московская область
Цитата:
Сообщение от skazochnik Посмотреть сообщение
Что это значит?
ТО что при разноске она бедет ругаться на данные Нули?
Вы прикиньте время выполнения Вашего кода через пару-тройку лет. Когда в базе будет уже полно ГТД, если добавятся партии, или, того хуже, серийные номера, то будьте уверены, Вам икаться будет
__________________
Михаил Андреев
https://www.amand.ru
Старый 02.12.2009, 13:02   #14  
skazochnik is offline
skazochnik
Участник
 
35 / 10 (1) +
Регистрация: 08.10.2008
Цитата:
Сообщение от Михаил Андреев Посмотреть сообщение
Вы прикиньте время выполнения Вашего кода через пару-тройку лет. Когда в базе будет уже полно ГТД, если добавятся партии, или, того хуже, серийные номера, то будьте уверены, Вам икаться будет
Этот код только один раз выстрилет.
Старый 02.12.2009, 13:07   #15  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от skazochnik Посмотреть сообщение
Что это значит?
ТО что при разноске она бедет ругаться на данные Нули?
Это значит что вы будете создавать строки для множества строк, в которых количество = 0 по той или иной причине. Что есть бессмысленно.
Старый 02.12.2009, 13:12   #16  
skazochnik is offline
skazochnik
Участник
 
35 / 10 (1) +
Регистрация: 08.10.2008
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Это значит что вы будете создавать строки для множества строк, в которых количество = 0 по той или иной причине. Что есть бессмысленно.
Подробнее.. Можно?
Старый 02.12.2009, 13:48   #17  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от skazochnik Посмотреть сообщение
Подробнее.. Можно?
будут создаваться строки для всех номенклатур, даже для тех у кого остаток на данный момент равен 0. в итоге в журнале у вас будет куча строк с количеством равным нулю.
Это как минимум странно, но может быть Вам это нужно.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 02.12.2009, 14:03   #18  
skazochnik is offline
skazochnik
Участник
 
35 / 10 (1) +
Регистрация: 08.10.2008
Цитата:
Сообщение от lev Посмотреть сообщение
будут создаваться строки для всех номенклатур, даже для тех у кого остаток на данный момент равен 0. в итоге в журнале у вас будет куча строк с количеством равным нулю.
Это как минимум странно, но может быть Вам это нужно.
Ну на это есть if (inventSum.PostedQty!=0)
А вот как быть с этим? ""Недостаточные складские проводки со статусами 'В заказе', 'Зарезервировано в заказанных', 'Физ. зарезервировано' и 'Скомплектовано'.""
Старый 02.12.2009, 14:54   #19  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от skazochnik Посмотреть сообщение
Ну на это есть if (inventSum.PostedQty!=0)
...
В приведенном Вами коде такого if-а нет.
и уж лучше это условие добавить в селект..
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 02.12.2009, 15:02   #20  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от skazochnik Посмотреть сообщение
А вот как быть с этим? ""Недостаточные складские проводки со статусами 'В заказе', 'Зарезервировано в заказанных', 'Физ. зарезервировано' и 'Скомплектовано'.""
А какой способ резервирования указан на шапке журнала (поле InventJournalTable.Reservation)? Попробуйте поставить "Вручную"
Теги
inventdim, inventsum, остатки, остатки на дату, складская аналитика, складской журнал

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
передача параметров в запрос while select tolstjak DAX: Программирование 13 15.02.2009 19:39
Как собрать запрос? moid DAX: Программирование 11 02.07.2007 12:07
Почему join запрос разбивается на подзапросы!? 3oppo DAX: Программирование 59 28.06.2007 11:52
Долго отрабатывает запрос по таблице InventItemLocation AlexeyBP DAX: Администрирование 1 30.05.2007 17:33
Не работает запрос на нескольких компаниях Bega DAX: Программирование 3 16.09.2005 10:21

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

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

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