|  02.11.2017, 00:43 | #1 | 
| Участник | D365 программно создать строки общего журнала и разнести 
			
			D365(Ax7) Upd10  Добрый вечер, подскажите пожалуйста, как программо создать и разнести строки общего журнала. | 
|  | 
|  02.11.2017, 01:18 | #2 | 
| Боец | 
			
			Так же как и в 2012. Не работает?
		 | 
|  | |
| За это сообщение автора поблагодарили: Aquarius (1). | |
|  02.11.2017, 01:20 | #3 | 
| Участник | 
			
			Нет ,не работает '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 | 
| Участник | |
|  | |
| За это сообщение автора поблагодарили: dech (1), Aquarius (1). | |
|  02.11.2017, 08:41 | #5 | 
| Участник | 
			
			В 2012 то при сомнениях как заполнять поле можно было посмотреть write ссылки на него, в D365 от этого излишества избавились(ну или надо много раз кликать), ну т.е. да, пока работает способ предложенный skuull, но думаю с 7.3 он тоже потеряет актуальность из за глобального рефакторинга. В 7.2 пока правда можно посмотреть ссылки на ledgerJournalTrans.insert | 
|  | 
|  02.11.2017, 12:45 | #6 | 
| Участник | 
			
			Я нашел достаточно много примеров (например "/Classes/RetailTransactionServiceOrders/Methods/createReturnOrder", "/Classes/TMSInvoiceApproval") быстро посмотрев где используется класс LedgerJournalCheckPost. PS: Не гарантирую качество примеров, т.к. не верю в префиксы Retail и TMS. | 
|  | |
| За это сообщение автора поблагодарили: Aquarius (1). | |
|  02.11.2017, 13:00 | #7 | 
| Участник | 
			
			Или "DimensionResolver" или "DimensionStorage". Последний вроде бы работает как и в AX 2012. Если есть конкретные вопросы - спрашивайте.
		 | 
|  | 
|  02.11.2017, 14:21 | #8 | 
| Участник | |
|  | 
|  02.11.2017, 15:17 | #9 | 
| Banned | 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 | 
| Участник | Цитата: да и this.getLedgerDim() можно просто заменить на стандартную journalTrans.parmAccount() Да и вообще самое сложное - это присвоить ваучер, это кстати хорошая задача для собеседования Последний раз редактировалось trud; 02.11.2017 в 15:44. | 
|  | |
| За это сообщение автора поблагодарили: Aquarius (1). | |
|  02.11.2017, 16:01 | #11 | 
| Banned | Цитата: 
		
			Сообщение от trud
			   здесь кстати потенциальная ошибка, часть полей(типа всяких условий оплат и профилей) инициализируются в момент изменения счета.  да и this.getLedgerDim() можно просто заменить на стандартную journalTrans.parmAccount() Да и вообще самое сложное - это присвоить ваучер, это кстати хорошая задача для собеседования 2) Точно, journalTrans.parmAccount() 3) Ваучер обычно присваиваем через JournalTableData. | 
|  | |
| За это сообщение автора поблагодарили: Aquarius (1). | |
|  02.11.2017, 16:13 | #12 | 
| Участник | |
|  | |
| За это сообщение автора поблагодарили: Aquarius (1). | |