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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.12.2019, 15:51   #201  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Попробуйте еще добавить нули для ..., assetDocumentType_JP _assetDocumentType_JP, Int64 _assetDocumentEntryRecId)
Старый 09.12.2019, 16:21   #202  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Если в формуле задаю
model.AssetLedgerAccounts.'assetLedgerDimension()'("000006", "БО", 1, "Головний")
то при сохранении выдается ошибка
Ошибка проверки: Неверный тип значения. Ожидаемый: AssetTransType, фактический: Integer.

AssetTransType:Перечисление Dynamics 365 for Operations AssetTransType
$CurTransTypeAcquisition(TransType Acquisition):Вычисляемое поле = model.AssetTransType.Acquisition: Перечислимый тип

При любых других вариантах задания параметра
model.AssetLedgerAccounts.'assetLedgerDimension()'("000006", "БО", "model.AssetTransType.Acquisition", "Головний")

или

model.AssetLedgerAccounts.'assetLedgerDimension()'("000006", "БО", "$CurTransTypeAcquisition", "Головний")

ошибка при выполнении.

По этому поводу по ссылке
https://fix.lcs.dynamics.com/Home/In...ssion=Download
сказано:
• Only elements with parameters that accept arguments specified as one of the supported primitive data type (integer, real, string, etc.) can be used as data source elements
• Such arguments must be defined at design-time in ER expression as constants of the required data type


Возможно enum это уже не primitive data type (хотя фактически это int) и никакими ухищрениями не удастся передать значение enum-а в качестве параметра.

Думаю, что только belugin может квалифицировано что-то посоветовать.
Старый 09.12.2019, 16:28   #203  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Не поможет. В АХ объявление метода выглядит:
public server static LedgerDimensionDefaultAccount assetLedgerDimension(
AssetId _assetId,
AssetBookId _assetBookId,
AssetTransType _assetTransType,
AssetPostingProfile _assetPostingProfile = ""
// <GJP>
,AssetDocumentType_JP _assetDocumentType_JP = AssetDocumentType_JP::None
,AssetDocumentRecId_JP _assetDocumentEntryRecId = 0
// </GJP>
)

Т.е. обязательными являются первые три параметра. Если при написании формулы в ER я задаю меньше трех параметров - при сохранении не проходит валидация и выдается сообщение что не задан обязательный параметр.

Практически уверен, что проблема именно в 3-м параметре, который обязательный и при этом типа enum.
Старый 09.12.2019, 18:05   #204  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Libovs Посмотреть сообщение
Практически уверен, что проблема именно в 3-м параметре, который обязательный и при этом типа enum.
Я не помню, работает ли enum в качестве аргумента вызова. Корректнго попробовать так

1. Добавить operations enum datasource в корень под именем myEnum
2. Употребить его так: myEnum.MyEnumValue1
Старый 09.12.2019, 19:39   #205  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Почему бы не попробовать мой способ с FILTER, который гарантированно работает у другого клиента?
Старый 09.12.2019, 19:41   #206  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Получилось таким образом:
добавил enum
AssetTransType:Перечисление Dynamics 365 for Operations AssetTransType

добавил таблицу с методом
AssetLedgerAccounts(Asset Ledger Accounts):Таблица AssetLedgerAccounts
assetLedgerDimension():Int64 (String _assetId, String _assetBookId, AssetTransType _assetTransType, String _assetPostingProfile, AssetDocumentType_JP _assetDocumentType_JP, Int64 _assetDocumentEntryRecId)

добавил переменную с формулой
$LDIm03(Ledger dimension ref 03):Вычисляемое поле = model.AssetLedgerAccounts.'assetLedgerDimension()'("000006", "БО", model.AssetTransType.Acquisition, "Головний"): Int64

