Показать сообщение отдельно
Старый 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 в форме диалога.