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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.03.2019, 15:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,459 / 846 (79) +++++++
Регистрация: 28.10.2006
i-neti: Фреймворк Extensible Data Security (XDS) в Dynamics 365 Finance for Operations
Источник: https://i-neti.ru/?q=blog%2F589
==============




Фреймворк Extensible Data Security (XDS) - это особенность Dynamics 365 Finance and Operations и DAX 2012, которая позволяет расширить безопасность на уровне записей и ограничить доступ к таблицам с помощью политик. Эта особенность является улучшением безопасности на уровне записей, которая существовала в предыдущих версиях Dynamics AX.

Простыми словами, XDS размещает выражение WHERE (или ON) на любом SQL запросе SELECT, UPDATE, DELETE или INSERT, основываясь на параметрах из другой связанной таблицы.



подробнее



Источник: https://i-neti.ru/?q=blog%2F589
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
Старый 13.03.2019, 21:20   #2  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
То что перевели, это хорошо, а насколько эта фича реально используется на проектах. Еще в 12 версии по моему очень тяжеловесно себя вела на больших объемах данных. Или область её применения исключительно справочники?
__________________
Axapta book for developer
Старый 13.03.2019, 21:36   #3  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Работает и альтернатив особо нет. Мне кажется самый ходовой реквест это запретить редактирование или спрятать заказы на продажу по складу, фин аналитике или ещё по какому полю для группы пользователей. Хотя на одном проекте клиент захотел вести 2 бизнеса в одной компании и там все порезали по фин аналитике. Нужно было 2 компании и не мучатся, но... Короче работает и особо не тормозит. Но все зависит от сложности запроса которые вы напишите. Иногда удобно набивать временную табличку и ограничивать ею.она может жить с сессией клиента и тормозит только первый раз когда набивается
За это сообщение автора поблагодарили: Ivanhoe (3), MikeR (-3).
Старый 14.03.2019, 00:30   #4  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от skuull Посмотреть сообщение
Работает и альтернатив особо нет. Мне кажется самый ходовой реквест это запретить редактирование или спрятать заказы на продажу по складу, фин аналитике или ещё по какому полю для группы пользователей.
Почему нет альтернатив? Их как минимум несколько.
Применять же XDS на заказы или закупки, что обычно миллионы записей, мне кажется совсем неразумным.

Что мешает к примеру, в зависимости от текущего пользователя добавлять свои собственные фильтры на форме в executeQuery.
В D365FO это как я понимаю "OnQueryExecuting". Конечно если полиси на программирование вообще то дело другое.

Оно конечно "a great dramatic closing for your demos" но на миллионах записей это безумие на мой взгляд.
Цитата:
XDS is one of the sparkling features in Dynamics. It takes you beyond the forms achieving the ultimate data control. It is one of the key features that captivate the customer heart and mind. It is a great dramatic closing for your demos.

https://community.dynamics.com/ax/b/...-and-operation
За это сообщение автора поблагодарили: MikeR (5).
Старый 14.03.2019, 04:30   #5  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Мешает то что полиси вы накладываете на таблицу, а не на форму, что избавляет вас от необходимости модифицировать много форм и отчетов. А по факту что так что так дополнительный селект (если мы к примеру говорим о фин аналитиках) А в 7ке получаеться гибче так как вы в UI можете повесить полиси через контекст на роль или снять, а вам приедться еще и свой костыль лепить чтобы этим управлять, вообщем это просто фреймворк который удобней чем ваши костыли котрые еще надо написать.
Старый 14.03.2019, 06:14   #6  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
С точки зрения SQL то - это по сути полный скан таблицы заказов и аналитик при открытии формы(если говорить о фильтре на заказах по аналитикам), т.е. недостаток в том что время будет линейно расти и это будет работать до какого-то момента.
ну т.е. в транзакционные таблицы это надо добавлять очень осторожно
За это сообщение автора поблагодарили: MikeR (5).
Старый 14.03.2019, 06:47   #7  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
885 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от Blog bot Посмотреть сообщение
Простыми словами, XDS размещает выражение WHERE (или ON) на любом SQL запросе SELECT, UPDATE, DELETE или INSERT, основываясь на параметрах из другой связанной таблицы.
На Select - понятно.
На остальное-то зачем ?
Никакой бесовщины в сим деянии не ощущается ?
__________________
Мы летаем, кружимся, нагоняем ужасы ...
За это сообщение автора поблагодарили: ax_mct (2).
Старый 14.03.2019, 06:58   #8  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от trud Посмотреть сообщение
С точки зрения SQL то - это по сути полный скан таблицы заказов и аналитик при открытии формы(если говорить о фильтре на заказах по аналитикам), т.е. недостаток в том что время будет линейно расти и это будет работать до какого-то момента.
ну т.е. в транзакционные таблицы это надо добавлять очень осторожно
Альтернативы? Если задача стоит показывать определенным группам пользователей заказы с определённой аналитикой. А другим показывать все но не давать редактировать по аналитике.

