![]() |
#1 |
MCTS
|
Lookup в другую компанию
Привет.
При попытке сделать лукап на справочник в другую компанию с помощью связей на таблице столкнулся с забавным поведением Аксы. Если поле не заполнено, лукап прекрасно отрабатывает по связям. Но если в поле уже есть значение, открывается лукап, в котором присутствуют значения из текущей компании и значения из другой компании. ![]() Кто-нить может что-нить сказать по этому поводу? ![]() PS AX3SP6 Последний раз редактировалось CDR; 17.12.2007 в 15:37. |
|
![]() |
#2 |
Злыдни
|
|
|
![]() |
#3 |
MCTS
|
Ну, например, так:
|
|
![]() |
#4 |
Участник
|
А может можно сделать saveDataPerCompany = No для этой таблицы?
|
|
![]() |
#5 |
MCTS
|
Вообщем-то, ни для новой таблички, ни для EmplTable этого сделать нельзя. Потому как данные как-раз таки должны хранится отдельно по компаниям.
Чудеса какие-то... Не иначе, как понедельник виноват. Видимо придется завтра с утра на свежую голову разбирацо ![]() |
|
![]() |
#6 |
Участник
|
Я делал такой лукап - все нормально работало - вне зависимости от того, есть значение в поле или нет. На более раннем СП
Поэтому ищите ошибку у себя. Вы перекрываете лукап? или как? |
|
![]() |
#7 |
Участник
|
2 CDR:
Перечитал только что ваши сообщения - я по-другому делал: Перекрывал лукап, и делал changeCompany('ljl') { super() } |
|
![]() |
#8 |
Member
|
kashperuk-у лишь бы покодить...
Вообще стандартные связи работают. Можно посмотреть в журнале ГК пример. Есть гипотеза, что у вас поле в таблице, с которым вы мучаетесь, на базе расширенного типа создано, для которого прописаны связи. Обычно в таких случаях бывают проблемы. Проверьте. Для чистоты связей нужно использовать в поле таблицы расширенный тип без связей, а связь настраивать на таблице. Посмотрите в тех же журналах ГК. Там компания на базе расширенного типа (связь работает всегда даже при незаполненных других полях), а сам счет, договора и проч. ерунда — на базе расширенного типа без связей и связь прописана на таблице (в результате поля работают только в связке с другими). Это не спроста так сделано.
__________________
С уважением, glibs® |
|
![]() |
#9 |
Участник
|
|
|
![]() |
#10 |
Member
|
![]() (I regret)
__________________
С уважением, glibs® |
|
![]() |
#11 |
Участник
|
Я тоже использовала changeCompany()
![]() |
|
![]() |
#12 |
Злыдни
|
Я дико извиняюсь за свою серость, но хотел бы уточнить 2 момента:
1. В качестве примера, насколько я понял, приведен лукап счета в строках журнала ГК. Однако на первый взгляд все лукап-методы на форме строк журнала ГК реализованы программно на соответствующих таблицах. И в этих методах недвусмысленно присутствует конструкция setDefaultCompany() Я чего-то не вижу? 2. До настоящего момента я был твердо уверен, что отображение информации и доступ к ней в Аксапте возможен только в рамках текущей компании. Способов изменить это поведение я знаю 3: saveDataPerCompany на таблице, setDefaultCompany() и changeCompany() в коде. Во всех мануалах по Х++ и Аксе (в частности, Inside Dynamics AX 4.0) это декларируется. Я сейчас, конечно, поэкспериментирую, но Ваше заявление, glibs, как обухом по голове, честное слово :-) Вековые устои руаштся..... |
|
![]() |
#13 |
Злыдни
|
Работает.... Обалдеть можно...
![]() |
|
![]() |
#14 |
Member
|
Ну вы, пиплы, даете.
Слов нету. Осталось еще только на стандартные лукапы забить и писать везде свои. Обратите внимание, что Кашперукский метод работает только в форме, а стандартные relations работают даже в обозревателе таблицы.
__________________
С уважением, glibs® |
|
|
За это сообщение автора поблагодарили: Yprit (1). |
![]() |
#15 |
Злыдни
|
|
|
![]() |
#16 |
Member
|
Цитата:
Сообщение от Yprit
...
Способов изменить это поведение я знаю 3: saveDataPerCompany на таблице ...
__________________
С уважением, glibs® |
|
![]() |
#17 |
Злыдни
|
|
|
![]() |
#18 |
MCTS
|
Странно... С помощью связей на таблице так и не удалось добиться стабильной работы лукапа в другую компанию.
![]() Если в поле пусто - лукап отрабатывает на ура. Если в поле уже указано значение, почему-то открывается лукап в текущую компанию + одно значение из нужной компании, которое уже указано в поле. Пришлось сделать в лукапе changeCompany() перед super(). |
|
![]() |
#19 |
Злыдни
|
|
|
![]() |
#20 |
MCTS
|
|
|