Формула сохранилась и формат выполнился. Метод вернул (как и должен) значение визуально похожее на RecId - теперь осталось проверить правильное ли и попробовать остальные параметры вызова задать не константами, а ссылками на элементы модели.
За это сообщение автора поблагодарили: EVGL (5).
Старый 09.12.2019, 19:54   #207  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Цитата:
Сообщение от EVGL Посмотреть сообщение
Почему бы не попробовать мой способ с FILTER, который гарантированно работает у другого клиента?
FILTER тут не годится по функциональной логике. Метод assetLedgerDimension() это не простой SELECT ... WHERE ...
там достаточно сложная логика выбора записи. Эта таблица - настройка профиля разноски, который может задаваться для для конкретного ОС, для группы ОС или для "Всех". Поэтому в методе выполняется поиск записи по трем условиям: книга + профиль разноски + тип операции - сначала для конкретного AssetID; если не найдена - то для тех же условий - но для AssetGroupId; если и такой не найдено - то только по тем же трем условиям, но без учета ОС (т.е. для всех).
Вряд ли получится описать всю эту логику просто в одном FILTER. Надо писать 3 выражения FILTER, а потом анализ (с учетом приоритетности) какой первым вернул непустое значение.
Старый 09.12.2019, 23:53   #208  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Какая там функциональная логика - это известно
Только по факту настройка для конкретного ОС на проектах очень редко используется. На это есть масса причин, характера разделения прав доступа и ответственности между отделами IT, бухгалтерии, сторонних консультантов, логики внедрения и обучения бухгалтеров, а главным образом нормативов в конкретной стране. Если принять это предположение, то запрос сводится к одному FIRST(ORDER(FILTER(AND(OR(...
Старый 10.12.2019, 13:04   #209  
mnt_dx is offline
mnt_dx
Участник
Axapta Retail User
Лучший по профессии 2014
 
1,744 / 188 (10) ++++++
Регистрация: 17.02.2011
Адрес: К Северу через Северо-Запад
А почему нельзя перегрузить ту же самую версию модели?

Цитата:
Can not overwrite a version
Старый 10.12.2019, 13:46   #210  
axm2017 is offline
axm2017
Участник
 
1,748 / 292 (13) ++++++
Регистрация: 15.05.2017
Цитата:
Сообщение от mnt_dx Посмотреть сообщение
А почему нельзя перегрузить ту же самую версию модели?
Это как раз неплохо.
Если версии одинаковы то смысл загружать, если разные то увеличивай версию.
Старый 10.12.2019, 14:51   #211  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Подскажите, плз, как в ER работать со структурой LedgerDimension.

Из поля LedgerDimension таблицы AssetLedgerAccounts вытащил методом значение – это RecId структуры. В АХ2012 это был RecId записи в таблице DimensiomAttributeValueCombination (AssetLedgerAccounts > Relation: AssetLedgerAccounts. LedgerDimension == DimensiomAttributeValueCombination.RecID) и можно было из этой записи получить значение счета ГК и финаналитик - либо методами либо просто распарсить поле DisplayValue.

В АХ10 похоже механизм работы с LedgerDimension существенно переделали и таблицы DimensiomAttributeValueCombination уже нет; куда ведет эта ссылка из AssetLedgerAccounts посмотреть не могу, т.к. AOT мне недоступен.

Но если я правильно понимаю, то в можно этого и не знать, если использовать ER объект Сведения о финаналитиках. Но как реально это сделать – не понимаю.

Если добавляю этот объект – получаю список записей; методов у него нет. Получается, что надо написать какую-то формулу используя функции ER, чтобы выбрать набор значений (по имеющемуся RecId?), затем выбрать из списка конкретную запись для счета ГК или финаналитики (по имени?) и тогда из поля Definition.Name можно будет получить значение?

Или все вообще не так? Подскажите хотя бы в общих чертах что пробовать делать?
Старый 10.12.2019, 15:00   #212  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Цитата:
Сообщение от EVGL Посмотреть сообщение
Какая там функциональная логика - это известно
Только по факту настройка для конкретного ОС на проектах очень редко используется. На это есть масса причин, характера разделения прав доступа и ответственности между отделами IT, бухгалтерии, сторонних консультантов, логики внедрения и обучения бухгалтеров, а главным образом нормативов в конкретной стране. Если принять это предположение, то запрос сводится к одному FIRST(ORDER(FILTER(AND(OR(...
На счет "редко" - не могу согласиться. По моему опыту, бухгалтера настраивают один счет для "Все", другой для конкретной Группы ОС (например, для зданий) и нередко для каких-то очень дорогих ОС (типа производственная линия) "персональный" счет. Так что, все-таки ИМХО, лучше использовать отлаженый за многоие годы метод, чем писать ER-формулу.
Старый 10.12.2019, 15:08   #213  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от Libovs Посмотреть сообщение
Или все вообще не так? Подскажите хотя бы в общих чертах что пробовать делать?
По крайней мере при использовании в модели проблем не было никаких:
'$EGCAssetAcquLedgerAccount'.'>Relations'.LedgerDimension.MainAccountValue

$EGCAssetAcquLedgerAccount - это была переменная типа record DimensiomAttributeValueCombination, конечно (найденная указанным выше методом). Одним RecId сыт не будешь.
Старый 10.12.2019, 15:34   #214  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Цитата:
Сообщение от EVGL Посмотреть сообщение
По крайней мере при использовании в модели проблем не было никаких:
'$EGCAssetAcquLedgerAccount'.'>Relations'.LedgerDimension.MainAccountValue

$EGCAssetAcquLedgerAccount - это была переменная типа record DimensiomAttributeValueCombination, конечно (найденная указанным выше методом). Одним RecId сыт не будешь.
Если $EGCAssetLedgerAccountsT - это таблица, то у меня есть метод assetLedgerDimension(), которым нахожу нужную запись, но этот метод возвращает не запись и не поле AssetLedgerAccounts.RecId, а поле AssetLedgerAccounts.LedgerDimension.

Если $EGCAssetLedgerAccountsR - это список записей, уже отфильтрованный по AssetId, BookId и AssetTransType, из которого нужно выбрать одну. Если бы у меня был именно AssetLedgerAccounts.RecId, то написал бы FILTER($EGCAssetLedgerAccountsR, $EGCAssetLedgerAccountsR.RecId = $EGCAssetLedgerAccountsT.RecId)

А так не хватает соображения связать это до кучи.
Старый 10.12.2019, 16:00   #215  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от Libovs Посмотреть сообщение
...поле AssetLedgerAccounts.LedgerDimension...
Совершенно верно. Стало быть, вам нужна еще одна переменная типа запись таблицы, в которой будет FILTER, не так ли?
Старый 10.12.2019, 16:16   #216  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Именно так. Только не могу сообразить как ее определить.
Или у меня есть такой список записей
Нажмите на изображение для увеличения
Название: FA7.jpg
Просмотров: 185
Размер:	62.7 Кб
ID:	12512
и я не могу в общем случае выбрать одну из них

или у меня есть метод, который однозначно определяет нужную запись, но возвращает не саму запись и не RecId выбранной записи, а значение поля LedgerDimension.

И как определить переменную типа (единичная) запись - не соображу.
Старый 10.12.2019, 17:00   #217  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
В общем - получилось. Методом из объекта типа Таблица получил значение
$LDRecId = AssetLedgerAccounts.LedgerDimension

а затем на список записей наложил фильтр
FILTER($EGCAssetLedgerAccountsR, $EGCAssetLedgerAccountsR.LedgerDimension = $LDRecId)

С большой вероятностью выбрана какая-то другая запись, но с таким же значением LedgerDimension, т.е. таким же MainAccountValue.

Формально - это абсолютно неправильно, т.к. позиционируемся не на ту запись, которую нашли методом. Но цель гарантировано достигается - даже если запись другая, то счет ГК в отчет выведется правильный.
Уфф.
Старый 11.12.2019, 22:22   #218  
mnt_dx is offline
mnt_dx
Участник
Axapta Retail User
Лучший по профессии 2014
 
1,744 / 188 (10) ++++++
Регистрация: 17.02.2011
Адрес: К Северу через Северо-Запад
Цитата:
Сообщение от axm2017 Посмотреть сообщение
Это как раз неплохо.
Если версии одинаковы то смысл загружать, если разные то увеличивай версию.
номер версий одинаковый, но содержимое каким-то образом получилось разное.
Старый 11.12.2019, 22:42   #219  
axm2017 is offline
axm2017
Участник
 
1,748 / 292 (13) ++++++
Регистрация: 15.05.2017
Цитата:
Сообщение от mnt_dx Посмотреть сообщение
номер версий одинаковый, но содержимое каким-то образом получилось разное.
По идее если не так называемый дерайв ака чайлд, от которых мы к счастью отказались, такого быть не должно. Можно сравнить xml ради интереса.
Старый 12.12.2019, 13:58   #220  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Подскажите, плз, что за функция НЕИЗВЕСТНО в формуле
$BalanceAllYears:Вычисляемое поле = НЕИЗВЕСТНО(AssetTable.AssetId, @.BookId, AssetYear.All, ReportingDate): Запись
Теги
generic electronic reporting, ger

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ievgensaxblog: MSDyn365FO. How to Import CSV file using Electronic Reporting. Part 2 – Format. Blog bot DAX Blogs 0 06.02.2019 07:12
ievgensaxblog: MSDyn365FO. How to Import CSV file using Electronic Reporting. Part 1 – Data Model. Blog bot DAX Blogs 0 06.02.2019 07:12
erconsult: Electronic Reporting (ER) Cookbook 2: new tips from the kitchen Blog bot DAX Blogs 0 06.08.2018 17:11
powerobjects: Electronic Reporting in Dynamics 365 for Finance and Operations Blog bot DAX Blogs 0 14.02.2018 03:28
erconsult: Electronic Reporting (ER) Cookbook Blog bot DAX Blogs 24 09.10.2017 08:47
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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