Последний раз редактировалось skuull; 14.03.2019 в 07:24.
Старый 14.03.2019, 09:56   #9  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Добавлять поля в заказ и накладывать фильтры/строить индексы по этим полям. Собственно как работает поле компания
Старый 14.03.2019, 10:47   #10  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,890 / 5647 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от trud Посмотреть сообщение
Добавлять поля в заказ и накладывать фильтры/строить индексы по этим полям. Собственно как работает поле компания
Ну дык те же самые фильтры удобнее добавлять с помощью XDS. Вообще этот механизм ни плох и ни хорош сам по себе. Он просто принудительно добавляет условие в запросы по некоторым таблицам. Если условие безумное, индексов нету или сами структуры данных безумны (как в случае новой ГК), то фильтры будут тормозить не зависимо от того, приделаны они с помощью XDS или в ручную, с помощью ковыряния в исходном коде формы.
За это сообщение автора поблагодарили: skuull (3).
Старый 14.03.2019, 11:28   #11  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Я так понимаю, есть кто использует и у них особо вопросов нету к XDS.

А все кто против - реальные кейсы можете описать, когда начали использовать и отказались? Или теоретики?
__________________
Ivanhoe as is..
За это сообщение автора поблагодарили: skuull (3).
Старый 14.03.2019, 11:58   #12  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от trud Посмотреть сообщение
Добавлять поля в заказ и накладывать фильтры/строить индексы по этим полям. Собственно как работает поле компания
Так конкретный же кейс, фильтр по фин аналитике на строке заказа, какие фильтры и индексы будем добалять? Причем ребята с ролью "А" не видят подразделение "Б", а роль "Б" не видит "А" и не тоько на одной конкретной форме заказа, а вообще нигде, включая отчеты.
Старый 14.03.2019, 12:00   #13  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
@MikeR, разобрался в чем ?
Старый 14.03.2019, 13:08   #14  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
А все кто против - реальные кейсы можете описать, когда начали использовать и отказались? Или теоретики?
Ну я встречал только негативные последствия(хотя тут наверное ошибка выжившего, когда все хорошо мне об этом не расскзаывали), кейсы - это фильтр на приджойненную таблицу

Цитата:
Сообщение от skuull Посмотреть сообщение
Так конкретный же кейс, фильтр по фин аналитике на строке заказа, какие фильтры и индексы будем добалять? Причем ребята с ролью "А" не видят подразделение "Б", а роль "Б" не видит "А" и не тоько на одной конкретной форме заказа, а вообще нигде, включая отчеты.
Как раз один из негативных случаев. Решать подобные вещи очень сложно - т.е. в итоге клиент перетасовал роли и подразделения таким образом чтобы можно было фильтровать по полю из шапки заказа(первоначально была строка), ну и добавили поле в шапку. Хотя в первый год все работало замечательно
А старый Record level security остался в D365?
Старый 14.03.2019, 13:37   #15  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,890 / 5647 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от trud Посмотреть сообщение
Как раз один из негативных случаев. Решать подобные вещи очень сложно - т.е. в итоге клиент перетасовал роли и подразделения таким образом чтобы можно было фильтровать по полю из шапки заказа(первоначально была строка), ну и добавили поле в шапку. Хотя в первый год все работало замечательно
А старый Record level security остался в D365?
В такой ситуации, я бы аналитики продублировал в скрытые поля в таблице заказов или их строк, построил бы по ним индексы, обновлял бы их в update() или insert() на основании значений аналитик, ну и добавил бы эти поля в XDS.
P.S. Старого RLS не было уже в DAX2012 по моему. В целом - мне его нисколько не жалко. XDS в DAX2012 иногда подлгюкивал на моей памяти, но он все равно был намного более стабильным и работоспособным чем RLS.
За это сообщение автора поблагодарили: EVGL (2).
Старый 14.03.2019, 13:53   #16  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от fed Посмотреть сообщение
В такой ситуации, я бы аналитики продублировал в скрытые поля в таблице заказов или их строк, построил бы по ним индексы, обновлял бы их в update() или insert() на основании значений аналитик, ну и добавил бы эти поля в XDS
Так аналитика изначально была в строках(а форма заказов отображает шапки). Т.е. заказ показывается пользователю если есть хотя бы одна строка из того чем его подразделение торгует. Я не смог придумать как такое решить индексами и как вообще технически сделать подобную задачу. т.е. на каких-то объемах это просто начало тормозить. можно наверное как-то поиграться с материлизованными вью было
Старый 14.03.2019, 13:55   #17  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от trud Посмотреть сообщение
Ну я встречал только негативные последствия(хотя тут наверное ошибка выжившего, когда все хорошо мне об этом не расскзаывали), кейсы - это фильтр на приджойненную таблицу


