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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.01.2016, 16:05   #1  
Morpheus is offline
Morpheus
Участник
Аватар для Morpheus
Соотечественники
 
602 / 167 (7) ++++++
Регистрация: 30.03.2005
Адрес: Київ-København-Düsseldorf
AX 2012 R2 CU7 CrossCompany запросы к SpecTrans (SaveDataPerCompany = No) в стандартном коде
В классе SpecTransManager (используется при сопоставлениях/реверсировании сопоставлений транзакций клиентов/поставщиков) встречаются запросы вида
X++:
while select crossCompany specTrans
              where specTrans.SpecCompany == _specCompany &&
            specTrans.SpecTableId == _specTableId &&
            specTrans.SpecRecId == _specRecId
Таблица SpecTrans не хранит данные в разрее компаний, т.к. для свойства SaveDataPerCompany установлено значение No.

В случае выполнения такого запроса пользователем с ограниченными правами, запрос не возвращает записей. Удаление ключевого слова crossCompany из запроса решает проблему.

Поделитесь идеями, в чем может быть причина?
Старый 18.01.2016, 16:12   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
тоже напоролся на подобное.
в итоге, пока работаю с таблицей specTrans только через класс SpecTransManager и его друзей (типа CustVendOpenTransManager)

это не очень хорошо с точки зрения производительности. но зато надежно.

мне тоже интересно, "в чем может быть причина"
За это сообщение автора поблагодарили: gl00mie (1).
Старый 18.01.2016, 17:03   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Возможно, использование crosscompany приводило к принудительной проверке прав ядром и делалось это как-то криво.

А если обрамить этот запрос
X++:
unchecked( Uncheck::TableSecurityPermission )
{
}
то помогает ?
За это сообщение автора поблагодарили: Morpheus (3).
Старый 18.01.2016, 17:33   #4  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
В 2009 вроде были добавлены опционально включаемые платежи кросс-компани для единого казначейства, возможно, ноги оттуда растут?
__________________
Ivanhoe as is..
Старый 18.01.2016, 18:50   #5  
Morpheus is offline
Morpheus
Участник
Аватар для Morpheus
Соотечественники
 
602 / 167 (7) ++++++
Регистрация: 30.03.2005
Адрес: Київ-København-Düsseldorf
Цитата:
Сообщение от Logger Посмотреть сообщение
Возможно, использование crosscompany приводило к принудительной проверке прав ядром и делалось это как-то криво.

А если обрамить этот запрос
X++:
unchecked( Uncheck::TableSecurityPermission )
{
}
то помогает ?
Помогло! Мне теперь вручную весь стандартный код патчить?

Попробую права явно на таблицу выдать.
Старый 18.01.2016, 19:04   #6  
Morpheus is offline
Morpheus
Участник
Аватар для Morpheus
Соотечественники
 
602 / 167 (7) ++++++
Регистрация: 30.03.2005
Адрес: Київ-København-Düsseldorf
Цитата:
Сообщение от Morpheus Посмотреть сообщение
Попробую права явно на таблицу выдать.
Помогло! Необходимо дать пользователю права на таблицу SpecTrans, чтобы crossCompany запросы, включающие SpecTrans, правильно работали.
За это сообщение автора поблагодарили: mazzy (2).
Старый 18.01.2016, 21:21   #7  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Я бы лучше пропатчил код.
Это проще.
Сделал один раз и забыл.
А права надо постоянно в актуальном состоянии поддерживать. Чуть забыл - и вылезли старые глюки.
Ненадежно.

Да и нафига на эту таблицу права ? Все равно пользователь непосредственно в нее сам не пишет, а пишет в нее код, который дергается по кнопка и по едит методу. Значит это явно бага в коде, которую вы просто пропатчите и все.
Старый 19.01.2016, 08:38   #8  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
В 2012 в таблицу SpecTrans (возможно и ранее) добавили поле RefCompany и создали группу таблиц CentralizedPayments, в которую входит SpecTrans. По задумке, если компании входят в холдинг, это позволяет привязать платежи к встречным операциям разных компаний, разрешая учитывать оплаты по "центральной" бухгалтерии в дочерних структурах. Т.е. в 2012, как я понял, надо создать виртуальную компанию для всех дочерних и добавить туда группу таблиц.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 19.01.2016, 09:49   #9  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Мне кажется то что вы говорите верно для 2009-й аксапты.
А для 2012-й это особого смыла не имеет, так как табличка уже не хранится в разрезе компаний.

Последний раз редактировалось Logger; 19.01.2016 в 10:12. Причина: исправил опечатки
За это сообщение автора поблагодарили: mazzy (2).
Старый 19.01.2016, 10:48   #10  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
Мне кажется то что вы говорите верно для 2009-й аксапты.
А для 2012-й это особого смыла не имеет, так как табличка уже не хранится в разрезе компаний.
Бизнес-сценарий:
1. Клиент приобретает товар в двух филиалах компании (отдельный счет в каждой).
2. Реквизиты для оплаты у каждого филиала указаны одинаковыми и относятся к головному филиалу.
3. Клиент, чтобы уменьшить расходы по банковскому переводу, формирует платежное с указанием двух заказов.
4. Головной филиал проводит приходный платеж по выписке (если бы заказ был один, можно было бы конкретную компанию указать в журнале платежей).
5. Финансовые специалисты в каждом из филиалов запускают сопоставление открытых операций и должны видеть сумму к сопоставлению (если не делать общую компанию, то они не смогут выбрать оплату).

(специалисты клиента очень часто говорят, что оплата относится только к заказам одной компании, но при прямом вопросе, может ли быть оплата за заказы одного клиента/поставщика по разным филиалам, отвечают: "Редко, но бывает")
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 19.01.2016, 11:00   #11  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Не совсем понял к чему вы это написали.
Я не говорю, что интеркомпани сопоставление не нужно.
Я про технику написал. Как это реализовано в разных версиях. Для specTrans в 2012-й - нет нужды запихивать в виртуальную компанию. Хотя возможно остальные таблички из указанной вами коллекции нужно.
Старый 19.01.2016, 11:25   #12  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
А в стандартных ролях прав на spectrans нет? Просто это не единственное место в 2012 которое будет некорректно работать при неполных правах.
__________________
Ivanhoe as is..
Старый 19.01.2016, 11:40   #13  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
Для specTrans в 2012-й - нет нужды запихивать в виртуальную компанию.
Я в изысках кода, конечно, мало понимаю, но в форме сопоставления открытых проводок идет вызов класса SpecTransManager, в котором устанавливается фильтр по компании "сопоставления". Может я и ошибаюсь, но, мне кажется, объединение головной и дочерних компаний в одну виртуальную с указанной группой таблиц позволит видеть консолидированные данные при сопоставлениях.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: Form created in e.g. AX 2012 RTM or AX 2012 R2 with ManagedHost control on its design fails to open on AX 2012 R3 Blog bot DAX Blogs 0 21.09.2015 19:11
emeadaxsupport: AX Performance Troubleshooting Checklist Part 1B [Application and AOS Configuration] Blog bot DAX Blogs 0 05.09.2014 21:11
emeadaxsupport: AX Content: Document management for Microsoft Dynamics AX 2012 R2 Blog bot DAX Blogs 0 31.03.2014 20:14
DAX: How to gain additional value from the Microsoft application platform with Microsoft Dynamics AX 2012 R2 Blog bot DAX Blogs 3 21.06.2013 15:16
dynamicsaxbi: Better together: Microsoft Dynamics AX 2012 R2 and SQL Server Power View Blog bot DAX Blogs 0 12.12.2012 13:11
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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