12.10.2009, 18:05 | #1 |
Участник
|
Определить из какой формы заполняется таблица.
Добрый день,
есть ли возможность определить с какой именно формы заполняется таблица из метода самой таблицы? Пример: SalesLine из формы SalesTable, a также ProjSalesItemReq. Спасибо. |
|
12.10.2009, 18:19 | #2 |
Участник
|
Сделать то можно, но если посмотрите в стандарте вы таких мест не найдёте.
Например вот здесь взять информацию X++: info(con2str(xSession::xppCallStack())); Лучше в метод добавить BaseEnum.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
|
За это сообщение автора поблагодарили: dynamax (1). |
12.10.2009, 18:23 | #3 |
Участник
|
еще PurchTable.dataSource().functionObject() но это очень плохая практика - а зачем это нужно вам?
|
|
|
За это сообщение автора поблагодарили: dynamax (1). |
12.10.2009, 18:29 | #4 |
Участник
|
|
|
12.10.2009, 18:33 | #5 |
Участник
|
|
|
12.10.2009, 18:38 | #6 |
Участник
|
Цитата:
Раз у вас появилась в формулировке объект форма, то логичнее предположить что вам метод нужно реализовывать выше. Выделите часть это кода в отдельный метод и повести его на таблицу. Перекройте на datasourse формы метод validate на нужном поле и до super вызывайте его.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
12.10.2009, 18:39 | #7 |
Участник
|
|
|
12.10.2009, 18:43 | #8 |
MCITP
|
Ну, в общем случае, чисто как вариант, можно завести ещё поле-признак в таблице (можно с SaveContents = No) и заполнять его на нужных формах в датасорсе.
А в методах таблицы уже его проверять. Если, конечно, нет уже готовых смысловых полей, которые можно использовать аналогично.
__________________
Zhirenkov Vitaly |
|
|
За это сообщение автора поблагодарили: dynamax (1). |
12.10.2009, 18:52 | #9 |
Участник
|
Если заводить такое поле-признак, надо еще, чтобы одна из форм не могла отредактировать запись, которую можно отредактировать в другой из форм. Иначе получится противоречие. Так что признак не может быть с SaveContents = No
|
|
12.10.2009, 18:57 | #10 |
MCITP
|
Цитата:
В описанной вами постановке - нет не может. В общем случае таких ограничений может не быть. Или могут быть обратные. Не вижу повода для дискуссии....
__________________
Zhirenkov Vitaly |
|
13.10.2009, 10:32 | #11 |
Moderator
|
Не нашел такой функции, может это не в моей версии (у меня 4ка)? Но зато есть PurchTable.dataSource().formRun().
__________________
Андрей. |
|
13.10.2009, 20:14 | #12 |
Участник
|
Цитата:
В постановке смешиваются разные уровни абстракции. Полностью согласен с miklenew: Цитата:
Сообщение от miklenew
validateField это метод объекта таблица.
Раз у вас появилась в формулировке объект форма, то логичнее предположить что вам метод нужно реализовывать выше. Выделите часть это кода в отдельный метод и повести его на таблицу. Перекройте на datasourse формы метод validate на нужном поле и до super вызывайте его. если у вас возникла хотелка при проверке учитывать данные из другого уровня абстракции, то это первый признак, что вы не все данные храните в таблице, что некоторые жизнено важные данные находятся где-нибудь еще. Что чревато нарушением целостности данных. ============= Кроме того, не забывайте о механизме проверки целостности данных. Он запустит validateField для каждой записи. Теперь представьте, что данные, введенные в форме проверяются отдельно без формы, совсем по другой ветке алгоритма. Вам точно нужны эти заморочки? ============= Кроме того, не забывайте о механизме экспорта/импорта данных, AIF, доступ из внешних систем. Все этим механизмы также могут запустить validateField. ============= Кроме того, не забывайте о трехуровневости Аксапты. Форма работает и живет на клиенте. validateField может выполняться на сервере. ============= Вывод: в validateField таблицы используйте только данные из самой таблицы и/или из связанных таблиц. Ни в коем случае не используйте данные, которые находятся вне базы данных (кэш сессии, локальные переменные формы и т.п.) |
|
13.10.2009, 21:18 | #13 |
Участник
|
|
|
Теги |
интерфейс, программно, таблица, форма |
|
|