Как раз один из негативных случаев. Решать подобные вещи очень сложно - т.е. в итоге клиент перетасовал роли и подразделения таким образом чтобы можно было фильтровать по полю из шапки заказа(первоначально была строка), ну и добавили поле в шапку. Хотя в первый год все работало замечательно
А старый Record level security остался в D365?
А кто говорит что легко? XDS самый простой вариант, с токи зрения реализации даже в 2012, а с екстеншенами в 365 цены ему нет. Как уже говорили выше, тормозит будет все с разной степенью тормознутости и к сожалению клиента не всегда удаётся переубедить.

RLS был в 2012, просто был не рекомендуемый . В 365 вроде прибили.
Старый 14.03.2019, 14:08   #18  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,890 / 5647 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от trud Посмотреть сообщение
Так аналитика изначально была в строках(а форма заказов отображает шапки). Т.е. заказ показывается пользователю если есть хотя бы одна строка из того чем его подразделение торгует. Я не смог придумать как такое решить индексами и как вообще технически сделать подобную задачу. т.е. на каких-то объемах это просто начало тормозить. можно наверное как-то поиграться с материлизованными вью было
Ну при таком раскладе, надо было бы заводить отдельную таблицу с со списком имеющихся подразделений по заказу и при любом обновлении строки заказа, эту табличку обновлять. Ну а потом где-то в XDS прописывать exists join между заказом и этой таблицей. (Хотя честно говоря, я уже не помню как это делать. Я этим XDS пользовался всего пару раз и году в 2014-2015).
Старый 14.03.2019, 14:23   #19  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от fed Посмотреть сообщение
Ну при таком раскладе, надо было бы заводить отдельную таблицу с со списком имеющихся подразделений по заказу и при любом обновлении строки заказа, эту табличку обновлять. Ну а потом где-то в XDS прописывать exists join между заказом и этой таблицей.
Так я о том и говорю, что exists join где условие накладывается на привязанную таблицу - это по сути полный скан таблицы заказов при открытии формы(т.е. ты находишь сначала по индексу записи в фильтрующей таблице, потом ищешь все заказы которые под это попадают(так так на формах обычно сортировка по коду заказа), сортируешь их, и выводишь первые 10. Это отлично работает на малых объемах, но начиная с сотни тысяч уже тормозит и никакими индексами это не победить
Старый 14.03.2019, 14:33   #20  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,890 / 5647 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от trud Посмотреть сообщение
Так я о том и говорю, что exists join где условие накладывается на привязанную таблицу - это по сути полный скан таблицы заказов при открытии формы(т.е. ты находишь сначала по индексу записи в фильтрующей таблице, потом ищешь все заказы которые под это попадают(так так на формах обычно сортировка по коду заказа), сортируешь их, и выводишь первые 10. Это отлично работает на малых объемах, но начиная с сотни тысяч уже тормозит и никакими индексами это не победить
Это не обязательно полный скап таблицы заказов при открытии формы Сиквел может оказаться достаточно умным чтобы сначала отобрать записи в этой дополнительной таблице и потом уже результат заджойнить через nested look к таблице заказов. Более того - он может в этой дополнительнойтаблице отобрать первые 10 или 20 записей по нужному подразделению и потом их быстренько по кластерному ключу приджойнить nested loop к таблице заказов. Ну еще вариант - добавить в шапку заказа 10 или 15 полей с кодами подразделений и по всем им построить индексы. Вариант не особо блестящий, но тоже может сработать.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
stoneridgesoftware: Managing Product Safety Data Sheets in Dynamics 365 for Finance & Operations Blog bot DAX Blogs 0 29.03.2018 02:28
atinkerersnotebook: Creating New Customer Notifications for Dynamics 365 for Operations using Flow and the Common Data Service Blog bot DAX Blogs 0 15.12.2016 22:12
NAV Team: Upgrading from Microsoft Dynamics NAV 2009 R2 or Microsoft Dynamics NAV 2009 SP1 to Microsoft Dynamics NAV 2015 Blog bot Dynamics CRM: Blogs 0 23.02.2015 13:00
NAV Team: How to: Set up your Microsoft Dynamics NAV installation for Single Sign-on with Office 365 using Windows PowerShell Blog bot Dynamics CRM: Blogs 0 19.12.2013 15:10
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 14 Blog bot Dynamics CRM: Blogs 0 12.07.2013 07:13
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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