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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.07.2006, 14:34   #1  
Pavel Pustovalov is offline
Pavel Pustovalov
Участник
 
65 / 11 (1) +
Регистрация: 09.08.2004
Адрес: Omsk
Проблема с messageBox
Всем привет.
Возникла след. проблема.
При использовании функции создания строк в заказе нужно производить проверку создаваемых строк и если проверка не проходит, то выдавать MessageBox для пользователя с вопросом типа: "Все равно создать строку?" Да/Нет.
Последовательное создание строк в этой функции идет через временную таблицу, которая хранит данные формы Создания строк заполненные пользователем, вот кусочек кода
Код:
while select tmpFrmVirtual
    where tmpFrmVirtual.qty
{
  ...
              salesLine.createLine(...); 
  ...

}
в методе createLine вызывается метод ValidateWrite, в котором происходит описанная проверка. Проблема в том, что после вызова MessageBox временная таблица tmpFrmVirtual обнуляется, т.о. если я создаю 10 строк, для 2-й из них выводится MessageBox, то оставшиеся 8 строк не обрабатываются, т.к. после обнуления происходит выход из цикла while
Если закомментировать вызов MessageBox, то цикл while select проходит без запинок. Может кто сталкивался с чем-то подобным? В чем я не прав?
Старый 31.07.2006, 15:25   #2  
lagr221374
Гость
 
n/a
Сделал job но такой ошибки не получил :-( может дело не в MessageBox?

tmpFrmVirtual tmpFrmVirtual;
salesLine salesLine;
int i;

;
for (i = 0;i< 10; i++)
{
tmpFrmVirtual.clear();
tmpFrmVirtual.Qty = i;
tmpFrmVirtual.insert();
}
while select tmpFrmVirtual
where tmpFrmVirtual.qty
{
Box::yesNo('test', DialogButton::Yes, 'test');
}
Старый 31.07.2006, 15:30   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Нет, дело именно в MessageBox и тем, что он отображается на клиенте. А обработка временной таблицы, видимо, на сервере.
(В смысле, что она на сервере заполнялась)

Я сталкивался с подобным, но не помню как решил.
Может попробуйте перенести обработку на клиента?
Старый 31.07.2006, 15:41   #4  
lagr221374
Гость
 
n/a
Цитата:
Сообщение от kashperuk
Нет, дело именно в MessageBox и тем, что он отображается на клиенте. А обработка временной таблицы, видимо, на сервере.
(В смысле, что она на сервере заполнялась)

Я сталкивался с подобным, но не помню как решил.
Может попробуйте перенести обработку на клиента?
Попробовал смоделировать все равно не получилось может уже на SP4 это вылечили? Вот даже примерчик смоделировал но в 3-уровневой все работает как положено.
Вложения
Тип файла: xpo TERST.xpo (2.6 Кб, 450 просмотров)
Старый 31.07.2006, 16:02   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Да, проект у меня тоже отрабатывает нормально.
3.0 SP3
Хмм..
Старый 01.08.2006, 06:30   #6  
Pavel Pustovalov is offline
Pavel Pustovalov
Участник
 
65 / 11 (1) +
Регистрация: 09.08.2004
Адрес: Omsk
Проект и у меня отрабатывает нормально, значит нужны еще какие-то условия. А какие не могу понять.
У нас 3.0 SP2 делаю в двухзвенке.
Старый 01.08.2006, 10:17   #7  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Хм. Как-то, помню, форма диалога, а, возможно, и МессаджБокс приводили к прерыванию транзакции. Попробуй сделать try .. catch и посмотри - возможно, он в catch выскакивает. И еще одна возможная трабла: обрати внимание, что в это время ничего е блокируется. А то пока пользователь курит, а на окошке у него висит "создавать да/нет" таблица может быть заблокирована. Но это так, маленькое примечание. В 4ке рулится

Георгий
Старый 01.08.2006, 10:28   #8  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
2George: как раз MessageBox приводит к блокировке в отличие от формы диалога. А вот чтобы транзакцию прерывали - это я не слышал.
__________________
Возможно сделать все. Вопрос времени
Старый 01.08.2006, 13:09   #9  
Andre-ka is offline
Andre-ka
Участник
 
2 / 10 (1) +
Регистрация: 26.10.2005
При любом вызове диалогового окна, во время транзакции происходит прерывание транзакции, если кто смог обойти это, расскажите как, если не секрет )).
Старый 01.08.2006, 13:16   #10  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Попробуйте UserConnection. Это если чисто технически.

А вообще вам принципиальна именно такая реализация? Что-то я не припомню, чтобы в стандартной Аксапте так делали.
__________________
С уважением,
glibs®
Старый 01.08.2006, 13:32   #11  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Я думаю, стоит сначала формировать некий RecordSortedList с записями, попадающими по тому или иному критерию. Возможно спрашивать разрешения или при его заполнении, а лучше - сначала сформировать отдельный лист и "скопом" проитись по нему, запрашивая подтверждения.

После того, как такой лист сформирован, в рамках транзакции провести групповую обработку/разноску записей.

С Уважением,
Георгий
Старый 01.08.2006, 21:01   #12  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Andre-ka
При любом вызове диалогового окна, во время транзакции происходит прерывание транзакции
Ну ок, спорить не буду . значит был ошибочного мнения . Пошел читать матчасть
__________________
Возможно сделать все. Вопрос времени
Старый 02.08.2006, 06:40   #13  
Pavel Pustovalov is offline
Pavel Pustovalov
Участник
 
65 / 11 (1) +
Регистрация: 09.08.2004
Адрес: Omsk
Конструкция примерно такова:
Код:

while select tmpFrmVirtual
    where tmpFrmVirtual.qty
{
  try
  {
       ......
       salesLine.createLine(...); 
       ...
   }
   catch (Exception::Error)
    {
         checkFailed("@SYS18447");
    }
}
Вызов messageBox НЕ находится ни в одной в транзакции.
Менять стандартный while select на RecordSortedList не хотелось бы и уже появился чисто спортивный интерес, почему в указанном выше проекте выборка продолжается, а в описанном мной случае сбрасывается.
Старый 03.08.2006, 12:56   #14  
Andre-ka is offline
Andre-ka
Участник
 
2 / 10 (1) +
Регистрация: 26.10.2005
дело в том, что надо было после определенных действий, и выплнения некоторых условий спросить у пользователя, что делать дальше, например, только при печати отчета спросить в стандартном диалоговом окне, а печать вызывается из транзакции, это стандартный аксаптовский функционал!, если изменять надо оч. много переписывать!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблема с поиском в InventTrans после changeCompany (DAX4) Raven Melancholic DAX: Программирование 11 13.03.2008 14:02
Проблема с кэшированием в Аксапте snirk DAX: Администрирование 9 19.07.2007 18:23
Проблема с единицей измерения longson DAX: Программирование 4 16.07.2007 14:35
Проблема с созданием объекта Lelya DAX: Администрирование 33 27.06.2005 16:38
Проблема: русские шрифты в отчетах, формируемых на сервере. Anais DAX: Администрирование 3 17.11.2003 13:20
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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