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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.11.2017, 15:17   #1  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
X++:
		journalTrans.initValue();
        journalTrans.JournalNum             = journalNum;
		...
        journalTrans.AccountType            = LedgerJournalACType::Project;
        journalTrans.LedgerDimension        = this.getLedgerDim(LedgerJournalACType::Project, curExt(), projId);
        journalTrans.AmountCurDebit         = costAmount; 
        journalTrans.DefaultDimension       = LedgerJournalEngine::initDefaultDimensionServer(journalTrans);
		...


	public RefRecId getLedgerDim(LedgerJournalACType _accountType,
                                        DataAreaId _dataAreaId,
                                        DimensionValue _accountId)
    {
        RefRecId ledgerDimension;

        DictEnum dictEnum = new DictEnum(enumNum(LedgerJournalACType));
        DimensionDynamicAccountServiceProvider dimensionDynamicAccountServiceProvider;
        DimensionDynamicAccountContract dimensionDynamicAccountContract = new DimensionDynamicAccountContract();

        dimensionDynamicAccountContract.parmCompany(_dataAreaId);
        dimensionDynamicAccountContract.parmAccountType(_accountType);

        DimensionAttributeValueContract ledgerContract = DimensionAttributeValueContract::construct(dictEnum.value2Label(_accountType), _accountId);
        dimensionDynamicAccountContract.parmPrimaryDimensionAttributeValue(ledgerContract);

        dimensionDynamicAccountServiceProvider = DimensionDynamicAccountServiceProvider::newForDynamicAccountContract(dimensionDynamicAccountContract);
        DimensionStorageResult dimensionStorageResult = dimensionDynamicAccountServiceProvider.resolve();

        switch(dimensionStorageResult.parmStatus())
        {
            case DimensionStorageResultStatus::Valid:
                ledgerDimension = dimensionStorageResult.parmSavedRecId();
                break;

            default:
                error(strFmt("blah-blah-blah-blah-bla", dimensionStorageResult.parmStatus()));
                break;
        }

        return ledgerDimension;
    }
За это сообщение автора поблагодарили: Aquarius (1).
Старый 02.11.2017, 15:36   #2  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от EVGL Посмотреть сообщение
X++:
		journalTrans.initValue();
        journalTrans.JournalNum             = journalNum;
		...
        journalTrans.AccountType            = LedgerJournalACType::Project;
        journalTrans.LedgerDimension        = this.getLedgerDim(LedgerJournalACType::Project, curExt(), projId);
здесь кстати потенциальная ошибка, часть полей(типа всяких условий оплат и профилей) инициализируются в момент изменения счета.
да и this.getLedgerDim() можно просто заменить на стандартную journalTrans.parmAccount()

Да и вообще самое сложное - это присвоить ваучер, это кстати хорошая задача для собеседования

Последний раз редактировалось trud; 02.11.2017 в 15:44.
За это сообщение автора поблагодарили: Aquarius (1).
Старый 02.11.2017, 16:01   #3  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от trud Посмотреть сообщение
здесь кстати потенциальная ошибка, часть полей(типа всяких условий оплат и профилей) инициализируются в момент изменения счета.
да и this.getLedgerDim() можно просто заменить на стандартную journalTrans.parmAccount()

Да и вообще самое сложное - это присвоить ваучер, это кстати хорошая задача для собеседования
1) Да, потенциальная ошибка. Неприятность в том, что наиболее полные присвоения выполняются в LedgerJournalTransEngine, который работает в контексте формы.
2) Точно, journalTrans.parmAccount()
3) Ваучер обычно присваиваем через JournalTableData.
За это сообщение автора поблагодарили: Aquarius (1).
Старый 02.11.2017, 16:13   #4  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от EVGL Посмотреть сообщение
3) Ваучер обычно присваиваем через JournalTableData.
А правильно работает при этом? вся сложность в обработке значения 'In connection with balance' в настройках журнала
За это сообщение автора поблагодарили: Aquarius (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Реверс операций из общего журнала sbol DAX: Функционал 9 10.12.2008 13:30
Можно ли программно создать новую таблицу/форму в Аксапта? Гений 1С DAX: Программирование 0 05.12.2006 16:26
Как программно из Axapta создать гиперссылку в Excel'е Olga_Nik DAX: Программирование 1 30.06.2006 09:41
Создать программно складскую проводку с количеством = 0. vasiliy DAX: Программирование 5 26.12.2005 16:46
Программно создать запись в RLS. oip DAX: Программирование 9 22.12.2005 17:25

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

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

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