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

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

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

См. класс PriceDisc
__________________
полезное на axForum, github, vk, coub.
Старый 05.05.2009, 16:46   #3  
aidsua is offline
aidsua
AX*****
Аватар для aidsua
 
106 / 40 (2) +++
Регистрация: 28.09.2005
Адрес: 2:463/Kyiv
Цитата:
Сообщение от mazzy Посмотреть сообщение
См. класс PriceDisc
.. и класс PriceDisc_Price
__________________
О, как беден, как груб наш русский язык! [c] А.С.Пушкин
Старый 05.05.2009, 16:46   #4  
chanchala is offline
chanchala
Участник
Аватар для chanchala
 
113 / 10 (1) +
Регистрация: 14.05.2008
Адрес: СПб
Валюта - рубли. Информации о клиенте\поставщике нет (оцениваю стоимотсть готовой продукции, поступившей на склад). С этими данными возможно?
__________________
AX 3.0, Build #9.3
Старый 05.05.2009, 16:50   #5  
chanchala is offline
chanchala
Участник
Аватар для chanchala
 
113 / 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
 
106 / 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,723 / 491 (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
АртемМелихов
Участник
Аватар для АртемМелихов
 
120 / 10 (1) +
Регистрация: 18.12.2013
Адрес: Samara
Добрый день, решил апнуть тему, потому что не понятно как найти цену и скиду используя PriceDisc_Price и PriceDisc_LineDisc, имея только itemId, номер клиента и дату. Спасибо!
Старый 18.08.2015, 10:33   #9  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Зачем вам PriceDisc_Price и PriceDisc_LineDisc? Используйте PriceDisc, пример вызова приведен выше.
Старый 18.08.2015, 11:52   #10  
АртемМелихов is offline
АртемМелихов
Участник
Аватар для АртемМелихов
 
120 / 10 (1) +
Регистрация: 18.12.2013
Адрес: Samara
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Зачем вам PriceDisc_Price и PriceDisc_LineDisc? Используйте PriceDisc, пример вызова приведен выше.
В постановке требуется сделать расчет, аналогично расчету при создание строки на продажу. А при создание строки используются , описанные выше , классы, наследуемые от PriceDisc. Я до конца не разобрался в них. Я попробовал пример выше и при имеющихся данных(номенклатура,клиент,дата) я не получаю цену, но если создавать на этого клиента заказ, с данной номенклатурой, то цена будет расчитана
Старый 18.08.2015, 12:09   #11  
axm2013
Гость
 
n/a
Цитата:
Сообщение от АртемМелихов Посмотреть сообщение
.. как найти цену и скиду используя PriceDisc_Price и PriceDisc_LineDisc, имея только itemId, номер клиента и дату. Спасибо!
А почему вас не интересует к примеру количество? Вдруг скидка зависит от нее?
Старый 18.08.2015, 12:18   #12  
АртемМелихов is offline
АртемМелихов
Участник
Аватар для АртемМелихов
 
120 / 10 (1) +
Регистрация: 18.12.2013
Адрес: Samara
Цитата:
Сообщение от axm2013 Посмотреть сообщение
А почему вас не интересует к примеру количество? Вдруг скидка зависит от нее?
я, конечно, нуб, но не на столько. Количество, дергаю как на примере выше.
Старый 18.08.2015, 12:32   #13  
axm2013
Гость
 
n/a
Цитата:
Сообщение от АртемМелихов Посмотреть сообщение
я, конечно, нуб, но не на столько...
Ок. ок. не хотел никого обидеть: просто в списке параметров не упомянули вот и удивился.
Цитата:
Сообщение от АртемМелихов Посмотреть сообщение
классы, наследуемые от 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
Злыдни
 
696 / 130 (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
АртемМелихов
Участник
Аватар для АртемМелихов
 
120 / 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
АртемМелихов
Участник
Аватар для АртемМелихов
 
120 / 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
АртемМелихов
Участник
Аватар для АртемМелихов
 
120 / 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
Снова балуюсь косаптой :)
 
143 / 50 (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, время: 15:45.