AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 14.01.2008, 10:02   #1  
Player1 is offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Join Date: 21.04.2008
Здрасьте, читал про ограничение полей в lookup, а у меня ситуация немного иная:
DialogField на расширенном типе InventLocationId и необходимо ограничить склады, т.е из
всех доступных оставить только 2! (Ш1 и Ш2), как же это сделать?! поможите плиз
Old 14.01.2008, 11:14   #2  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
тут надо понять причину такого ограничения.
1. если это статическое ограничение, то лучше создать новый тип, унаследованный от склада и добавить в relation ограничения
2. если это ограничение связанное с правами пользователя, то надо настроить rls
3. если это динамическое ограничение, связанное с выбором в другом поле диалога, то надо писать код.

код в диалог вставлять достаточно трудоемко (потому что диалог сам строится динамически)
но можно Как можно перекрыть метод контрола формы, создаваемого в рантайме?

однако же гораздо правильнее создать нормальную форму в AOT, оформить ее как диалог и подставить ее в механизм диалога. Этот способ описан в документации с примерами.
__________________
полезное на axForum, github, vk, coub.
Old 14.01.2008, 11:57   #3  
Player1 is offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Join Date: 21.04.2008
нет тут права непричем, надо чтобы все пользователи железно могли видеть и соответственно выбирать
лишь 2 значения - Ш1 или Ш2, вот так вот
Old 14.01.2008, 12:31   #4  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
эти значения настраиваются в параметрах или действительно "железно"?
если железно, то создайте тип, унаследуйте и добавьте вашему relation. просто и железно
__________________
полезное на axForum, github, vk, coub.
Old 21.04.2008, 06:35   #5  
Player1 is offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Join Date: 21.04.2008
дык сущность задачи не создавать свой тип, а ограничить существующий, киньте примерчик плиз
Old 22.04.2008, 13:03   #6  
Владимир Максимов_imported is offline
Владимир Максимов_imported
Участник
 
33 / 10 (1) +
Join Date: 20.01.2004
Основная идея Axapta вообще и X++ в частности заключается в том, что, по возможности, вместо прямого написания кода следует создавать объекты в AOT. По сути, этот тот же код, но по другому оформленный.

Как следствие, динамически, "по месту", создать нужный объект или наложить нужные ограничения можно, но это будет выглядеть достаточно громоздко. Лучше все-таки создававть объекты в AOT.

Кроме того, из Вашего описания не ясны те критерии, на основании которых Вы собираетесь отбирать склады Ш1 и Ш2. Их просто "перечислили"? В смысле "ткнули пальцем"?

Такой подход надо всячески избегать. Не только в Axapta, но и вообще в программировании. Поскольку если впоследствии решат "ткнуть пальцем" в другие склады, то придется переписывать программный код. Да еще и не сразу вспомнишь, где именно надо вносить изменения.

Следовательно, надо ввести некий дополнительный признак, по значению которого и будем отбирать склады. Т.е. необходимо добавить новое поле в таблицу InventLocation и дать возможность его изменять в форме InventLocation. Пользователь сам изменяет этот признак, автоматически изменяя список отображаемых складов в Lookup. Нет необходимости переписывать программный код.

Ну, а после добавления признака все просто. Создается Extended DataType как наследник от InventLocationId у которого добавляется Relation типа "Поле ссылки фиксировано", где в качестве поля указывается то самое новое поле, а в качестве фиксированного значения то значение, которое должно соответствовать отбираемым складам.

Дальше просто используешь этот новый EDT в форме диалога.
Old 23.04.2008, 08:53   #7  
Player1 is offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Join Date: 21.04.2008
QueryBuildDataSource.addRange(fieldId2Ext(fieldNum(InventLocation, InventLocationId),1)).value('Ш1, Ш2') - вот так можно написать в lookup-е,
тоже самое хочу сделать и в раскрывающемся списке диалога отчета. Эхх
Old 22.05.2008, 09:47   #8  
Player1 is offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Join Date: 21.04.2008
типа выкрутился
http://axforum.info/forums/showthrea...t=21000&page=2
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 18:17.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.