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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.10.2009, 18:05   #1  
dynamax is offline
dynamax
Участник
 
62 / 11 (1) +
Регистрация: 28.09.2009
Определить из какой формы заполняется таблица.
Добрый день,

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

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

Спасибо.
Старый 12.10.2009, 18:19   #2  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Сделать то можно, но если посмотрите в стандарте вы таких мест не найдёте.
Например вот здесь взять информацию
X++:
info(con2str(xSession::xppCallStack()));
Если сделаете так, через несколько лет(или раньше) вам будет стыдно.
Лучше в метод добавить BaseEnum.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
За это сообщение автора поблагодарили: dynamax (1).
Старый 12.10.2009, 18:23   #3  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
еще PurchTable.dataSource().functionObject() но это очень плохая практика - а зачем это нужно вам?
За это сообщение автора поблагодарили: dynamax (1).
Старый 12.10.2009, 18:29   #4  
dynamax is offline
dynamax
Участник
 
62 / 11 (1) +
Регистрация: 28.09.2009
Цитата:
Сообщение от belugin Посмотреть сообщение
а зачем это нужно вам?
мне нужно, чтобы часть метода validateField таблицы SalesLine отрабатывала только в том случае, если таблица будет заполняться из формы SalesTable.
Старый 12.10.2009, 18:33   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от dynamax Посмотреть сообщение
мне нужно, чтобы часть метода validateField таблицы SalesLine отрабатывала только в том случае, если таблица будет заполняться из формы SalesTable.

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

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

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

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

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

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

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

=============
Вывод: в validateField таблицы используйте только данные из самой таблицы и/или из связанных таблиц.
Ни в коем случае не используйте данные, которые находятся вне базы данных (кэш сессии, локальные переменные формы и т.п.)
__________________
полезное на axForum, github, vk, coub.
Старый 13.10.2009, 21:18   #13  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Dron AKA andy Посмотреть сообщение
Не нашел такой функции, может это не в моей версии (у меня 4ка)? Но зато есть PurchTable.dataSource().formRun().
Я что-то перепутал - формран да. Где-то в ОСах это даже использовалось
Теги
интерфейс, программно, таблица, форма

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как определить факт изменения текущей строки 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

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

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

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