AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 12.10.2009, 18:05   #1  
dynamax is offline
dynamax
Участник
 
62 / 11 (1) +
Join Date: 28.09.2009
Определить из какой формы заполняется таблица.
Добрый день,

есть ли возможность определить с какой именно формы заполняется таблица из метода самой таблицы?

Пример: SalesLine из формы SalesTable, a также ProjSalesItemReq.

Спасибо.
Old 12.10.2009, 18:19   #2  
miklenew is offline
miklenew
Участник
miklenew's Avatar
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 438 (18) +++++++
Join Date: 10.07.2006
Location: г. Ликино-Дулёво
Сделать то можно, но если посмотрите в стандарте вы таких мест не найдёте.
Например вот здесь взять информацию
X++:
info(con2str(xSession::xppCallStack()));
Если сделаете так, через несколько лет(или раньше) вам будет стыдно.
Лучше в метод добавить BaseEnum.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
This post has been rated by: dynamax (1).
Old 12.10.2009, 18:23   #3  
belugin is offline
belugin
Участник
belugin's Avatar
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Join Date: 16.01.2004
Blog Entries: 5
еще PurchTable.dataSource().functionObject() но это очень плохая практика - а зачем это нужно вам?
This post has been rated by: dynamax (1).
Old 12.10.2009, 18:29   #4  
dynamax is offline
dynamax
Участник
 
62 / 11 (1) +
Join Date: 28.09.2009
Quote:
Originally Posted by belugin View Post
а зачем это нужно вам?
мне нужно, чтобы часть метода validateField таблицы SalesLine отрабатывала только в том случае, если таблица будет заполняться из формы SalesTable.
Old 12.10.2009, 18:33   #5  
belugin is offline
belugin
Участник
belugin's Avatar
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Join Date: 16.01.2004
Blog Entries: 5
Quote:
Originally Posted by dynamax View Post
мне нужно, чтобы часть метода validateField таблицы SalesLine отрабатывала только в том случае, если таблица будет заполняться из формы SalesTable.

Может, оучше так
SalesLine.SalesType==SalesType::ItemReq?
Old 12.10.2009, 18:38   #6  
miklenew is offline
miklenew
Участник
miklenew's Avatar
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 438 (18) +++++++
Join Date: 10.07.2006
Location: г. Ликино-Дулёво
Quote:
Originally Posted by dynamax View Post
мне нужно, чтобы часть метода validateField таблицы SalesLine отрабатывала только в том случае, если таблица будет заполняться из формы SalesTable.
validateField это метод объекта таблица.
Раз у вас появилась в формулировке объект форма, то логичнее предположить что вам метод нужно реализовывать выше.
Выделите часть это кода в отдельный метод и повести его на таблицу.
Перекройте на datasourse формы метод validate на нужном поле и до super вызывайте его.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
This post has been rated by: mazzy (2).
Old 12.10.2009, 18:39   #7  
dynamax is offline
dynamax
Участник
 
