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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.11.2017, 00:43   #1  
Aquarius is offline
Aquarius
Участник
 
125 / 29 (1) +++
Регистрация: 08.02.2007
Адрес: Одесса
D365 программно создать строки общего журнала и разнести
D365(Ax7) Upd10
Добрый вечер,
подскажите пожалуйста,
как программо создать и разнести строки общего журнала.
Старый 02.11.2017, 01:18   #2  
DSPIC is offline
DSPIC
Боец
Аватар для DSPIC
MCP
Лучший по профессии 2017
Лучший по профессии 2014
Лучший по профессии 2009
 
974 / 979 (34) +++++++
Регистрация: 11.04.2008
Адрес: Минск
Так же как и в 2012. Не работает?
__________________
Мой блог
За это сообщение автора поблагодарили: Aquarius (1).
Старый 02.11.2017, 01:20   #3  
Aquarius is offline
Aquarius
Участник
 
125 / 29 (1) +++
Регистрация: 08.02.2007
Адрес: Одесса
Нет ,не работает
'AxdDimensionUtil' is obsolete: ''This class is no longer supported, use the DimensionResolver classes.''.
DimensionResolver не понятно как использовать.
DimensionStorage::getDynamicAccount тоже нельзя использовать,такого метода нет

Последний раз редактировалось Aquarius; 02.11.2017 в 01:55.
Старый 02.11.2017, 05:14   #4  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
354 / 323 (11) ++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от Aquarius Посмотреть сообщение
DimensionResolver не понятно как использовать.
Ну берете перекрестные ссылки в руки, находите код в 12 который использовал AxdDimensionUtil, идете в 7ку в тоже самое место и смотрите чо там как сейчас,ну и ctr+c, ctr+v
За это сообщение автора поблагодарили: dech (1), Aquarius (1).
Старый 02.11.2017, 08:41   #5  
trud is offline
trud
Участник
Лучший по профессии 2017
 
480 / 344 (12) ++++++
Регистрация: 07.06.2003
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Так же как и в 2012.
В 2012 то при сомнениях как заполнять поле можно было посмотреть write ссылки на него, в D365 от этого излишества избавились(ну или надо много раз кликать), ну т.е. да, пока работает способ предложенный skuull, но думаю с 7.3 он тоже потеряет актуальность из за глобального рефакторинга.

В 7.2 пока правда можно посмотреть ссылки на ledgerJournalTrans.insert
Старый 02.11.2017, 12:45   #6  
Napalm is offline
Napalm
Участник
 
75 / 76 (3) ++++
Регистрация: 23.05.2012
Я нашел достаточно много примеров (например "/Classes/RetailTransactionServiceOrders/Methods/createReturnOrder", "/Classes/TMSInvoiceApproval") быстро посмотрев где используется класс LedgerJournalCheckPost.

PS: Не гарантирую качество примеров, т.к. не верю в префиксы Retail и TMS.
За это сообщение автора поблагодарили: Aquarius (1).
Старый 02.11.2017, 13:00   #7  
Napalm is offline
Napalm
Участник
 
75 / 76 (3) ++++
Регистрация: 23.05.2012
Цитата:
Сообщение от Aquarius Посмотреть сообщение
Нет ,не работает
'AxdDimensionUtil' is obsolete: ''This class is no longer supported, use the DimensionResolver classes.''.
DimensionResolver не понятно как использовать.
DimensionStorage::getDynamicAccount тоже нельзя использовать,такого метода нет
Или "DimensionResolver" или "DimensionStorage". Последний вроде бы работает как и в AX 2012. Если есть конкретные вопросы - спрашивайте.
Старый 02.11.2017, 14:21   #8  
Aquarius is offline
Aquarius
Участник
 
125 / 29 (1) +++
Регистрация: 08.02.2007
Адрес: Одесса
Цитата:
Сообщение от skuull Посмотреть сообщение
Ну берете перекрестные ссылки в руки, находите код в 12 который использовал AxdDimensionUtil, идете в 7ку в тоже самое место и смотрите чо там как сейчас,ну и ctr+c, ctr+v
к 12-цке доступа нет)
Старый 02.11.2017, 15:17   #9  
EVGL is offline
EVGL
Moderator
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,554 / 2083 (77) +++++++++
Регистрация: 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   #10  
trud is offline
trud
Участник
Лучший по профессии 2017
 
480 / 344 (12) ++++++
Регистрация: 07.06.2003
Цитата:
Сообщение от 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   #11  
EVGL is offline
EVGL
Moderator
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,554 / 2083 (77) +++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от trud Посмотреть сообщение
здесь кстати потенциальная ошибка, часть полей(типа всяких условий оплат и профилей) инициализируются в момент изменения счета.
да и this.getLedgerDim() можно просто заменить на стандартную journalTrans.parmAccount()

Да и вообще самое сложное - это присвоить ваучер, это кстати хорошая задача для собеседования
1) Да, потенциальная ошибка. Неприятность в том, что наиболее полные присвоения выполняются в LedgerJournalTransEngine, который работает в контексте формы.
2) Точно, journalTrans.parmAccount()
3) Ваучер обычно присваиваем через JournalTableData.
За это сообщение автора поблагодарили: Aquarius (1).
Старый 02.11.2017, 16:13   #12  
trud is offline
trud
Участник
Лучший по профессии 2017
 
480 / 344 (12) ++++++
Регистрация: 07.06.2003
Цитата:
Сообщение от 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:33.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.