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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.08.2021, 18:35   #1  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Выбираю все проводки по одному номеру ваучера
$GeneralJournalLines:Вычисляемое поле = FILTER(GeneralJournalEntry, GeneralJournalEntry.SubledgerVoucher='$LedgerTransLines'.Voucher): Список записей
$GeneralJournalAccountLines:Вычисляемое поле = FILTER(GeneralJournalAccountEntry, VALUEIN(GeneralJournalAccountEntry.GeneralJournalEntry, '$LedgerTransLines'.'$GeneralJournalLines', '$LedgerTransLines'.'$GeneralJournalLines'.RecId)): Список записей

Поля
Методы
Отношения
Финансовые аналитики
---LedgerDimension.Dimension(Счет ГК.Dimension):Запись
Вычисляемые поля
---$GeneralJournalLine:Вычисляемое поле = FIRSTORNULL(WHERE('$LedgerTransLines'.'$GeneralJournalLines', '$LedgerTransLines'.'$GeneralJournalLines'.RecId=@.GeneralJournalEntry)): Запись
---$LedgerDimension:Вычисляемое поле = WHERE(@.'LedgerDimension.Dimension'.'Main account and dimensions', @.'LedgerDimension.Dimension'.'Main account and dimensions'.Value.Code<>""): Список записей


Поле LedgerDimension представляется веткой Финаналитики.
Мапплю этот список на модель
Transactions(Проводки):Список записей = @.'$GeneralJournalAccountLines'
---AccountingDate(Дата учета):Дата = @.'$GeneralJournalLine'.AccountingDate
---AmountAccounting(Сумма в валюте учета):Вещественный = @.AccountingCurrencyAmount
---AmountReporting(Сумма в валюте отчетности):Вещественный = @.ReportingCurrencyAmount
---AmountTransaction(Сумма в валюте транзакции):Вещественный = @.TransactionCurrencyAmount
---Currency(Валюта):Строка = @.TransactionCurrencyCode
---JournalNumber(Номер журнала):Строка = @.'$GeneralJournalLine'.JournalNumber
---LedgerDimension(Аналитики):Список записей = @.'$LedgerDimension'
------Definition:Запись = @.Definition
---------Name:Строка = @.Definition.Name
---------Type:Строка = @.Definition.Type
------Value:Запись = @.Value
---------Code:Строка = @.Value.Code
---------Description:Строка = @.Value.Description

---LedgerDimensionValue(Аналитики значение):Строка = @.LedgerAccount
---MainAccountName(Счет ГК название):Строка = @.'>Relations'.MainAccount.Name
---MainAccountValue(Счет ГК):Строка = @.'>Relations'.MainAccount.MainAccountId
---Text(Описание):Строка = @.Text
---Voucher(Ваучер):Строка = @.'$GeneralJournalLine'.SubledgerVoucher


Список аналитик в модели заполняется без ошибок
Старый 28.08.2021, 18:51   #2  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Но если я фильтрую список транзакций - нужны не все, а только по определенным счетам
$GeneralJournalAccountFilter:Вычисляемое поле = WHERE(@.'$GeneralJournalAccountLines', VALUEIN(FIRSTORNULL(@.'$GeneralJournalAccountLines'.'>Relations'.MainAccount).MainAccountId, AccountsList, AccountsList.Value)): Список записей
Поля
Методы
Отношения
Финансовые аналитики
---LedgerDimension.Dimension(Счет ГК.Dimension):Запись
Вычисляемые поля
---$GeneralJournalLine:Вычисляемое поле = FIRSTORNULL(WHERE('$LedgerTransLines'.'$GeneralJournalLines', '$LedgerTransLines'.'$GeneralJournalLines'.RecId='$LedgerTransLines'.'$GeneralJournalAccountLines'.GeneralJournalEntry)): Запись
---$LedgerDimension:Вычисляемое поле = WHERE('$LedgerTransLines'.'$GeneralJournalAccountLines'.'LedgerDimension.Dimension'.'Main account and dimensions', '$LedgerTransLines'.'$GeneralJournalAccountLines'.'LedgerDimension.Dimension'.'Main account and dimensions'.Value.Code<>""): Список записей

