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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.05.2009, 16:34   #1  
chanchala is offline
chanchala
Участник
Аватар для chanchala
 
110 / 10 (1) +
Регистрация: 14.05.2008
Адрес: СПб
? Как найти цену?
Уважаемы послетители форума!
Подскажите, пожалуйста, как найти цену из таблицы PriceDiscTable если известны только ItemId, InventDimId и дата? Хотелось бы не запросом, а с помощью функции.
__________________
AX 3.0, Build #9.3
Старый 05.05.2009, 16:42   #2  
online
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
20,471 / 3148 (145) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от chanchala Посмотреть сообщение
Уважаемы послетители форума!
Подскажите, пожалуйста, как найти цену из таблицы PriceDiscTable если известны только ItemId, InventDimId и дата? Хотелось бы не запросом, а с помощью функции.
по указанным вами параметрам - никак.
для определения цены нужно еще по крайней мере Валюту.

А также хорошо было бы получить информацию о количестве, клиенте/поставщике, договоре и о других параметрах.

См. класс PriceDisc
__________________
Facebook, mazzy.priot, mazzy.music, coub.
Старый 05.05.2009, 16:46   #3  
aidsua is offline
aidsua
AX*****
Аватар для aidsua
 
105 / 40 (2) +++
Регистрация: 28.09.2005
Адрес: 2:463/Kyiv
Цитата:
Сообщение от mazzy Посмотреть сообщение
См. класс PriceDisc
.. и класс PriceDisc_Price
__________________
О, как беден, как груб наш русский язык! [c] А.С.Пушкин
Старый 05.05.2009, 16:46   #4  
chanchala is offline
chanchala
Участник
Аватар для chanchala
 
110 / 10 (1) +
Регистрация: 14.05.2008
Адрес: СПб
Валюта - рубли. Информации о клиенте\поставщике нет (оцениваю стоимотсть готовой продукции, поступившей на склад). С этими данными возможно?
__________________
AX 3.0, Build #9.3
Старый 05.05.2009, 16:50   #5  
chanchala is offline
chanchala
Участник
Аватар для chanchala
 
110 / 10 (1) +
Регистрация: 14.05.2008
Адрес: СПб
Цитата:
Сообщение от mazzy Посмотреть сообщение
См. класс PriceDisc
Посмотрела. С ним не получилось, т.к. нет информации о клиенте/поставщике. С классом PriceDisc_Price получилось, но нет полной уверенности в правильности. Может быть, кто-нибудь поможет ссылкой на описание класса PriceDisc_Price?
__________________
AX 3.0, Build #9.3
Старый 05.05.2009, 16:59   #6  
aidsua is offline
aidsua
AX*****
Аватар для aidsua
 
105 / 40 (2) +++
Регистрация: 28.09.2005
Адрес: 2:463/Kyiv
Цитата:
Сообщение от chanchala Посмотреть сообщение
Посмотрела. С ним не получилось, т.к. нет информации о клиенте/поставщике. С классом PriceDisc_Price получилось, но нет полной уверенности в правильности. Может быть, кто-нибудь поможет ссылкой на описание класса PriceDisc_Price?
Запрос к таблице ценовых соглашений
__________________
О, как беден, как груб наш русский язык! [c] А.С.Пушкин
За это сообщение автора поблагодарили: chanchala (1).
Старый 05.05.2009, 18:05   #7  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,722 / 487 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
вот пример поиска цены с помощью классе PriceDisc, может подойдет:
X++:
static void testFindPrice(Args _args)
{
    InventTable         inventTable;
    InventTableModule   inventTableModule;
    Container           conPrice;
    InventDimId         inventDimId;
    TransDate           transDate = systemDateGet();
    ItemId                 itemId;
    ;

    select firstonly inventTable
        where inventTable.ItemId    == itemId;
    inventTableModule = inventTable.inventTableModuleSales();

    conPrice    = PriceDisc::findItemPriceAgreement(ModuleInventPurchSales::Sales, // модуль
                                                    inventTable.ItemId,             // номенклатура
                                                    InventDim::find(inventDimId),   // аналитики
                                                    inventTableModule.UnitId,       // ед изм
                                                    transDate,                      // дата
                                                    inventTableModule.PriceUnit,    // кол-во (цена)
                                                    "",                             // код клиента
                                                    CompanyInfo::find().CurrencyCode,// валюта из компании
                                                    "");                            // ценовая группа

    info(strFmt('Цена - %1', conPeek(conPrice, 1))); // первым номеро в контейнере это цена номенклатуры
}
как можно видеть не обязательно указывать клиента, ценовую группу и т.д. тогда будет выполняться поиск в разрезе номенклатуры, с типом связи контрагентов "Все".
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
За это сообщение автора поблагодарили: АртемМелихов (1).
Старый 18.08.2015, 10:25   #8  
АртемМелихов is offline
АртемМелихов
Участник
Аватар для АртемМелихов
 
