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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.05.2004, 16:13   #1  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Работа с формами
У меня несколько вопросов по созданию и работе с формами, которые у меня что-то совсем не получается решить самому:
1. Как обратится к форме, с которой вызвана диаложка в обработке клика ОК (clicked) диалога?
2. Как на форме отобразить поле NAME по ContactPersonID таблицы ContactPerson, если в моей таблице есть только поле ContactPersonID?
3. Как сделать выборку (фильтр) в грид формы, например, по выбранной дате в контроле?
4. Как обратиться к отдельному контролу на форме, считать его значение, т.д.?
5. Как обработать создание (Ctrl+N) новой записи в таблице?


Буду очень благодарен за детальные объяснения, так как с Аксаптой работаю совсем недавно.
Спасибо
Старый 31.05.2004, 17:04   #2  
Lazy_Tiger is offline
Lazy_Tiger
NavAx
Axapta Retail User
1C
NavAx Club
 
610 / 31 (3) +++
Регистрация: 17.12.2001
Адрес: Красноярск
Re: Работа с формами
1. Как обратится к форме, с которой вызвана диаложка в обработке клика ОК (clicked) диалога?

element.args().caller()

2. Как на форме отобразить поле NAME по ContactPersonID таблицы ContactPerson, если в моей таблице есть только поле ContactPersonID?
используя display метод

3. Как сделать выборку (фильтр) в грид формы, например, по выбранной дате в контроле?
а нада?

4. Как обратиться к отдельному контролу на форме, считать его значение, т.д.?

установить у него свойство AutoDeclaration = Yes и далее в коде по имени...

5. Как обработать создание (Ctrl+N) новой записи в таблице?
а нада?

P.S. 3 и 5 пункт на данном этапе лишние, используйте встроенное поведение системы. ИМХО.
__________________
И все они создания природы...
Старый 31.05.2004, 23:08   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Спасибо, Lazy_Tiger. Очень помог.
А по-поводу вопроса №5. (обработка Ctrl+N) Проблема в следующем. У меня в таблице есть уникальный ID, который мне соответсвенно нужно наращивать при добавлении записи в таблицу. И я думаю, что это надо делать именно в обработке создания записи. Или нет? Как можно тогда по-другому сделать?
Заранее спасибо
Старый 01.06.2004, 07:12   #4  
Lazy_Tiger is offline
Lazy_Tiger
NavAx
Axapta Retail User
1C
NavAx Club
 
610 / 31 (3) +++
Регистрация: 17.12.2001
Адрес: Красноярск
перекрыть метод initValue() у таблицы и заполнить поля
__________________
И все они создания природы...
Старый 01.06.2004, 08:18   #5  
YVAS is offline
YVAS
1C
Аватар для YVAS
1C
 
265 / 10 (1) +
Регистрация: 31.07.2003
Цитата:
Изначально опубликовано kashperuk

У меня в таблице есть уникальный ID, который мне соответсвенно нужно наращивать при добавлении записи в таблицу. И я думаю, что это надо делать именно в обработке создания записи. Или нет? Как можно тогда по-другому сделать?
Используйте непрерывные номерные серии. Система сама автоматически будет увеличивать/уменьшать при вставке/удалении записи.
Старый 01.06.2004, 08:25   #6  
Lazy_Tiger is offline
Lazy_Tiger
NavAx
Axapta Retail User
1C
NavAx Club
 
610 / 31 (3) +++
Регистрация: 17.12.2001
Адрес: Красноярск
прямо таки само? или номерок из серии нада получить и поюзать...
__________________
И все они создания природы...
Старый 01.06.2004, 10:41   #7  
YVAS is offline
YVAS
1C
Аватар для YVAS
1C
 
265 / 10 (1) +
Регистрация: 31.07.2003
стоп. Что то я не понял. Вроде бы нужно просто при вставке или удалении записи изменять ID. Вроде как программно не нужно ничего получать. При правильной настройке номерной серии все должно делаться автоматически.
Старый 01.06.2004, 12:34   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Используйте непрерывные номерные серии. Система сама автоматически будет увеличивать/уменьшать при вставке/удалении записи.
А не могли бы вы еще и рассказать, как именно они используются? (где их настроить).
Спасибо
Старый 01.06.2004, 12:51   #9  
france is offline
france
Участник
 
