|  01.07.2009, 16:04 | #1 | 
| Участник | Себестоимость номенклатуры 
			
			Добрый день. Помогите, пожалуйста, решить задачу - нужно вывести все номенклатуры с 41 и 43 счетов, у которых себестоимость (берется из поля "Себестоимость" на форме "В наличии", на вкладке "В наличии") больше заданной. Вот код (использую дисплейный метод этой формы): X++:     InventTable                  inventTable;
    InventSum                   inventSum;
    CostPriceAverage        costPrice;
    InventItemUnitConvert   inventItemUnitConvert;
    UnitId                          unitIdInvent, unitIdSecondary;
    ItemId                         itemIdUnits;
    ;
    inventItemUnitConvert = InventItemUnitConvert::newNoParameters();
    
    while select inventTable
        where inventTable.ItemGroupId == "41.01.00" ||
              inventTable.ItemGroupId == "43.00.00"
    {
        select inventSum where inventSum.ItemId == inventTable.ItemId;
        
        if (!itemIdUnits || inventSum.ItemId != itemIdUnits)
        {
            itemIdUnits  = inventSum.ItemId;
            unitIdInvent = inventSum.inventTable().inventUnitId();
            if (!unitIdInvent || !unitIdSecondary)
                unitIdSecondary = unitIdInvent;
            else
                if (!UnitConvert::canConvert(unitIdInvent, unitIdSecondary, inventTable.ItemId))
                    unitIdSecondary = unitIdInvent;
        }
        costPrice = inventItemUnitConvert.qty(inventSum.costPricePcs(),
                                                               unitIdSecondary,
                                                               unitIdInvent,
                                                               inventSum.ItemId);
 
        if(costPrice > )
            info(strfmt("ItemId = %1, Price = %2", inventTable.ItemId, costPrice));К сожалению, просмотр других тем со словами "себестоимость" мне не помог. | 
|  | 
|  01.07.2009, 17:23 | #2 | 
| MCTS | 
			
			Посмотрите метод findSum на таблице InventSum
		 | 
|  | |
| За это сообщение автора поблагодарили: Silphidae (1). | |
|  02.07.2009, 12:58 | #3 | 
| Участник | 
			
			Огромное спасибо, Twilight. Все работает. Конечный вариант выглядит так: X++: while select inventTable where inventTable.ItemGroupId == "41.01.00" || inventTable.ItemGroupId == "43.00.00" { select sum(PostedQty),sum(PostedValue) from inventSum where inventSum.ItemId == inventTable.ItemId && inventSum.Closed == NoYes::No; costPrice = inventSum.PostedQty ? inventSum.PostedValue / inventSum.PostedQty : 0; if(costPrice > ) info(strfmt("itemId = %1, costPrice = %2", inventTable.ItemId, costPrice)); } | 
|  | 
|  03.07.2009, 06:51 | #4 | 
| Участник | 
			
			тогда уж лучше так (одинм запросом + используйте стандартный метод): X++: while select sum(PostedQty),sum(PostedValue) from inventSum where inventSum.Closed == NoYes::No join count(recid) from inventTable where (inventTable.ItemGroupId == "41.01.00" || inventTable.ItemGroupId == "43.00.00") && inventSum.ItemId == inventTable.ItemId { costPrice = inventSum.costPricePcs(); if(costPrice > ) info(strfmt("itemId = %1, costPrice = %2", inventTable.ItemId, costPrice)); } Вообще говоря, Аксапта рассчитывает себестоимость в разрезе складских аналитик, для которых указана галочка финансовый. Как правило, включается различная себестоимость по складам. Совсем правильно использовать стандартные классы. http://axapta.mazzy.ru/lib/inventsumdate/ И еще: использовать группы, по названиям бухгалтерских счетов - плохая практика. Такие группы смогут указать только бухи. Вот если бы вы назвали группы, например, Товары и ПроизвПродукция, то сильно повышаете шанс, что небухи смогут правильно указать группы. | 
|  | |
| За это сообщение автора поблагодарили: Silphidae (1). | |
|  30.08.2010, 15:38 | #5 | 
| Модератор | 
			
			Для запроса  X++: while select sum(PostedQty),sum(PostedValue) from inventSum where inventSum.Closed == NoYes::No join count(recid) from inventTable where inventSum.ItemId == inventTable.ItemId { costPrice = inventSum.costPricePcs(); info(strfmt("itemId = %1, costPrice = %2", inventTable.ItemId, costPrice)); } P.S. Для AX 2009 описание http://axapta.mazzy.ru/lib/inventsumdate/ устарело. Некоторых методов нет в классах. 
				__________________ This posting is provided "AS IS" with no warranties, and confers no rights. Последний раз редактировалось Poleax; 30.08.2010 в 15:41. | 
|  | 
| Теги | 
| себестоимость | 
|  | 
| Опции темы | Поиск в этой теме | 
| Опции просмотра | |
| 
 |