119 / 10 (1) +
Регистрация: 18.12.2013
Адрес: Samara
Добрый день, решил апнуть тему, потому что не понятно как найти цену и скиду используя PriceDisc_Price и PriceDisc_LineDisc, имея только itemId, номер клиента и дату. Спасибо!
Старый 18.08.2015, 10:33   #9  
gl00mie is offline
gl00mie
Участник
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
MCBMSS
Most Valuable Professional
 
3,466 / 4354 (152) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Зачем вам PriceDisc_Price и PriceDisc_LineDisc? Используйте PriceDisc, пример вызова приведен выше.
Старый 18.08.2015, 11:52   #10  
АртемМелихов is offline
АртемМелихов
Участник
Аватар для АртемМелихов
 
119 / 10 (1) +
Регистрация: 18.12.2013
Адрес: Samara
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Зачем вам PriceDisc_Price и PriceDisc_LineDisc? Используйте PriceDisc, пример вызова приведен выше.
В постановке требуется сделать расчет, аналогично расчету при создание строки на продажу. А при создание строки используются , описанные выше , классы, наследуемые от PriceDisc. Я до конца не разобрался в них. Я попробовал пример выше и при имеющихся данных(номенклатура,клиент,дата) я не получаю цену, но если создавать на этого клиента заказ, с данной номенклатурой, то цена будет расчитана
Старый 18.08.2015, 12:09   #11  
axm2013 is offline
axm2013
Banned
 
668 / 62 (0) ++++
Регистрация: 04.12.2013
Цитата:
Сообщение от АртемМелихов Посмотреть сообщение
.. как найти цену и скиду используя PriceDisc_Price и PriceDisc_LineDisc, имея только itemId, номер клиента и дату. Спасибо!
А почему вас не интересует к примеру количество? Вдруг скидка зависит от нее?
Старый 18.08.2015, 12:18   #12  
АртемМелихов is offline
АртемМелихов
Участник
Аватар для АртемМелихов
 
119 / 10 (1) +
Регистрация: 18.12.2013
Адрес: Samara
Цитата:
Сообщение от axm2013 Посмотреть сообщение
А почему вас не интересует к примеру количество? Вдруг скидка зависит от нее?
я, конечно, нуб, но не на столько. Количество, дергаю как на примере выше.
Старый 18.08.2015, 12:32   #13  
axm2013 is offline
axm2013
Banned
 
668 / 62 (0) ++++
Регистрация: 04.12.2013
Цитата:
Сообщение от АртемМелихов Посмотреть сообщение
я, конечно, нуб, но не на столько...
Ок. ок. не хотел никого обидеть: просто в списке параметров не упомянули вот и удивился.
Цитата:
Сообщение от АртемМелихов Посмотреть сообщение
классы, наследуемые от PriceDisc
...
Может конечно меня глючит но PriceDisc_Price и PriceDisc_LineDisc не наследуются от PriceDisc в 12 версии во всяком случае, но активно используют PriceDisc при расчетах в соответствующих методах find...Agreement
Инициализацию параметров можно подсмотреть в чем то типа метода priceDisc_PriceCache на мапе SalesPurchLine

Последний раз редактировалось axm2013; 18.08.2015 в 12:35.
Старый 18.08.2015, 12:37   #14  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
647 / 125 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Сообщение от АртемМелихов Посмотреть сообщение
я, конечно, нуб, но не на столько. Количество, дергаю как на примере выше.
Вам не о том сказали. Скидка по строке может зависеть, в том числе, и от количества в строке.

Цитата:
Сообщение от АртемМелихов Посмотреть сообщение
В постановке требуется сделать расчет, аналогично расчету при создание строки на продажу. А при создание строки используются , описанные выше , классы, наследуемые от PriceDisc. Я до конца не разобрался в них. Я попробовал пример выше и при имеющихся данных(номенклатура,клиент,дата) я не получаю цену, но если создавать на этого клиента заказ, с данной номенклатурой, то цена будет расчитана
В этом вызове :

X++:
conPrice    = PriceDisc::findItemPriceAgreement(ModuleInventPurchSales::Sales, // модуль
                                                    inventTable.ItemId,             // номенклатура
                                                    InventDim::find(inventDimId),   // аналитики
                                                    inventTableModule.UnitId,       // ед изм
                                                    transDate,                      // дата
                                                    inventTableModule.PriceUnit,    // кол-во (цена)
                                                    "",                             // код клиента
                                                    CompanyInfo::find().CurrencyCode,// валюта из компании
                                                    "");                            // ценовая группа
я бы, для начала, задал то количество, на которое создана ваша "эталонная" строка Заказа, и код клиента. Посмотрел бы на результат. Если не совпадает - начал бы копать дальше.

Более подробно не могу пока - ни одной Аксы нет под рукой, к сожалению.
__________________
Best Regards,
Roman
Старый 18.08.2015, 12:57   #15  
АртемМелихов is offline
АртемМелихов
Участник
Аватар для АртемМелихов
 