159 / 11 (1) +
Регистрация: 24.11.2003
Адрес: Москва
Цитата:
Изначально опубликовано kashperuk

А не могли бы вы еще и рассказать, как именно они используются? (где их настроить).
Спасибо
Настроить тут:
Основное\Настройка\Номерная серия (в 2.5 вместо Основное будет Разное)
Старый 01.06.2004, 12:54   #10  
Lazy_Tiger is offline
Lazy_Tiger
NavAx
Axapta Retail User
1C
NavAx Club
 
610 / 31 (3) +++
Регистрация: 17.12.2001
Адрес: Красноярск
примерно так:
NumberSeq::newGetNumFromCode("Пост01", true, false).num();

не уверен что именно так рекомендуют лучшие собаководы, но видел кучу мест в системе где именно так.

например вот для таблички клиентов...

custTable.AccountNum = NumberSeq::newGetNum(CustParameters::numRefCustAccount()).num()

Допускаю что есть какой то механизм, буду рад узнать как правильно
__________________
И все они создания природы...
Старый 01.06.2004, 14:12   #11  
YVAS is offline
YVAS
1C
Аватар для YVAS
1C
 
265 / 10 (1) +
Регистрация: 31.07.2003
2Lazy_Tiger:
Правильно, NumberSeq::newGetNumFromCode("Пост01", true, false).num(); - это механизм программного изменения номерной серии. Иногда возникает такая необходимость при вставке записи из кода. А при Ctrl+N номерная серия отрабатывается автоматически.
Старый 01.06.2004, 15:04   #12  
Anais is offline
Anais
Участник
Аватар для Anais
 
182 / 10 (1) +
Регистрация: 16.06.2003
Адрес: Москва
Цитата:
Изначально опубликовано YVAS
2Lazy_Tiger:
Правильно, NumberSeq::newGetNumFromCode("Пост01", true, false).num(); - это механизм программного изменения номерной серии. Иногда возникает такая необходимость при вставке записи из кода. А при Ctrl+N номерная серия отрабатывается автоматически.
Опа!
Ну, прям даже не знаю что и подумать... Открой, что ли, третий проект, таблицу доверенностей. Метод InitValue.
Это и есть "ctrl + N"...
__________________
Улыбаемся и машем, парни! Улыбаемся и машем...
Старый 01.06.2004, 15:59   #13  
YVAS is offline
YVAS
1C
Аватар для YVAS
1C
 
265 / 10 (1) +
Регистрация: 31.07.2003
Цитата:
Изначально опубликовано Anais


Опа!
Ну, прям даже не знаю что и подумать... Открой, что ли, третий проект, таблицу доверенностей. Метод InitValue.
Это и есть "ctrl + N"...
Этот модуль именно я и делал. Там нет программного изменения ном. серии. А вот в импорте из клиент-банков я именно newGetNumFromCode использовал, потому что Ax материлась. А записи вставлял в LJT.
Старый 01.06.2004, 16:49   #14  
Anais is offline
Anais
Участник
Аватар для Anais
 
182 / 10 (1) +
Регистрация: 16.06.2003
Адрес: Москва
Цитата:
Изначально опубликовано YVAS


Этот модуль именно я и делал. Там нет программного изменения ном. серии. А вот в импорте из клиент-банков я именно newGetNumFromCode использовал, потому что Ax материлась. А записи вставлял в LJT.
Этот вызов суть и есть "программное изменение номерной серии". А с LJT (конкретно с LJT !) штука такая. LJT используется из разных модулей и в каждом модуле образует свой собственный журнал (на самом деле, даже своИ собственныЕ журналЫ). А в каждом журнале, очевидно, может использоваться своя номерная серия.
Поэтому для LJT получение номера номерной серии осуществляется не через метод InitValue таблицы, а через метод initValue на DS форм, в которых используется LJT (для Банка - форма LedgerJournalTransRCash).

PS
На самом деле там тоже не все так просто. Конкретный номер номерной серии хранится в журнале (таблице LedgerJournalTable, поле VoucherSeries). А это поле, в свою очередь, инициализируется из Названий журналов при создании журнала.

