|
06.04.2010, 10:36 | #1 |
Участник
|
Не отображаются значения поля на форме InventTable
Уважаемые коллеги,
Если не сложно, помогите разобраться: В форму InventTable на General tab надо вывести поле CustVendExternalItem.ExternalItemId - добавил к форме InventTable датасорс (тип связи - Active), сделал 2 связи (по ItemId и условие по ModuleType), добавил в раздел дизайна. Поле появилось, но значение отображается только когда курсор устанавливается на строку. В связи с этим - мне надо добавлять дисплейный метод чтобы это поле нормально отображать или что то еще? P.S. Пробовал InnerJoin - отображает только ту номенклатуру у которой есть внешние коды. А надо чтобы отображалась вся номенклатура. ax 4.0, kernel 4.0.2503.454, mssql 2005 Заранее спасибо, Михаил |
|
06.04.2010, 11:35 | #2 |
Участник
|
А если для одной номенклатуры у вас будет несколько CustVendExternalItem, по какому принципу вы хотите выбирать тот, который нужно показывать ? Пишите дисплейный метод.
|
|
|
За это сообщение автора поблагодарили: Ulyxess (1). |
06.04.2010, 12:09 | #3 |
Участник
|
Спасибо за ответ. Если будет связь 1:n то хотелось бы брать последнюю созданную запись (актуальную).
А проблемка то в том что я не умею писать дисплейные методы Если не сложно, киньте пример Михаил |
|
06.04.2010, 11:55 | #4 |
Участник
|
Цитата:
Правда вопрос про то, как обрабатывать несколько строк в CustVendExternalItem это не решает. |
|
|
За это сообщение автора поблагодарили: Ulyxess (1). |
06.04.2010, 12:10 | #5 |
Участник
|
К тому же оказалось что поле не копируется (например для вставки в эксель)
|
|
06.04.2010, 13:07 | #6 |
Участник
|
Человек хочет в одном гриде показывать поля из нескольких таблиц.
Разве OuterJoin будет показывать? Ведь будут артефакты, когда значение поля из другой таблицы будет показываться только при наведении курсора. Если можешь ответить сходу, буду признателен. Эксперимент сейчас поставить не могу. |
|
06.04.2010, 12:17 | #7 |
Участник
|
AOT - лучший пример. Посмотрите по слову display на формах - найдете массу примеров.
Вот еще MSDN и блог какой-то http://msdax.blogspot.com/2007/08/di...d-in-code.html http://msdn.microsoft.com/en-us/library/aa595058.aspx |
|
06.04.2010, 13:32 | #8 |
Axapta
|
mazzy, в обычном простом случае (форма, два датасорса, грид) все будет показывать. Но там был какой-то глюк парсера запросов, когда много таблиц джойнится (как в случае с ИнвентТейбл) и есть аутерджойн. Подробностей не помню.
|
|
06.04.2010, 13:42 | #9 |
Участник
|
Точно не работает exists join ещё одной таблицы, если на источнике уже есть outer join
|
|
06.04.2010, 14:42 | #10 |
Участник
|
Цитата:
Сообщение от mazzy
Человек хочет в одном гриде показывать поля из нескольких таблиц.
Разве OuterJoin будет показывать? Ведь будут артефакты, когда значение поля из другой таблицы будет показываться только при наведении курсора. Если можешь ответить сходу, буду признателен. Эксперимент сейчас поставить не могу. Цитата:
Цитата:
Есть определенные ситуации, когда теряются определенные join'ы. С каждой версией таких ситуаций все меньше, но и в АХ 6 думаю останутся еще такие - ноги растут от того, что структура источников данных на форме представлена в виде списка, а не дерева, поэтому когда начинаешь строить дерево, появляются глюки... |
|
06.04.2010, 14:48 | #11 |
Участник
|
Не хочу прерывать вашу беседу, господа ))))
Но вот не очень понятно: 1. Какой вид джойна должен быть на датасорсе? 2. Нужен ли дисплейный метод? 3. Есть ли еще какие то особенности? Заранее спасибо, Михаил |
|
06.04.2010, 15:09 | #12 |
Участник
|
Цитата:
2. Если будет работать через пункт 1, то нет, не нужен. 3. По этому полю в версиях до, собственно, последней, нельзя будет фильтровать/сортировать (собственно, как и по дисплей методу, поэтому ничего относительно не потеряете) В случае, если у вас будет несколько строк в этой таблице, подход с Outer join будет отображать 2 и более строки. Насколько я понимаю, это не то, что вам нужно? Если нужно, чтобы была одна строка, то остается только дисплей метод, или фильтрация по определенному флагу для выбора одной уникальной записи (типа галочки Active - актуальная запись) |
|
06.04.2010, 15:26 | #13 |
Участник
|
Не работает OuterJoin. Пишет:
Невозможно выбрать запись в Внешнее описание номенклатуры (CustVendExternalItem). Использован оператор объединения таблиц join, но выражение WHERE не содержит связи между таблицами. Это я что то не так в связях таблиц установил? Я делал ItemId = ItemId |
|
07.04.2010, 11:42 | #14 |
Участник
|
Коллеги,
А вот такой вариант дееспособен? 1. Сделать в таблице InventTable поле, куда записывать последний внешний код ном-ы 2. Написать метод для записи этих самых кодов 3. Навесить его я так понимаю на таблицу (форму?) InventTable |
|
07.04.2010, 12:14 | #15 |
Гость
|
Дееспособен, только "навесить" в CustVendExternalItem.insert() и CustVendExternalItem.update()
если по полю искать не надо - достаточно дисплай метода, как уже писали выше |
|
07.04.2010, 12:25 | #16 |
Гость
|
а что до Outer Join, так этот джойн в аксапте волшебно работает (на формах вообще нигде не используется, насколько я знаю)
я бы вообще не рекомендовал его использовать. |
|
07.04.2010, 13:27 | #17 |
Участник
|
Цитата:
Но теперь скажу - лучше привыкать смолоду. |
|
|
|