62 / 11 (1) +
Join Date: 28.09.2009
Quote:
Originally Posted by belugin View Post
Может, лучше так
SalesLine.SalesType==SalesType::ItemReq?
Да, спасибо то-что нужно!
Old 12.10.2009, 18:43   #8  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Join Date: 13.02.2004
Location: Минск
->
Ну, в общем случае, чисто как вариант, можно завести ещё поле-признак в таблице (можно с SaveContents = No) и заполнять его на нужных формах в датасорсе.
А в методах таблицы уже его проверять.
Если, конечно, нет уже готовых смысловых полей, которые можно использовать аналогично.
__________________
Zhirenkov Vitaly
This post has been rated by: dynamax (1).
Old 12.10.2009, 18:52   #9  
belugin is offline
belugin
Участник
belugin's Avatar
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Join Date: 16.01.2004
Blog Entries: 5
Quote:
Originally Posted by ZVV View Post
Ну, в общем случае, чисто как вариант, можно завести ещё поле-признак в таблице (можно с SaveContents = No) и заполнять его на нужных формах в датасорсе.
Если заводить такое поле-признак, надо еще, чтобы одна из форм не могла отредактировать запись, которую можно отредактировать в другой из форм. Иначе получится противоречие. Так что признак не может быть с SaveContents = No
Old 12.10.2009, 18:57   #10  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Join Date: 13.02.2004
Location: Минск
->
Quote:
Originally Posted by belugin View Post
Если заводить такое поле-признак, надо еще, чтобы одна из форм не могла отредактировать запись, которую можно отредактировать в другой из форм. Иначе получится противоречие. Так что признак не может быть с SaveContents = No
Ну.. смотря как стоит задача... (я же написал, "возможно")
В описанной вами постановке - нет не может.
В общем случае таких ограничений может не быть. Или могут быть обратные.
Не вижу повода для дискуссии....
__________________
Zhirenkov Vitaly
Old 13.10.2009, 10:32   #11  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Join Date: 27.03.2002
Location: Москва
Quote:
Originally Posted by belugin View Post
еще PurchTable.dataSource().functionObject()
Не нашел такой функции, может это не в моей версии (у меня 4ка)? Но зато есть PurchTable.dataSource().formRun().
__________________
Андрей.
Old 13.10.2009, 20:14   #12  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by dynamax View Post
мне нужно, чтобы часть метода validateField таблицы SalesLine отрабатывала только в том случае, если таблица будет заполняться из формы SalesTable.
Предельно отвратительная хотелка с точки зрения постановки здачи.
В постановке смешиваются разные уровни абстракции.

Полностью согласен с miklenew:
Quote:
Originally Posted by miklenew View Post
validateField это метод объекта таблица.
Раз у вас появилась в формулировке объект форма, то логичнее предположить что вам метод нужно реализовывать выше.
Выделите часть это кода в отдельный метод и повести его на таблицу.
Перекройте на datasourse формы метод validate на нужном поле и до super вызывайте его.
validateField работает на уровне таблицы. с данными, которые находятся в таблице.

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

Что чревато нарушением целостности данных.

=============
Кроме того, не забывайте о механизме проверки целостности данных. Он запустит validateField для каждой записи. Теперь представьте, что данные, введенные в форме проверяются отдельно без формы, совсем по другой ветке алгоритма. Вам точно нужны эти заморочки?

=============
Кроме того, не забывайте о механизме экспорта/импорта данных, AIF, доступ из внешних систем. Все этим механизмы также могут запустить validateField.

=============
Кроме того, не забывайте о трехуровневости Аксапты. Форма работает и живет на клиенте. validateField может выполняться на сервере.

=============
Вывод: в validateField таблицы используйте только данные из самой таблицы и/или из связанных таблиц.
Ни в коем случае не используйте данные, которые находятся вне базы данных (кэш сессии, локальные переменные формы и т.п.)
__________________
полезное на axForum, github, vk, coub.
Old 13.10.2009, 21:18   #13  
belugin is offline
belugin
Участник
belugin's Avatar
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Join Date: 16.01.2004
Blog Entries: 5
Quote:
Originally Posted by Dron AKA andy View Post
Не нашел такой функции, может это не в моей версии (у меня 4ка)? Но зато есть PurchTable.dataSource().formRun().
Я что-то перепутал - формран да. Где-то в ОСах это даже использовалось
Tags
интерфейс, программно, таблица, форма

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Как определить факт изменения текущей строки DataSource формы Владимир Максимов DAX: Программирование 6 20.11.2008 16:24
как заполняется таблица в Ворде без закладок!? 3oppo DAX: Программирование 5 28.09.2006 13:52
Определить, через какую виртуальную компанию доступна таблица gl00mie DAX: Программирование 0 30.03.2006 10:19
Как определить на какой TabPage находится FormTabControl BorDark DAX: Программирование 0 05.01.2005 13:50
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 01:13.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.