18.01.2016, 16:05 | #1 |
Участник
|
AX 2012 R2 CU7 CrossCompany запросы к SpecTrans (SaveDataPerCompany = No) в стандартном коде
В классе SpecTransManager (используется при сопоставлениях/реверсировании сопоставлений транзакций клиентов/поставщиков) встречаются запросы вида
X++: while select crossCompany specTrans where specTrans.SpecCompany == _specCompany && specTrans.SpecTableId == _specTableId && specTrans.SpecRecId == _specRecId В случае выполнения такого запроса пользователем с ограниченными правами, запрос не возвращает записей. Удаление ключевого слова crossCompany из запроса решает проблему. Поделитесь идеями, в чем может быть причина? |
|
18.01.2016, 16:12 | #2 |
Участник
|
тоже напоролся на подобное.
в итоге, пока работаю с таблицей specTrans только через класс SpecTransManager и его друзей (типа CustVendOpenTransManager) это не очень хорошо с точки зрения производительности. но зато надежно. мне тоже интересно, "в чем может быть причина" |
|
|
За это сообщение автора поблагодарили: gl00mie (1). |
18.01.2016, 17:03 | #3 |
Участник
|
Возможно, использование crosscompany приводило к принудительной проверке прав ядром и делалось это как-то криво.
А если обрамить этот запрос X++: unchecked( Uncheck::TableSecurityPermission ) { } |
|
|
За это сообщение автора поблагодарили: Morpheus (3). |
18.01.2016, 17:33 | #4 |
Участник
|
В 2009 вроде были добавлены опционально включаемые платежи кросс-компани для единого казначейства, возможно, ноги оттуда растут?
__________________
Ivanhoe as is.. |
|
18.01.2016, 18:50 | #5 |
Участник
|
Цитата:
Попробую права явно на таблицу выдать. |
|
18.01.2016, 19:04 | #6 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
18.01.2016, 21:21 | #7 |
Участник
|
Я бы лучше пропатчил код.
Это проще. Сделал один раз и забыл. А права надо постоянно в актуальном состоянии поддерживать. Чуть забыл - и вылезли старые глюки. Ненадежно. Да и нафига на эту таблицу права ? Все равно пользователь непосредственно в нее сам не пишет, а пишет в нее код, который дергается по кнопка и по едит методу. Значит это явно бага в коде, которую вы просто пропатчите и все. |
|
19.01.2016, 08:38 | #8 |
Злыдни
|
В 2012 в таблицу SpecTrans (возможно и ранее) добавили поле RefCompany и создали группу таблиц CentralizedPayments, в которую входит SpecTrans. По задумке, если компании входят в холдинг, это позволяет привязать платежи к встречным операциям разных компаний, разрешая учитывать оплаты по "центральной" бухгалтерии в дочерних структурах. Т.е. в 2012, как я понял, надо создать виртуальную компанию для всех дочерних и добавить туда группу таблиц.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. |
|
19.01.2016, 09:49 | #9 |
Участник
|
Мне кажется то что вы говорите верно для 2009-й аксапты.
А для 2012-й это особого смыла не имеет, так как табличка уже не хранится в разрезе компаний. Последний раз редактировалось Logger; 19.01.2016 в 10:12. Причина: исправил опечатки |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
19.01.2016, 10:48 | #10 |
Злыдни
|
Цитата:
1. Клиент приобретает товар в двух филиалах компании (отдельный счет в каждой). 2. Реквизиты для оплаты у каждого филиала указаны одинаковыми и относятся к головному филиалу. 3. Клиент, чтобы уменьшить расходы по банковскому переводу, формирует платежное с указанием двух заказов. 4. Головной филиал проводит приходный платеж по выписке (если бы заказ был один, можно было бы конкретную компанию указать в журнале платежей). 5. Финансовые специалисты в каждом из филиалов запускают сопоставление открытых операций и должны видеть сумму к сопоставлению (если не делать общую компанию, то они не смогут выбрать оплату). (специалисты клиента очень часто говорят, что оплата относится только к заказам одной компании, но при прямом вопросе, может ли быть оплата за заказы одного клиента/поставщика по разным филиалам, отвечают: "Редко, но бывает")
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. |
|
19.01.2016, 11:00 | #11 |
Участник
|
Не совсем понял к чему вы это написали.
Я не говорю, что интеркомпани сопоставление не нужно. Я про технику написал. Как это реализовано в разных версиях. Для specTrans в 2012-й - нет нужды запихивать в виртуальную компанию. Хотя возможно остальные таблички из указанной вами коллекции нужно. |
|
19.01.2016, 11:25 | #12 |
Участник
|
А в стандартных ролях прав на spectrans нет? Просто это не единственное место в 2012 которое будет некорректно работать при неполных правах.
__________________
Ivanhoe as is.. |
|
19.01.2016, 11:40 | #13 |
Злыдни
|
Я в изысках кода, конечно, мало понимаю, но в форме сопоставления открытых проводок идет вызов класса SpecTransManager, в котором устанавливается фильтр по компании "сопоставления". Может я и ошибаюсь, но, мне кажется, объединение головной и дочерних компаний в одну виртуальную с указанной группой таблиц позволит видеть консолидированные данные при сопоставлениях.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. |
|
|
|