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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.08.2010, 13:06   #1  
raniel is offline
raniel
Участник
Аватар для raniel
 
241 / 11 (1) +
Регистрация: 20.10.2006
Да-да согласен это класс.... торопился, ошибся.
Цитата:
Если потом в строках журнала ОС измените аналитику , сформированную таким образом, то и в проводки ОС и проводки ГК пойдет именно измененная из строк журнала.
Вот в том то и дело что не так. так как по методу формирования строк в таблице RAssetTrans аналитику подхватывает из RassetStandarts. Сейчас делаю доработку чтоб аналитику брало из строк журнала. Но мне интересно как у других это реализовано. Да и связь между RAssetTrans c LedgerJournalTrans както сложно сделать.
Старый 04.08.2010, 13:30   #2  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от raniel Посмотреть сообщение
Да и связь между RAssetTrans c LedgerJournalTrans както сложно сделать.
Дык по полю Voucher (Документ ГК)
Старый 04.08.2010, 13:39   #3  
raniel is offline
raniel
Участник
Аватар для raniel
 
241 / 11 (1) +
Регистрация: 20.10.2006
Цитата:
Сообщение от Gustav Посмотреть сообщение
Дык по полю Voucher (Документ ГК)
Согласен но там по 2 записи с одним номером Балансовая стоимость и её Амортизация. как их различать.... я различаю по суммам, но это тоже как-то некрасиво...
Старый 04.08.2010, 14:38   #4  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от raniel Посмотреть сообщение
Согласен но там по 2 записи с одним номером Балансовая стоимость и её Амортизация. как их различать.... я различаю по суммам, но это тоже как-то некрасиво...
Различать по полю AssetTransType таблицы RAssetTrans. Поле содержит значения enum'а RAssetTransType: RAssetTransType::Acquisition = 3 - стоимость, RAssetTransType:: Depreciation = 0 - амортизация.
За это сообщение автора поблагодарили: raniel (1).
Старый 04.08.2010, 14:57   #5  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
887 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от raniel Посмотреть сообщение
по методу формирования строк в таблице RAssetTrans аналитику подхватывает из RassetStandarts.
Нет, нет и еще раз нет ...
Trans'ы ОС'овские создаются наследниками класса RAssetPost, в данном случае - RAssetPost_CompanyReceipt. Вызывается метод этого класса createTrans, в котором дважды создается запись в RAssetTrans. В одном случае для инициализации RAssetTrans вызывается метод этого же класса initAcquisitionTrans() (для суммы стоимости) и initDepreciationTrans() (для износа). Что мы в них видим ? А в них обоих есть вызов родительского метода initFromLedgerJournalTrans(), в котором аналитика RAssetTrans инициализируется методом dimension() на этой же таблице (в качестве параметра передается туда аналитика строки журнала).
вот этот метод
X++:
public Dimension dimension(Dimension _dimension)
{
    Dimension assetDimension;
    int       x;
    ;

    assetDimension = this.assetStandards().Dimension;
    for (x = 1; x <= dimof(assetDimension); x++)
    {
        assetDimension[x] = _dimension[x] ? _dimension[x] : assetDimension[x];
    }

    return assetDimension;
}
Что мы здесь видим ?
Мы здесь видим соединение двух аналитик (переданной как параметр из строки журнала и текущей из модели учета) по принципу "Если журнальная аналитика на уровне X пуста - в проводку пойдет аналитика уровня X из модели ОС". О полной замене аналитики из журнала речи нет - есть речь о дополнении. Эта штука работает, если между моментом формирования строк журнала ОС и разноской журнала некий подлый юзер дополнил некую аналитику в модели учета, которой нет в журнале. Если на этом уровне в журнале есть аналитика - хоть заменяйся ее в модели, но в проводку ос пойдет из журнала.
__________________
Мы летаем, кружимся, нагоняем ужасы ...
Старый 04.08.2010, 18:41   #6  
raniel is offline
raniel
Участник
Аватар для raniel
 