119 / 10 (1) +
Регистрация: 18.12.2013
Адрес: Samara
Цитата:
Сообщение от axm2013 Посмотреть сообщение
Ок. ок. не хотел никого обидеть: просто в списке параметров не упомянули вот и удивился.

Может конечно меня глючит но PriceDisc_Price и PriceDisc_LineDisc не наследуются от PriceDisc в 12 версии во всяком случае, но активно используют PriceDisc при расчетах в соответствующих методах find...Agreement
Инициализацию параметров можно подсмотреть в чем то типа метода priceDisc_PriceCache на мапе SalesPurchLine
Прошу прощение, про наследование мой косяк.
Старый 18.08.2015, 13:49   #16  
АртемМелихов is offline
АртемМелихов
Участник
Аватар для АртемМелихов
 
119 / 10 (1) +
Регистрация: 18.12.2013
Адрес: Samara
Цитата:
Сообщение от RVS Посмотреть сообщение
Вам не о том сказали. Скидка по строке может зависеть, в том числе, и от количества в строке.



В этом вызове :

X++:
conPrice    = PriceDisc::findItemPriceAgreement(ModuleInventPurchSales::Sales, // модуль
                                                    inventTable.ItemId,             // номенклатура
                                                    InventDim::find(inventDimId),   // аналитики
                                                    inventTableModule.UnitId,       // ед изм
                                                    transDate,                      // дата
                                                    inventTableModule.PriceUnit,    // кол-во (цена)
                                                    "",                             // код клиента
                                                    CompanyInfo::find().CurrencyCode,// валюта из компании
                                                    "");                            // ценовая группа
я бы, для начала, задал то количество, на которое создана ваша "эталонная" строка Заказа, и код клиента. Посмотрел бы на результат. Если не совпадает - начал бы копать дальше.

Более подробно не могу пока - ни одной Аксы нет под рукой, к сожалению.
Попробую более подробнее описать. Я создаю строку в заказе, и модифицирую только поле "код номенклатуры", после это , как правильно заметили, по средствам методов мапа, рассчитывается "цена ед.измерения" и "процент скидки" для одной номенклатуры. Я попробовал приведенный пример, указав, почти все входные параметры
X++:
conPrice    = PriceDisc::findItemPriceAgreement(ModuleInventPurchSales::Sales, // модуль
                                                    inventTable.ItemId,             // номенклатура
                                                    InventDim::find(inventDimId),   // аналитики
                                                    inventTableModule.UnitId,       // ед изм
                                                    transDate,                      // дата
                                                    inventTableModule.PriceUnit,    // кол-во (цена)
                                                    custtable.accountNum,                             // код клиента
                                                    custtable.Currency,// валюта из компании
                                                    custtable.PriceGroup);                            // ценовая группа
и не получаю тех значение, которые рассчитываются при создание строки заказа. Дело в том что в мапе, помимо всего, передаются данные из "складской аналитики". Спасибо, Всем, за участие!
Старый 18.08.2015, 14:53   #17  
АртемМелихов is offline
АртемМелихов
Участник
Аватар для АртемМелихов
 
119 / 10 (1) +
Регистрация: 18.12.2013
Адрес: Samara
Далее, попробовал создать объект PriceDisc_Price и заполнить его аналогично заполнению в SalesPurchLine.priceDisc_PriceCache(...). После заполнения через parm методы, я вызываю PriceDisc_Price.findPriceAgreement(), но получаю нули. Хотя для данного клиента\период\номенклатуру цена ед., при создание строки заказа имеется. Подскажите, может быть нужно вызывать не .findPriceAgreement()?
Старый 19.05.2017, 13:33   #18  
konfet is offline
konfet
Снова балуюсь косаптой :)
 
140 / 49 (2) +++
Регистрация: 23.04.2003
Адрес: Moscow
X++:
static void msk_getActualPrice_final(Args _args)
{
    SalesLine SalesLine;
    InventTable inventTable = InventTable::find("10848834");
    ;
    
    SalesLine.CurrencyCode = 'EUR';
    SalesLine.ItemId = inventTable.ItemId;
    SalesLine.CustAccount = "420407";
    SalesLine.initFromCustTable();
    SalesLine.initFromInventTable(inventTable);

    salesLine.setPriceDisc(salesLine.inventDim());
    info(strfmt("Price = %1", salesLine.SalesPrice));
}
__________________
Бесты и регарды!
За это сообщение автора поблагодарили: smailik (1).
Теги
pricedisc, готовая продукция, законченный пример, поиск цены, цена

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
как найти файл? if_maks DAX: Программирование 8 01.02.2016 17:16
Найти ошибки компиляции Dozer DAX: База знаний и проекты 6 27.06.2008 23:13
Исчезновение формы "Найти" sssss DAX: Программирование 3 07.06.2007 11:40
Как найти отчет для правки в АОТ? Hobo DAX: Программирование 3 04.03.2004 09:06
Как найти нужную номерную серию? Pegiy DAX: Функционал 3 30.01.2004 17:29
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:21.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.