И мапплю на модель это список
Transactions(Проводки):Список записей = @.'$GeneralJournalAccountFilter'
то при проверке ошибок нет, но при выполнении на каждую запись выдается ошибка
Вычисление выражения для пути "$LedgerDimension".
---LedgerDimension.Dimension/Main account and dimensions
------Элемент "LedgerDimension.Dimension" конфигурации "1" не найден.


Проверял и для других таблиц где есть поле типа LedgerDimension - результат тот же - если список получен функцией FILTER - то структура Финаналитики отрабатывает нормально; но если список получен функцией WHERE - то обращение к элементу Финаналитики приводит к ошибке во время выполнения с ничего не объясняющим сообщением.
Может кто-то сталкивался с такой ситуацией и знает возможность ее обойти?
Старый 29.08.2021, 09:58   #3  
axm2017 is offline
axm2017
Участник
 
1,765 / 293 (13) ++++++
Регистрация: 15.05.2017
А зачем обходить?
Вроде как ms, если не ошибаюсь, рекомендуется использовать filter вместо where.
Старый 29.08.2021, 12:12   #4  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
например мне нужно выбрать проводки по одному ваучеру и конкретному счету ГК (или нескольким счетам). Из GeneralJournalEntry выбираю записи по номеру ваучера и затем связанные (по полю GeneralJournalEntry) записи из GeneralJournalAccountEntry. Одним FILTER такую выборку сделать нельзя, т.к. LedgerDimension это RefRecId - поле не содержит значение MainAccount по которому надо фильтровать, а FILTER не допускает использование для фильтрации значения из другой таблицы, связанной через Relation. Поэтому приходится FILTER использовать для отбора записей из GeneralJournalAccountEntry, а уже потом WHERE для отбора по полю таблицы DimensionAttributeValueCombination, связанной по полю типа RefRecId с GeneralJournalAccountEntry. Т.е. FILTER позволяет фильтровать только по полю самой таблицы, а WHERE - и по полю связанной таблицы. И проверку выражение FILTER, где в условии используется поле другой таблицы, связанной по Relation, не проходит - выдается сообщение - Используйте WHERE.
Старый 29.08.2021, 22:39   #5  
axm2017 is offline
axm2017
Участник
 
1,765 / 293 (13) ++++++
Регистрация: 15.05.2017
Цитата:
Сообщение от Libovs Посмотреть сообщение
... FILTER не допускает использование для фильтрации значения из другой таблицы, связанной через Relation.. .
Достаточно одного предложения.
Интересно надо проверить.

Пример слишком сложный с проблемой разницы между where и filter, упростить бы как то, тем более как понимаю код разный в силу э предложения выше.