241 / 11 (1) +
Регистрация: 20.10.2006
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
X++:
public Dimension dimension(Dimension _dimension)
{
    Dimension assetDimension;
    int       x;
    ;

    assetDimension = this.assetStandards().Dimension;
    for (x = 1; x <= dimof(assetDimension); x++)
    {
        assetDimension[x] = _dimension[x] ? _dimension[x] : assetDimension[x];
    }

    return assetDimension;
}
Что мы здесь видим ?
Мы здесь видим соединение двух аналитик (переданной как параметр из строки журнала и текущей из модели учета) по принципу "Если журнальная аналитика на уровне X пуста - в проводку пойдет аналитика уровня X из модели ОС". О полной замене аналитики из журнала речи нет - есть речь о дополнении. Эта штука работает, если между моментом формирования строк журнала ОС и разноской журнала некий подлый юзер дополнил некую аналитику в модели учета, которой нет в журнале. Если на этом уровне в журнале есть аналитика - хоть заменяйся ее в модели, но в проводку ос пойдет из журнала.
Вот код мз класса LedgerJournalTransUpdateAsset_ru. тут происходит заполнение данными таблицы RAssetTrans:
Цитата:
public void updateNow(LedgerVoucher _ledgerVoucher,
LedgerPostingType _posting,
LedgerJournalTrans _ledgerJournalTrans)
{
LedgerPostingType ledgerPostingType = LedgerPostingType::None;
RAssetStandards assetStandards = this.assetStandards(_ledgerJournalTrans);
LedgerVoucherTransObject ledgerVoucherTransObject;
RAssetPost assetPost;
;

if (this.check(_ledgerJournalTrans))
{
_ledgerJournalTrans.RAssetStandardId = assetStandards.AssetStandardId;

if (_ledgerJournalTrans.AssetCanDisposal_RU || ! _ledgerJournalTrans.AssetToFromRecId_RU)
{
assetPost = RAssetPost::construct(_ledgerJournalTrans,
_ledgerVoucher,
assetStandards.AssetStandardId);
assetPost.run();
}
а именно на строчку:
Цитата:
if (_ledgerJournalTrans.AssetCanDisposal_RU || ! _ledgerJournalTrans.AssetToFromRecId_RU)
Так вот у амортизации _ledgerJournalTrans.AssetToFromRecId_RU равно 0 и _ledgerJournalTrans.AssetCanDisposal_RU = True в отличии от объекта.
И соответственно внутрь никогда не попадёт, а именно там вычисляется и прописывается Dimensions. И Это стандартный функционал.
Ну повторите ради интереса пример. Создайте ОС , сделайте приём укажите амортизацию. Создайте Журнал ОС, пропишите разную аналитику у ОС и его амортизации, разнесите и гляньте в RAssetTrans аналитика будет одинаковой что у амортизации что у ОС.
Старый 04.08.2010, 22:47   #7  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
887 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от raniel Посмотреть сообщение
внутрь никогда не попадёт
Простите, некоей нелогичности не замечаете ?

Внимательно вглядитесь в условие и в приведенные значение ...
По Вашему мнению
X++:
if (_ledgerJournalTrans.AssetCanDisposal_RU || ! ledgerJournalTrans.AssetToFromRecId_RU)
при _ledgerJournalTrans.AssetCanDisposal_RU = true и ledgerJournalTrans.AssetToFromRecId_RU = 0 это условие не выполняется ?
Т.е.
X++:
if(true || !false)
внутрь не пускает ?
__________________
Мы летаем, кружимся, нагоняем ужасы ...

Последний раз редактировалось TasmanianDevil; 04.08.2010 в 22:52.
Старый 05.08.2010, 09:50   #8  
raniel is offline
raniel
Участник
Аватар для raniel
 
241 / 11 (1) +
Регистрация: 20.10.2006
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
Простите, некоей нелогичности не замечаете ?

Внимательно вглядитесь в условие и в приведенные значение ...
По Вашему мнению
X++:
if (_ledgerJournalTrans.AssetCanDisposal_RU || ! ledgerJournalTrans.AssetToFromRecId_RU)
при _ledgerJournalTrans.AssetCanDisposal_RU = true и ledgerJournalTrans.AssetToFromRecId_RU = 0 это условие не выполняется ?
Т.е.
X++:
if(true || !false)
внутрь не пускает ?
Я чуточку не так выразился, но суть в следующем. при обработке амортизации он заходи внутрь, при расчёте самого ОС нет потому что у него условия не соответствуют.... и поэтому аналитика садится такая же как и у амортизации а не такая как в журнале ОС. и вообще зачем у амортизации поле ledgerJournalTrans.AssetToFromRecId_RU имеет значение своего же RecId. Вообще что несут собой поля _ledgerJournalTrans.AssetCanDisposal_RU = true и ledgerJournalTrans.AssetToFromRecId_RU = 0 ?
Я прежде чем написать сюда, дебагером ни раз пробегал по коду и задаю вопрос точно зная как оно у меня считает. Мне интересно зачем так сделано? Для других операций всё ок, отрабатывает отлично, но там и создаются всего 2 строки. а тут при приёме 4 строки. Если у Вас нет времени то не стоит мне отвечать как бы лишь бы ответить. Просто сделайте контрольный пример. Мне интересно что у Вас получится.
Заранее спасибо.

Последний раз редактировалось raniel; 05.08.2010 в 09:54.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Продажа ОС vazerdim DAX: Функционал 7 14.01.2010 20:04
Сторно ввода в эксплуатацию ОС Rivez DAX: Функционал 16 25.08.2009 10:46
Операции с ОС, переданными в аренду IDian DAX: Функционал 2 10.08.2009 23:25
Массовая внутригрупповая продажа/покупка ОС Evgeniy2020 DAX: Функционал 0 12.02.2009 12:25
"Ловля" проводок в ГК по ОС в модуле ОС ksenia DAX: Функционал 17 02.11.2004 10:37

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

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

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