PPS
Но НИКОГДА номерные серии не отрабатывают автоматически, без дополнительных телодвижений со стороны программиста.
__________________
Улыбаемся и машем, парни! Улыбаемся и машем...
Старый 01.06.2004, 18:04   #15  
Lazy_Tiger is offline
Lazy_Tiger
NavAx
Axapta Retail User
1C
NavAx Club
 
610 / 31 (3) +++
Регистрация: 17.12.2001
Адрес: Красноярск
Цитата:
Изначально опубликовано Anais
Но НИКОГДА номерные серии не отрабатывают автоматически, без дополнительных телодвижений со стороны программиста.
огорчили блин... а так хотелось чуда...
__________________
И все они создания природы...
Старый 01.06.2004, 18:28   #16  
Anais is offline
Anais
Участник
Аватар для Anais
 
182 / 10 (1) +
Регистрация: 16.06.2003
Адрес: Москва
Цитата:
Изначально опубликовано Lazy_Tiger


огорчили блин... а так хотелось чуда...
Карнавала не будет... На том и стоим
__________________
Улыбаемся и машем, парни! Улыбаемся и машем...
Старый 02.06.2004, 08:46   #17  
YVAS is offline
YVAS
1C
Аватар для YVAS
1C
 
265 / 10 (1) +
Регистрация: 31.07.2003
Цитата:
Изначально опубликовано Anais

Но НИКОГДА номерные серии не отрабатывают автоматически, без дополнительных телодвижений со стороны программиста.
Ты же эти телодвижения делаешь непостоянно. За тебя это делает метод initValue() и delete(), где и прописана обработка номерной серии. Согласен, спорно: можно назвать автоматически или нельзя (и вообще что можно понимать под этим термином применительно к данному случаю). Но....
даже возмем тот же Модуль доверенностей и программно выполним insert(), поле, которому прикручена ном. серия пустое. А если явно задавать
PHP код:
trustTable.TrunsOrderNum  NumberSeq::newGetNumFromCode("ДОВ"truefalse).num(); 
тогда нормально. То есть при ctrl+N initValue() отрабатывает, а при insert() нет.
Старый 02.06.2004, 11:53   #18  
Anais is offline
Anais
Участник
Аватар для Anais
 
182 / 10 (1) +
Регистрация: 16.06.2003
Адрес: Москва
Цитата:
Изначально опубликовано YVAS

тогда нормально. То есть при ctrl+N initValue() отрабатывает, а при insert() нет.
Конечно, не вызывается. Это разные методы таблицы, и вызываются они в разные моменты. См. порядок вызова методов при добавлении записи на форму.

Если нужно добавить строку из кода, то initValue вызывается вручную. Или не вызывается - это уж в зависимости от обстоятельств.
__________________
Улыбаемся и машем, парни! Улыбаемся и машем...
Старый 02.06.2004, 13:34   #19  
YVAS is offline
YVAS
1C
Аватар для YVAS
1C
 
265 / 10 (1) +
Регистрация: 31.07.2003
Цитата:
Изначально опубликовано Anais

Конечно, не вызывается. Это разные методы таблицы, и вызываются они в разные моменты.....

Если нужно добавить строку из кода, то initValue вызывается вручную
Дык естественно, кто ж спорит, что разные методы. Но все равно лучше использовать newGetNumFromCode хотя бы потому, что не будут вызываться другие обработки в initValue().
Старый 22.10.2004, 16:08   #20  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
delete()
2YVAS

Цитата:
За тебя это делает метод initValue() и delete(), где и прописана обработка номерной серии.
PHP код:
trustTable.TrunsOrderNum  NumberSeq::newGetNumFromCode("ДОВ"truefalse).num(); 
А напиши еще тогда ПЛЗ, что должно быть написано в методе delete()
Теги
number sequence, номерная серия

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Доступ к меню "Работа с документами" Kuat DAX: Администрирование 4 16.11.2007 17:07
Совместная работа заказчика и исполнителя в разных или одном слое? Кузин Владимир В. DAX: Программирование 6 08.08.2006 10:02

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

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

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