Последний раз редактировалось axm2017; 29.08.2021 в 22:42.
Старый 30.08.2021, 16:29   #6  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Не возьмусь утверждать, но вроде FILTER выполняется на SQL-сервере, а WHERE - в памяти на клиенте. Естественно, в первом случае производительность выше, поэтому там где возможно и рекомендуется использовать FILTER.
Старый 01.09.2021, 23:39   #7  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
А можно ли как-то фильтровать значения, выводимые в лукапе типа Входные параметры пользователя? Например, объявляю входной параметр Inventory с EDT = InventLocationId. В списке выводится все значения таблицы InventLocation. А надо, чтобы выводились склады только одного сайта, т.е. отфильтрованные по InventLocation.InventSiteId == "Site1". Это возможно?
Старый 02.09.2021, 10:06   #8  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от Libovs Посмотреть сообщение
А можно ли как-то фильтровать значения, выводимые в лукапе типа Входные параметры пользователя? Например, объявляю входной параметр Inventory с EDT = InventLocationId. В списке выводится все значения таблицы InventLocation. А надо, чтобы выводились склады только одного сайта, т.е. отфильтрованные по InventLocation.InventSiteId == "Site1". Это возможно?
Без программирования не получится, наверное? В обычной форме если декларативно добавить контрол точно так же ведь будет. Если без кода, а опять-таки декларативно, то придется создать View by Query (https://docs.microsoft.com/en-us/dyn...sed-on-a-query), добавить Extended Data Type и использовать там View в качестве источника данных.
Старый 02.09.2021, 23:29   #9  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Но тогда надо еще и параметр как-то передавать во View - значение для фильтра InventLocation.InventSiteId == параметр?
Старый 03.09.2021, 11:01   #10  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от Libovs Посмотреть сообщение
Но тогда надо еще и параметр как-то передавать во View - значение для фильтра InventLocation.InventSiteId == параметр?
Ах он еще и динамический... Тогда беру свое предложение обратно.
Старый 07.09.2021, 14:16   #11  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Можно ли собрать в один список переменное количество списков?
Например "верхний" список записи таблицы InventTransOrigin содержит 2 записи, с каждой из которых связаны 3 записи таблицы InventTrans.
$InventTransOrigin=FILTER(InventTransOrigin, InventTransOrigin.InventTransId=Value)
----$InventTrans=ALLITEMS(@.'<Relations'.InventTrans)

Нужно получить новый (одноуровневый) список всех транзакций из 6 записей.
По смыслу это функция LISTJOIN, но как написать выражение для объединения переменного количества одноименных ($InventTrans) списков - сообразить не могу. Это в принципе возможно?
Старый 07.09.2021, 14:40   #12  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Если на экспорт, то надо просто проходить по подчиненному списку, развернуть так сказать в обратную сторону:

File Line <-> InventTrans

Зачем отдельный объект для списка?

P.S. А, вот оно, ALLITEMSQUERY: https://docs.microsoft.com/en-us/dyn...-allitemsquery

Последний раз редактировалось EVGL; 07.09.2021 в 14:44.
За это сообщение автора поблагодарили: axm2017 (4).
Старый 07.09.2021, 15:32   #13  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Или ALLITEMS если ALLITEMSQUERY не транслируется в Query
За это сообщение автора поблагодарили: axm2017 (4).
Старый 07.09.2021, 21:52   #14  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Спасибо за помощь - на синтетическом тестовом примере получилось как надо, буду вставлять в реальный отчет.

И еще вопрос - можно ли получить значение Name/Label перечисления модели не из самого энама, а из
Входные пользовательские параметры перечисления модели данных?
Например есть сам энам BrandList и входной параметр BrandFilter. К обоим вычисляемые переменные
$FullBrandList:Вычисляемое поле = LISTOFFIELDS(BrandList)
$BrandList:Вычисляемое поле = LISTOFFIELDS(BrandFilter)
Нажмите на изображение для увеличения
Название: Enum1.jpg
Просмотров: 26
Размер:	99.4 Кб
ID:	13224
На ветку модели BrandList мапплю поле Name из первой и второй переменной - получается такой результат
Название: Enum2.jpg
Просмотров: 331

Размер: 68.6 Кб
В принципе я понимаю, почему так получается, но суть вопроса в том - если в лукапе BrandFilter я выбираю 1-е и 3-е значение энама (там включен выбор нескольких значений) как в получить строковые значения "Brand1" и "Brand3" для маппинга на модель в BrandList.Value?
Старый 20.09.2021, 14:21   #15  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Подскажите, а на что влияет выражение задаваемое в Изменить видимость для Входной параметр пользователя? Я не вижу никаких изменений в модели когда это выражение пустое или в нем задано какое-то условие.
Старый 20.09.2021, 23:56   #16  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Libovs Посмотреть сообщение
Подскажите, а на что влияет выражение задаваемое в Изменить видимость для Входной параметр пользователя? Я не вижу никаких изменений в модели когда это выражение пустое или в нем задано какое-то условие.
При запуске оно должно скрыть парамер если там false
Старый 11.10.2021, 23:36   #17  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Где-то встречал упоминание, что в ER есть возможность оценки производительности - показываются временные затраты на заполнение каждого узла модели. Подскажите, может есть какая-то статья или ролик с описанием/демонстрацией как пользоваться этой функцией? Где и что включить, нажать, посмотреть ...
Старый 12.10.2021, 18:06   #19  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Спасибо, почитаю.
Старый 25.12.2021, 19:16   #20  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Кажется, я нарвался на нерешаемую проблему в ER: будущий обязательный немецкий формат электронных счетов, он же индустриальный немецкий формат ZUGFeRD, он же индустриальный французский формат xFactur. В нем в PDF-файл вкладывается XML, т.е. ортогонально итальянскому.

В стандарте ER внутри элемента PDF могут быть страницы, поля, JSON, но не XML.

Есть идеи? Обработка в собственном https://docs.microsoft.com/en-us/dyn...le-destination ограничивается отсутствием библиотек для манипуляций с PDF.

Последний раз редактировалось EVGL; 25.12.2021 в 19:20.
За это сообщение автора поблагодарили: belugin (5).
Теги
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, время: 08:35.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.