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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.08.2005, 17:40   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Как заставить работать xRecord.suppressWarnings()
Добрый день.

Кто нибудь смог заставить работать метод
xRecord.suppressWarnings()

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

Как заставить её замолкнуть не знаю.
Пробовал использовать suppressWarnings() - значение устанавливается, но никак не влияет.
Старый 23.08.2005, 18:02   #2  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,320 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Есть более общая идея - в классе Info (системном) - объявляется некая переменная типа boolean: например - boolean locked
Затем делается parm-метод на этом классе - достукивающийся до этой переменной.
В широко известном методе add того же класса Info, в начале метода делается проверка - например:
PHP код:
if (locked)
       return 
Далее, пользуясь глобальной переменной infolog - можно в коде на некое время запретить выводить в инфолог сообщения:
PHP код:
infolog.parmLocked(true);
.....
infolog.parmLocked(false); 
Старый 23.08.2005, 19:33   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Интересный способ.
Но так радикально я не собирался решать проблему...

Видимо придется.
Старый 24.08.2005, 10:31   #4  
DenisS is offline
DenisS
Участник
 
65 / 24 (1) +++
Регистрация: 01.09.2003
Более общий вопрос
А у кого-либо есть идея как глобально (для всех таблиц) перекрыть метод validateField или validateWrite.
Это нужно для того, чтобы в поле, являющимся первичным ключом справочника запретить ввод спец.символов: ? * , ! и т.д.
Старый 25.08.2005, 08:30   #5  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Насчет возможности перекрытия validateField или validateWrite ничего сказать не могу, но думаю, что это невозможно.

А проверять первичный индекс на валидность можно непосредственно на сервере б/д в триггерах before insert. В принципе и для Oracle и для MS SQL можно написать скрипт, который будет бежать по метаданным и генерить скрипты для добавления соответствующих триггеров, так что по трудоемкости это будет не безумная задача
Старый 25.08.2005, 15:09   #6  
DenisS is offline
DenisS
Участник
 
65 / 24 (1) +++
Регистрация: 01.09.2003
2 AndyD
Такой подход ясен. При этом можно не заморачиваться с триггерами на Sql - сервере, можно написать джобик, который пройдется по AOT и сделает нужные изменения прямо в методах таблиц Axapta, но это усложнит переход на новые версии.
Я до конца не докопал, но возможно есть способ перекрывать методы не xRecord, а FormDataSource, поскольку такая проверка нужна только при ручном вводе данных.
Решения пока не нашел.
2 All: Есть идеи?
Старый 25.08.2005, 18:16   #7  
itfs is offline
itfs
Участник
 
277 / 43 (2) +++
Регистрация: 18.07.2005
Адрес: Moscow
Отладчики туде не ходят, ни у таблиц, ну у датасорсов .... думаю дело почти дохлое.

С уважением, itfs.
Старый 25.08.2005, 18:27   #8  
DenisS is offline
DenisS
Участник
 
65 / 24 (1) +++
Регистрация: 01.09.2003
Отладчики туда не ходят, но они ходят в Classes\SysSetupFormRun, где можно вытащить FormDataSource - но дальше - тупик.
Старый 25.08.2005, 18:52   #9  
itfs is offline
itfs
Участник
 
277 / 43 (2) +++
Регистрация: 18.07.2005
Адрес: Moscow
Ну почему тупик ... дальше можно вызвонить таблицу по AOT и динамечески перекрыть ей методы .... было бы чем .... получим самораспространяющуюся функциональность.

С уважением, itfs.
Старый 25.08.2005, 18:54   #10  
DenisS is offline
DenisS
Участник
 
65 / 24 (1) +++
Регистрация: 01.09.2003
2 itfs: Это Круто, такого подхода я еще не встречал. Интересно как это работающая система будет программировать самою себя...
Старый 25.08.2005, 19:00   #11  
itfs is offline
itfs
Участник
 
277 / 43 (2) +++
Регистрация: 18.07.2005
Адрес: Moscow
Ну такой подход на самом деле сильно не приветствуется ... странно, что меня еще не поставили в угол, за такие заявления ....

С уважением, itfs.
Старый 29.08.2005, 09:42   #12  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
2 DenisS

Когда я писал об использовании триггеров, я в первую очередь имел в виду минимизацию изменения кода приложения. Кроме того, как вы собираетесь изменять уже существующие методы на таблицах? Или у вас есть парсер?

2 itfs

Чем изменение кода во время выполнения приложения лучше контролируемого изменения до?
Старый 29.08.2005, 10:57   #13  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
2 AndyD Такой подход ясен. При этом можно не заморачиваться с триггерами на Sql - сервере, можно написать джобик, который пройдется по AOT и сделает нужные изменения прямо в методах таблиц Axapta, но это усложнит переход на новые версии. Я до конца не докопал, но возможно есть способ перекрывать методы не xRecord, а FormDataSource, поскольку такая проверка нужна только при ручном вводе данных. Решения пока не нашел.
У меня вот какие мысли:

1. можно попробовать сделать то же самое на уровне форм
(класс SysFormRun, но это в качестве идеи - я сам пока не вижу подробно реализацию)

2. Если аккуратно сделать Job, то также аккуратно можно и убрать результаты его работы другим джобом - это не должно усложнить переход на новые версии.
Старый 29.08.2005, 16:22   #14  
itfs is offline
itfs
Участник
 
277 / 43 (2) +++
Регистрация: 18.07.2005
Адрес: Moscow
Цитата:
Изначально опубликовано AndyD
2 itfs

Чем изменение кода во время выполнения приложения лучше контролируемого изменения до? [/B]
Да хуже, хуже. Но я бы немного не так позиционировал свое предложение. Я предлагал изменять код не везде (это очень и очень много, а кроме того, со временем все больше и больше). А ровно там, где это будет затребовано конкретной эксплуатацией. Надеюсь было понятно, что генерация состоится только 1 раз во время первого запуска кем - либо.

С уваженим, itfs.

PS. Естественно, самораспространяющийся код должен быть безупречен, иначе, есть риск войти в историю создателем 1-го вируса на Аксапте, причем на свою же голову.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Reporting Services и как работать с отчетами. KingPeas DAX: Прочие вопросы 11 14.08.2008 12:29
Как заставить работать TopEdge? KingPeas DAX: Программирование 1 06.11.2007 17:19
Как заставить работать hideToolbar() exceptor DAX: Программирование 3 13.02.2007 14:58
Резервирование заказанной номенклатуры не заставить работать.. MironovI DAX: Функционал 4 21.09.2005 13:27
Как заставить код исполняться на клиенте simply2double DAX: Прочие вопросы 7 13.05.2005 14:00
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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