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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.03.2002, 10:25   #1  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
? Переход к основной таблице
Кто-нибудь имеет хоть какое-нибудь представление, каким образом в Axapta реализован механизм перехода к основной талице?

Интересно вот что: как в форме узнать, вызвана она из меню или в качестве основной таблицы?
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 18.03.2002, 11:07   #2  
Andrew Besedin is offline
Andrew Besedin
Участник
 
119 / 15 (1) ++
Регистрация: 25.01.2002
Привет!
Есть такой объект - называется он args(). Вот он многое умеет - в том числе показывает, кто есть caller() данного элемента.
Т.е. запись element.args().caller() вернет объект, вызвавший данный (или NULL)
__________________
Успехов!
Андрей Беседин
Старый 18.03.2002, 11:24   #3  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Спасибо, Andrew.

Я пошел немного дальше и нашел такую вот штуку:
<ol><li>Во-первых, у args есть еще метод record(). Он имеет тип Common. Если форма вызвана просто так, то RecId у этого Common равен нулю. Иначе он равен recId записи в той таблице, из которой была вызвана основная. Можно, кстати, и tableid узнать: метод dataset() у того же args.</li>
<li>Во-вторых, если форма вызывается как форма с основной таблицей, то у основного FormDataSource (где указаны критерии отбора основного dataSource из набора, я не знаю) формируется query (покопаться в нем и разобраться, как он устроен, я не успел). Если свои query прицеплять к этому, то все вроде бы работает нормально.</li></ol>
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 18.03.2002, 13:24   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Все правильно.
Есть небольшие уточнения.

1. TableID можно проверить у любого Record. Даже у Common
2. Query формируется автоматически только в том случае, если у датасорса формы это разрешено в свойствах.
__________________
полезное на axForum, github, vk, coub.
Старый 20.03.2002, 15:27   #5  
Oo is offline
Oo
Участник
 
10 / 11 (1) +
Регистрация: 21.12.2001
Переход к основной таблице
чтобы создать на форме новое поле с возможностью выбора данных из другой таблицы и возможностью перехода к основной таблице.

Пусть для примера необходимо добавить в форму номенклатурных единиц поле для выбора категории номенклатуры (список категорий будем заполнять отдельно в форме).

1. Создать новую таблицу и поля в ней. В таблице нужно иметь как минимум два поля: код записи (поле String), и ее название (тоже String). Назовем их для примера CategoryCode и CategoryName. Для CategoryName указать свойство ExtendedDataType = Name.
2. Создать новый EDT (Extended Data Type), например, ItemCategory. Создать для него Relation, в свойствах которого указать Table = созданная таблица, RelatedField = поле в таблице, отвечающее за код
записи (в нашем примере CategoryCode).
3. Создать форму, для нее создать Data Source, указав для него свойство Table = созданная таблица. В дизайне формы создать Grid, на ней два поля StringEdit. У одного поля указать свойство DataSourse = Category, DataField = CategoryCode, для другого то же самое, но DataField = CategoryName.
4. В таблице InventTable создать новое поле String, указав для него свойство ExtendedDataType = созданный расширенный тип данных (у нас ItemCategory).
5. В форме InventTable создать StringEdit, задать свойства DataSource = InventTable, DataField = созданное в InventTable поле.
5. Чтобы иметь возможность перейти из поля к основной таблице, необходимо сделать следующее:
- Создать MenuItem с типом Display и ссылкой на ту форму, которую необходимо вызывать;
- Указать созданный MenuItem в свойстве FormRef для таблицы-источника вызываемой формы.

Каждый из элементов сразу после создания нужно сохранить. Если возникнет необходимость в правке ранее созданных Вами объектов, все объекты, созданные после этого нужно будет перекомпилировать.

Этого достаточно, чтобы при переходе к основной таблице из созданного поля открывалась исходная форма с одной записью - в соответствии с введенным в поле значением.
За это сообщение автора поблагодарили: Poleax (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Переход к основной таблице договоров KolesOlya DAX: Программирование 12 11.04.2007 10:28
Как реализован переход к основной таблице как в общем журнале petr DAX: Программирование 4 15.09.2005 19:00
Переход на правильную запись при Переходе к основной таблице. - 2 Anais DAX: Программирование 2 01.11.2004 17:14
Переход к основной таблице в Ax3 Wamr DAX: Программирование 0 03.08.2004 17:58
Переход на правильную запись при Переходе к основной таблице. Anais DAX: Программирование 11 29.06.2004 19:16
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:28.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.