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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.12.2019, 18:58   #261  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
В чем отличие функций FILTER и WHERE?

Пишу формулу
FILTER('$CompanyInfo'.'$DirPartyLocation', $CompanyInfo'.'$DirPartyLocation'.IsPrimaryTaxRegistration=NoYes.Yes)
При сохранении не проходит валидация
Ошибка проверки: Выражение списка функции FILTER недоступно для запросов.
Заменяю FILTER на WHERE
WHERE('$CompanyInfo'.'$DirPartyLocation', $CompanyInfo'.'$DirPartyLocation'.IsPrimaryTaxRegistration=NoYes.Yes)
Формула сохряняется. Нажимаю «Проверить» - получаю предупреждение

Использование функции "FILTER" для выражения более предпочтительно, чем "WHERE", с точки зрения производительности.

Нажимаю «Исправить» - ER заменяет WHERE на FILTER.
Разные условия валидации в конструкторе формул и конструкторе форматов?
Старый 27.12.2019, 23:45   #262  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Libovs Посмотреть сообщение
В чем отличие функций FILTER и WHERE?
см справку:
https://docs.microsoft.com/en-us/dyn...on#usage-notes


Цитата:
Разные условия валидации в конструкторе формул и конструкторе форматов?
Скорее всего какая-то ошибка по идее должно быть одно и то же условие для одной и той же формулы..
Старый 28.12.2019, 11:59   #263  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Цитата:
Сообщение от belugin Посмотреть сообщение
Скорее всего какая-то ошибка по идее должно быть одно и то же условие для одной и той же формулы..
Видимо так. По крайней мере после замены WHERE на FILTER (чего не позволял валидатор формы конструктора формул) конфигурация отрабатывает - никаких сбоев в процессе выполнения не происходит.
Старый 28.12.2019, 12:41   #264  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Цитата:
Сообщение от belugin Посмотреть сообщение
Спасибо, теперь вроде бы понятно, детали уже придут с опытом использования.
А нет ли хотя бы такого же уровня описания типов источников данных (элементов лукапа Добавить корень / Добавить)? На этом ресурсе я не нашел соответствующего раздела.
Старый 28.12.2019, 14:19   #265  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Есть перечисление модели данных
Нажмите на изображение для увеличения
Название: FA13.jpg
Просмотров: 143
Размер:	95.4 Кб
ID:	12527
И входной параметр пользователя типа перечисление модели данных
SelectedType(Тип заказа):SalesType Значение перечисления
Например, пользователь выбрал значение <Sales | Заказ на продажу>.
Можно ли каким-то выражением ER получить в виде текстовой строки значение метки выбранного элемента перечисления, т.е. «Заказ на продажу»? Что-то типа
$TypeValue = SelectedType.Label
Или единственный способ это писать CASE на все элементы перечисления
$TypeValue = CASE (SelectedType,
SalesType.DEL_Blanket, “Договор продажи”,
SalesType.Sales, “Заказ на продажу”, …)

т.е. каждый раз писать формулу со всеми элементами перечисления (а если их 3-4 десятка и используется в нескольких формулах)?
Старый 29.12.2019, 11:38   #266  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
По опыту, "...единственный способ - это писать CASE на все элементы перечисления"
Старый 30.12.2019, 18:40   #267  
axm2017 is offline
axm2017
Участник
 
1,884 / 295 (13) ++++++
Регистрация: 15.05.2017
Цитата:
Сообщение от EVGL Посмотреть сообщение
По опыту, "...единственный способ - это писать CASE на все элементы перечисления"
DictEnum и ко вполне вроде живы с их помощью наверное можно обойтись и без case.
Буду у компа попробую.
Старый 30.12.2019, 23:26   #268  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от axm2017 Посмотреть сообщение
DictEnum и ко вполне вроде живы с их помощью наверное можно обойтись и без case.
Буду у компа попробую.
"перечисление модели данных" не рефлектируется DictEnum, а "живет" само по себе.
Старый 31.12.2019, 10:22   #269  
axm2017 is offline
axm2017
Участник
 
1,884 / 295 (13) ++++++
Регистрация: 15.05.2017
Цитата:
Сообщение от EVGL Посмотреть сообщение
"перечисление модели данных" не рефлектируется DictEnum, а "живет" само по себе.
Ок. Смутило DEL_Blanket в enum, посчитал что это не модельный соответственно.


Чисто из спортивного интереса отмечу что что-то подобное (привел ниже) вполне работает, выдавая метку (хотя возможны ньюансы так, как полноценно не тестил).

TestModelEnum - Enum в модели
TestEnum - данный enum в маппинге.

X++:
FIRSTORNULL(
WHERE(ERDataContainerDescriptorItemTable,
AND(ERDataContainerDescriptorItemTable.'>Relations'.Parent.Name = "TestModelEnum",
GETENUMVALUEBYNAME(
TestEnum,
 ERDataContainerDescriptorItemTable.Name) = 
TestEnum.Test2))).Label
За это сообщение автора поблагодарили: EVGL (3).
Старый 31.12.2019, 14:05   #270  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Не проверял, но просто идея:
1. Превратить enum datasource в список
X++:
$calculatedField1 = LIST(enumDataSourceName)
2. Натравить на него источник данных table metadata
3. Из него выбирать метаданные по имени поля, совпадающего с именем элемента энама

X++:
WHERE(tableMetadata.Fields, GETENUMVALUEBYNAME(TestEnum, tableMetadata.Fields.Name) = myEnumValue).Description
Старый 08.01.2020, 12:49   #271  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Где-то в начале этой темы было предложение от belugin высказывать пожелания по совершенствованию ER. Если это еще актуально, то в контексте обсуждавшегося вопроса такое предложение:

реализовать внутренний объект ER (функция или источник данных), который бы позволил один раз сопоставить перечисление АХ с перечислением модели данных и затем при маппинге источник данных - модель позволял автоматически связывать поле записи с узлом модели.
Сейчас кнопка "Связать" не активируется, если с одной стороны энам - нужно только писать формулу (CASE или возможно какой-то из предложенных выше вариантов - надо пробовать).

Как мне кажется, это вполне реализуемо: если при сопоставлении двух энамов (АХ и модели) объект будет сохранять "в себе" их идентификаторы, то при маппинге модели, если слева выбрано поле записи типа энам АХ и справа выбран узел типа энам модели и для этой пары энамов уже определено сопоставление - то активируется кнопка "Связать" и не надо писать CASE.

А при маппинге формата - "связывание" ячейки/тега с узлом модели типа энам должно реализовывать вывод в выходной файл метки текущего значения узла модели без необходимости написания очередного CASE.
За это сообщение автора поблагодарили: EVGL (3), belugin (5).
Старый 08.01.2020, 13:32   #272  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Для этого обычно сюда надо писать:
https://experience.dynamics.com/idea...1-5065f38b21f1
Старый 08.01.2020, 17:17   #273  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Цитата:
Сообщение от EVGL Посмотреть сообщение
Для этого обычно сюда надо писать:
https://experience.dynamics.com/idea...1-5065f38b21f1
Там было предложение писать в Тимсе разработчикам, но модератор? предложил не "уводить" на другой ресурс и обсуждать здесь - если я ничего не путаю.
Старый 09.01.2020, 08:49   #274  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Libovs Посмотреть сообщение
реализовать внутренний объект ER (функция или источник данных), который бы позволил один раз сопоставить перечисление АХ с перечислением модели данных и затем при маппинге источник данных - модель позволял автоматически связывать поле записи с узлом модели.
Можно в принципе подумать над тем, чтобы поддержать Ax Enum в качестве типа параметра для calculated field. Тогда можно будет написать Case 1 раз и переиспользовать его.

Цитата:
А при маппинге формата - "связывание" ячейки/тега с узлом модели типа энам должно реализовывать вывод в выходной файл метки текущего значения узла модели без необходимости написания очередного CASE.
Надо подумать. В качестве ворэраунда могу предложить передавать в модели текст вместо или вместе с enum.

На такое был запрос, когда ER еще не поддерживал отчеты для людей в XLSX а только отчеты электронных болванов в XML, но было отвергнуто, так как в конкретном случае там нужно было выводить специфический, определенный форматом текст, соответсвтенно этот текст должен задаваться на стороне конкретного формата - у другого формата он был бы другой.
Старый 09.01.2020, 11:43   #275  
mnt_dx is offline
mnt_dx
Участник
Axapta Retail User
Лучший по профессии 2014
 
1,747 / 188 (10) ++++++
Регистрация: 17.02.2011
Адрес: К Северу через Северо-Запад
Подскажите, пожалуйста, что делает экспорт меток в репортинге?
Нажмите на изображение для увеличения
Название: Снимок экрана 2020-01-09 в 11.42.04.png
Просмотров: 301
Размер:	111.1 Кб
ID:	12535
Старый 09.01.2020, 12:00   #276  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от mnt_dx Посмотреть сообщение
Подскажите, пожалуйста, что делает экспорт меток в репортинге?
Вложение 12535
Экспортирует метки из конфигурации в отдельный файл, чтобы можно было отдать их переводчикам.
Старый 09.01.2020, 12:11   #277  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Цитата:
Сообщение от belugin Посмотреть сообщение
На такое был запрос, когда ER еще не поддерживал отчеты для людей в XLSX а только отчеты электронных болванов в XML, но было отвергнуто, так как в конкретном случае там нужно было выводить специфический, определенный форматом текст, соответсвтенно этот текст должен задаваться на стороне конкретного формата - у другого формата он был бы другой.
Мне думается эти возможности можно непротиворечиво совместить. Если в формате "напрямую" связываешь узел модели типа энам с ячейкой xls | тегом xml - выводится метка (тип строка) текущего значения.
И это не отрицает возможности не связывать (если нужен специфический текст) ячейку с узлом, а в таком случае написать формулу:
Ячейка = CASE (Узел,
энам.1, "текст1",
энам.2, "текст2", ...)
Старый 09.01.2020, 12:37   #278  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
И такое предложение для обсуждения:

в функцию STRINGJOIN добавить 4-й (необязательный - по умолчанию = false) параметр типа boolean. Если установлен в true - выходная строка формируется только из уникальных значений поля.

Например, формируется транспортная накладная из сотни записей; в записи есть поле Склад.Нужно в "шапке" вывести список складов, на которые развозятся товары - из может быть всего 2-3, а не сотня.
Старый 09.01.2020, 13:35   #279  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Libovs Посмотреть сообщение
в функцию STRINGJOIN добавить 4-й (необязательный - по умолчанию = false) параметр типа boolean. Если установлен в true - выходная строка формируется только из уникальных значений поля.
На исходный список сожно натравить groupby и тогда он сделает уникльные значения
Старый 10.01.2020, 11:28   #280  
Libovs is offline
Libovs
Участник
 
224 / 53 (2) ++++
Регистрация: 26.03.2018
Цитата:
Сообщение от belugin Посмотреть сообщение
На исходный список сожно натравить groupby и тогда он сделает уникльные значения
Спасибо за подсказку - получилось. Сначала группировка по этому полю, а потом STRINGJOIN по grouped дали нужный результат.
Теги
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, время: 20:08.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.