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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.05.2011, 15:29   #1  
Predatore is offline
Predatore
Участник
 
163 / 17 (1) ++
Регистрация: 29.09.2010
Доброго времени суток товарищи!
Прошу прощения за столь глупый вопрос, но никак не могу разобраться в элементарной вещи. Кратко суть проблемы:
На форме (назовём её Form1) есть поле, значение которого нужно выбрать из другой таблицы. Ну т.е. нажать стрелочку, откроется другая форма (назовём её Form2), там я выбираю строку, жму ОК, или 2 раза кликаю на строчку и вуаля, выбранное значение в поле. Но вот никак не могу разобраться как это сделать. Я в Наве совсем новичок. Пытаясь самостоятельно разобраться с проблемой нашёл 2 вещи: TableRelation и DrillDown, причём одна из них рисует стрелочку вверх, а другая стрелочку вниз. В чём в итоге разница, понять не могу, но пробую разобраться с DrillDown, делаю так, в поле на тригере OnDrillDown пишу следующее:
Form2.LOOKUPMODE(TRUE);
IF Form2.RUNMODAL = Action::LookupOK THEN //а вот тут-то и затык, что дальше, то? Как обратиться к выбранной строке?

И ещё, если не трудно. В чём принципиальная разница в подходе через DrillDown и TableRelation и какой когда лучше использовать?

Спасибо большое!
Старый 10.05.2011, 15:40   #2  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Найдите документацию (раньше эта дока называлась Объекты Navision) и все станет ясно. Доку можно освоить самому дня за 3. Это позволит избежать похожих проблем в дальнейшем
Старый 10.05.2011, 15:43   #3  
Predatore is offline
Predatore
Участник
 
163 / 17 (1) ++
Регистрация: 29.09.2010
Цитата:
Сообщение от Fordewind Посмотреть сообщение
Найдите документацию (раньше эта дока называлась Объекты Navision) и все станет ясно. Доку можно освоить самому дня за 3. Это позволит избежать похожих проблем в дальнейшем
А если не за 3 дня, а в 3 строчках? Были бы у меня 3 дня, я бы такие глупые вопросы не задавал.
P.S. Только что сделал через TableRelation, без документации и 3 дней. Спасибо за помощь.
Старый 11.05.2011, 06:41   #4  
GRIZZLY_imported is offline
GRIZZLY_imported
Участник
 
39 / 10 (1) +
Регистрация: 18.05.2007
Обратиться к выбранной записи макросом GETRECORD, т.е.
Form2.GETRECORD(Rec2);

Далее заполняем поле, из которого делали вызов лукапа:
Field := Rec2.Field2;

PS : если нет времени, то можно почитать встроенный хелп по C/SIDE, тоже очень полезная штука.
Старый 11.05.2011, 10:05   #5  
Predatore is offline
Predatore
Участник
 
163 / 17 (1) ++
Регистрация: 29.09.2010
Цитата:
Сообщение от GRIZZLY Посмотреть сообщение
Обратиться к выбранной записи макросом GETRECORD, т.е.
Form2.GETRECORD(Rec2);

Далее заполняем поле, из которого делали вызов лукапа:
Field := Rec2.Field2;

PS : если нет времени, то можно почитать встроенный хелп по C/SIDE, тоже очень полезная штука.
Спасибо! Хелп встроенный я читал и даже видел там подобную конструкцию, но что-то у меня не получалось никак заставить всё это работать. Вчера какие-то тупняки меня одолевали, я не совсем понимал что есть Rec2 в данном случае.

А ради любопытсва, в книжке наверное есть эта инфа, но всё же, в чём принципиальная разница между DrillDown и TableRelation? Рискну предположить, что при TableRelation, если изменится таблица из которой выбирается поле, то изменения отразятся и в поле. А при DrillDown поле останется неизменным.
Старый 11.05.2011, 22:15   #6  
GRIZZLY_imported is offline
GRIZZLY_imported
Участник
 
39 / 10 (1) +
Регистрация: 18.05.2007
Цитата:
Сообщение от Predatore Посмотреть сообщение
Цитата:
Сообщение от GRIZZLY Посмотреть сообщение
Обратиться к выбранной записи макросом GETRECORD, т.е.
Form2.GETRECORD(Rec2);

Далее заполняем поле, из которого делали вызов лукапа:
Field := Rec2.Field2;

PS : если нет времени, то можно почитать встроенный хелп по C/SIDE, тоже очень полезная штука.
Спасибо! Хелп встроенный я читал и даже видел там подобную конструкцию, но что-то у меня не получалось никак заставить всё это работать. Вчера какие-то тупняки меня одолевали, я не совсем понимал что есть Rec2 в данном случае.
GETRECORD возвращает в Rec2 выбранную на форме запись. Т.е. таким образом, можно через Rec2 обратиться к любому полю.

Цитата:
Сообщение от Predatore Посмотреть сообщение
А ради любопытсва, в книжке наверное есть эта инфа, но всё же, в чём принципиальная разница между DrillDown и TableRelation? Рискну предположить, что при TableRelation, если изменится таблица из которой выбирается поле, то изменения отразятся и в поле. А при DrillDown поле останется неизменным.
Drilldown это из области SIFT (т.е. флоуфилдов), где поле представляет собой сумму по колонке из другой таблицы, например, Баланс в Карточке Клиента или Наличие в Карточке Товара. Стандартно запускается форма, указанная в DrilldownForm в таблице, по которой считается сумма. Но по идее, можно перехватить и написать свой код на OnDrillDown на форме на любом поле.

Tablerelation это из области проверки целостности базы данных, т.е. соблюдения связей между таблицами. Таким образом, если указана валидация этих связей, то система не допустит чтобы пользователь выбрал отсутствующее в справочнике значение, а при переименовании первичного ключа справочника автоматически произойдет обновление на новое значение в связанных таблицах.
 


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

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

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