|  14.01.2008, 10:02 | #1 | 
| Участник | 
			
			Здрасьте, читал про ограничение полей в lookup, а у меня ситуация немного иная: DialogField на расширенном типе InventLocationId и необходимо ограничить склады, т.е из всех доступных оставить только 2! (Ш1 и Ш2), как же это сделать?! поможите плиз | 
|  | 
|  14.01.2008, 11:14 | #2 | 
| Участник | 
			
			тут надо понять причину такого ограничения. 1. если это статическое ограничение, то лучше создать новый тип, унаследованный от склада и добавить в relation ограничения 2. если это ограничение связанное с правами пользователя, то надо настроить rls 3. если это динамическое ограничение, связанное с выбором в другом поле диалога, то надо писать код. код в диалог вставлять достаточно трудоемко (потому что диалог сам строится динамически) но можно Как можно перекрыть метод контрола формы, создаваемого в рантайме? однако же гораздо правильнее создать нормальную форму в AOT, оформить ее как диалог и подставить ее в механизм диалога. Этот способ описан в документации с примерами. | 
|  | 
|  14.01.2008, 11:57 | #3 | 
| Участник | 
			
			нет тут права непричем, надо чтобы все пользователи железно могли видеть и соответственно выбирать лишь 2 значения - Ш1 или Ш2, вот так вот | 
|  | 
|  14.01.2008, 12:31 | #4 | 
| Участник | 
			
			эти значения настраиваются в параметрах или действительно "железно"? если железно, то создайте тип, унаследуйте и добавьте вашему relation. просто и железно | 
|  | 
|  21.04.2008, 06:35 | #5 | 
| Участник | 
			
			дык сущность задачи не создавать свой тип, а ограничить существующий, киньте примерчик плиз  
		 | 
|  | 
|  22.04.2008, 13:03 | #6 | 
| Участник | 
			
			Основная идея Axapta вообще и X++ в частности заключается в том, что, по возможности, вместо прямого написания кода следует создавать объекты в AOT. По сути, этот тот же код, но по другому оформленный. Как следствие, динамически, "по месту", создать нужный объект или наложить нужные ограничения можно, но это будет выглядеть достаточно громоздко. Лучше все-таки создававть объекты в AOT. Кроме того, из Вашего описания не ясны те критерии, на основании которых Вы собираетесь отбирать склады Ш1 и Ш2. Их просто "перечислили"? В смысле "ткнули пальцем"? Такой подход надо всячески избегать. Не только в Axapta, но и вообще в программировании. Поскольку если впоследствии решат "ткнуть пальцем" в другие склады, то придется переписывать программный код. Да еще и не сразу вспомнишь, где именно надо вносить изменения. Следовательно, надо ввести некий дополнительный признак, по значению которого и будем отбирать склады. Т.е. необходимо добавить новое поле в таблицу InventLocation и дать возможность его изменять в форме InventLocation. Пользователь сам изменяет этот признак, автоматически изменяя список отображаемых складов в Lookup. Нет необходимости переписывать программный код. Ну, а после добавления признака все просто. Создается Extended DataType как наследник от InventLocationId у которого добавляется Relation типа "Поле ссылки фиксировано", где в качестве поля указывается то самое новое поле, а в качестве фиксированного значения то значение, которое должно соответствовать отбираемым складам. Дальше просто используешь этот новый EDT в форме диалога. | 
|  | 
|  23.04.2008, 08:53 | #7 | 
| Участник | 
			
			QueryBuildDataSource.addRange(fieldId2Ext(fieldNum(InventLocation, InventLocationId),1)).value('Ш1, Ш2') - вот так можно написать в lookup-е, тоже самое хочу сделать и в раскрывающемся списке диалога отчета. Эхх | 
|  | 
|  22.05.2008, 09:47 | #8 | 
| Участник | 
			
			типа выкрутился    http://axforum.info/forums/showthrea...t=21000&page=2 | 
|  |