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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.10.2021, 17:20   #1  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Хочу странного. В Аксе
Всего-то навсего:

select count(zzz) from
(
select count(recid) as 'zzz' from bankAccountTable
where bankAccountTable.PaymOrderNumSeqId_W = 'ПП123'
group by dataAreaId
) XXX

Цель - узнать кол-во компаний в Аксе, в которых дублируется наименование номерной серии, на основании которой нумеруются Платежные поручения.

Передается конкретное имя номерной серии, в данном случае - "ПП123".

Вопрос: а как бы так в Аксапте? DAX2009, да.
__________________
Best Regards,
Roman
Старый 08.10.2021, 18:44   #2  
Pandasama is offline
Pandasama
Участник
 
457 / 134 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
А обязательно одним запросом? Операция на вид разовая, т.е. скорость вроде сильно не нужна.
Перебрать компании да посчитать
Старый 08.10.2021, 19:59   #3  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Очень желательно. Операция не разовая, идет копирование (поштучно) банковских счетов из компании в компанию, операция выполняется для каждого копируемого счета...

Кстати, там с SQL-запросе (неявно) присутствует еще и crosscompany )
__________________
Best Regards,
Roman

Последний раз редактировалось RVS; 08.10.2021 в 20:02.
Старый 08.10.2021, 20:37   #4  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Сначала сделать вьюшку для
X++:
select PaymOrderNumSeqId_W, dataAreaId, count(recid) as 'zzz' from bankAccountTable
group by dataAreaId, PaymOrderNumSeqId_W
а потом
X++:
select count(zzz) where PaymOrderNumSeqId_W = 'ПП123'
по этой вьюшке? Это быстрый набросок, без оптимизации.
За это сообщение автора поблагодарили: RVS (3).
Старый 08.10.2021, 20:58   #5  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Спасибо за наводку )

Сделал, проверил. Вьюшка, насколько я понимаю, работает в пределах текущей компании Аксы (поправьте, коли заблуждаюсь). А нужен именно crosscompany запрос.

Смысл этой всей кото-Васии примерно такой: если код номерной серии задействован в нескольких Банковских счетах в одной компании Аксы - это не криминал.

Если такой же код задействован Банковских счетах в двух или более компаниях Аксы - вот это неприятно.
__________________
Best Regards,
Roman

Последний раз редактировалось RVS; 08.10.2021 в 21:13.
Старый 08.10.2021, 21:48   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от RVS Посмотреть сообщение
Вьюшка, насколько я понимаю, работает в пределах текущей компании Аксы (поправьте, коли заблуждаюсь). А нужен именно crosscompany запрос.
В Query на сколько я помню можно включить crosscompany. И уже на основании такого Query сделать View
Старый 08.10.2021, 21:54   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Ха. Не тут то было. Вот так оно работает
https://docs.microsoft.com/ru-ru/dyn...ries-for-views
Старый 08.10.2021, 22:30   #8  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Все действительно так, как описано (свойство AllowCrossCompany - не работает), и все понятно. Кроме вот этого:

"To return cross-company results from a view, you need to use the crossCompany keyword on the select statement that reads from the view"

Вот не пойму - куда этот select statement воткнуть-то? (((
__________________
Best Regards,
Roman
Старый 08.10.2021, 22:46   #9  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от RVS Посмотреть сообщение
Вот не пойму - куда этот select statement воткнуть-то? (((
Видимо речь про тот select, который from View

Скорее всего включение AllowCrossCompany добавляет в выборку информацию из всех компаний, а вот какие из этих компаний будут отданы при конкретном запросе к этой выборке решится при попытке эту выборку получить. Тут же и права конкретного пользователя на доступ к компаниям будут учтены
Старый 10.10.2021, 02:20   #10  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Поскольку по работе сейчас много делаю на прямом SQL то и первая мысль
зачем мучиться с AOT когда можно прямой T-SQL запустить.

Скопипастил из интернета код ниже.

X++:
public static server void main(Args _args)
{
     Connection      connection;
     Statement       statement;
     str             query;
     Resultset       resultSet;
     ;

     // create connection object
     connection = new Connection();

     // create statement
     statement = connection.createStatement();

     // Set the SQL statement
     query = 'select name from CustTable';

     // assert SQL statement execute permission
     new SqlStatementExecutePermission(query).assert();

     // when the query returns result,
     // loop all results for processing
     //BP Deviation documented
     resultSet = statement.executeQuery(query);

     while(resultSet.next())
     {
         // do something with the result
         info(resultSet.getString(1));
     }

     // limit the scope of the assert call
     CodeAccessPermission::revertAssert();
}
За это сообщение автора поблагодарили: Logger (1).
Старый 10.10.2021, 08:19   #11  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Сообщение от ax_mct Посмотреть сообщение
...можно прямой T-SQL запустить...
Угу. В который Акса услужливо добавит условие where dataAreaId = 'ZZZ'.

Где ZZZ - компания, из которой запускаем запрос. Обойти это я не умею.

Еще раз - хочется запрос по всем компаниям, crosscompany
__________________
Best Regards,
Roman
Старый 10.10.2021, 10:12   #12  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от RVS Посмотреть сообщение
Угу. В который Акса услужливо добавит условие where dataAreaId = 'ZZZ'.
Куда добавит? В текст SQL запроса, который вы написали вручную? Нет, не добавит.

Используя прямой запрос к БД, вы берёте на себя всю ответственность за результат. Поэтому в общем случае не рекомендуется использовать этот механизм.
За это сообщение автора поблагодарили: RVS (3).
Старый 10.10.2021, 12:17   #13  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Куда добавит? В текст SQL запроса, который вы написали вручную? Нет, не добавит
Упс... а точно - не добавляет )))

Все работает, спасибо.
__________________
Best Regards,
Roman
Старый 11.10.2021, 16:59   #14  
astralsun is offline
astralsun
Участник
 
16 / 19 (1) ++
Регистрация: 17.04.2018
ещё вариант

while select count(recid) from bankAccountTable
where bankAccountTable.PaymOrderNumSeqId_W = 'ПП123'
group by dataAreaId
{
tmptable.count = bankAccountTable.recId;
tmptable.insert();
}

select count(recid) from tmptable;
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как лучше сделать обход дерева AOT? Рекурсивный TreeNode? цикл по UtilElement? Еще как-то? Хочу найти все объекты с заданным Property mazzy DAX: Программирование 9 05.12.2016 13:30
это одна из идей, которую я хочу пропихнуть в АХ 2012. Logger DAX: Программирование 26 20.05.2011 02:35
Хочу зеленый калькулятор, используя WinApi Pustik DAX: Программирование 5 03.02.2011 14:33
РБП выбытие хочу но немогу _Borman_ DAX: Функционал 1 20.09.2007 19:36
Хочу чтобы введенные в грид данные не сразу попадали в базу.... ATimTim DAX: Программирование 8 15.06.2004 16:52

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 05:20.