Цитата:
Сообщение от
S.Kuskov
Вместо прямого вызова priceDisc.findPriceAgreement() используйте priceDisc.findPrice()
Пример использования \Data Dictionary\Maps\SalesPurchLine\Methods\setPriceAgreement
Именно этот метод используется для поиска цены при создании строки заказа через стандартный функционал.
Обратите внимание, что в стандартном функционале в случае отсутствия необходимой позиции в прайсе, будет возвращена цена, указанная на справочнике номенклатуры. За это отвечает второй параметр метода findPrice.
Сработало.
Второй параметр я думаю смысла нет использовать, все-таки тарифы в прайсе есть для каждой номенклатуры (вернее. SalesLine может быть построен в любом случае), хоть они могут быть и неправильные.
Но надо разобраться с этим отдельно...
Тут еще такая вещь интересная: для номенклатур, цены продажи у которых общие и не зависят ни от клиента, ни от конфигурации вместо числового значения в PriceDiscTable.inventDimId стоит "Axapta", а не что-то вроде "000014_031"... соответственно, в таблице inventDim для "Axapta" строк нет... Почему ставится "Axapta"?
К тому же, если для такой номенклатуры выполнить
X++:
priceDisc.findPriceAgreement(SalesLine2.priceGroupId(), 'Axapta');
строка прайса возвращается