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

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

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

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

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

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

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

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

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

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

Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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