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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.09.2005, 15:38   #1  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Ошибка при вызове диалога
При выполнении данного кода
PHP код:
Args args = new Args();      
ttsbegin
new 
MenuFunction(MenuItemDisplayStr(PickingStat), MenuItemType :: Display).run(args);
ttscommit
Выдается ошибка:
Обнаружены непарные операции TTSBEGIN/TTSCOMMIT

В принципе вызов может быть любым, важно чтобы выдавалось диалоговое окно (наследник класса RunBase)

Подскажите почему нельзя вызвать диалог внутри транзакции?
Старый 30.09.2005, 15:43   #2  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Просто нельзя, и все. Но если очень хочется, то максимум, что можно использовать, это DialogBox.
Старый 30.09.2005, 15:48   #3  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
То что нельзя - это я уже понял. Хотелось бы знать почему. Это ошибка в классе RunBase или какая-то его уникальная особенность? Если второе, то для чего так сделано?
Например, в моем случае простым DialogBox не обойтись. Мне нужно вызвать таким образом стандартный класс, у которого есть диалог.
Старый 30.09.2005, 15:58   #4  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Что интересно ошибка возникает не всегда! Эту тему я уже подымал где-то, тогда проверили - не падает, я удивился и оставил вопрос до выяснения, на самом деле самому очень интересно было бы узнать наконец в чем тут дело, если кто в курсе - UP и еще раз UP
Старый 30.09.2005, 16:01   #5  
DenNik is offline
DenNik
Участник
 
62 / 9 (1) +
Регистрация: 24.05.2005
Цитата:
Изначально опубликовано Lucky13
То что нельзя - это я уже понял. Хотелось бы знать почему. Это ошибка в классе RunBase или какая-то его уникальная особенность?
Итересно... Один пользователь думает что ему набрать в диалоге, а другие его ждут...
Потом другой... Ждут остальные

Может всё таки собрать параметры до транзакции?
Старый 30.09.2005, 16:03   #6  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Цитата:
Изначально опубликовано Lucky13
То что нельзя - это я уже понял. Хотелось бы знать почему.
Вы еще спрашиваете?? Пользователь инициировал процесс, и в процессе ТРАНЗАКЦИИ (!!!) Вы вывешиваете юзеру диалог. А он, подлец, пошел покурить. А потом на обед. И у вас куча взаимных блокировок, все ждут, пока таблица освоболдиться
Цитата:
Изначально опубликовано MironovI
очень интересно было бы узнать наконец в чем тут дело, если кто в курсе - UP и еще раз UP[/B]
Кажется... нет. точно не помню, врать не буду. Но кто-то что-то писал... возможно, стоит поиском попробовать.. было чо-то.

С Уважением,
Георгий
За это сообщение автора поблагодарили: Corel (1).
Старый 30.09.2005, 16:09   #7  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Все правильно: никакая это не ошибка. RunBase ни при чем. Все формы в Аксапте выдают сообщение об ошибке, если вызываются внутри транзакции. Даже форма InventOnhandCheckReserve, которая на первый взгляд вызывается внутри транзакции, на самом деле активируется перед ней.

Так что запрашивайте все параметры до начала транзакции.
Старый 30.09.2005, 16:12   #8  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Логично. Видимо при вызове диалога закрываются все открытые транзакции, поэтому и возникает ошибка.
Старый 30.09.2005, 16:32   #9  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Вот нарыл немного..

http://www.axforum.info/forums/showt...E0%EA%F6%E8%E8

И тут (последние 3-4 поста)

http://www.axforum.info/forums/showt...0&pagenumber=2
Старый 30.09.2005, 16:38   #10  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Цитата:
Изначально опубликовано George Nordic

Вы еще спрашиваете?? Пользователь инициировал процесс, и в процессе ТРАНЗАКЦИИ (!!!) Вы вывешиваете юзеру диалог. А он, подлец, пошел покурить. А потом на обед. И у вас куча взаимных блокировок, все ждут, пока таблица освоболдиться
По поводу "Вы еще спрашиваете?? " - допустим по ходу выполнения операции длящейся 30 часов возникает некая спорная ситуация, которая требует либо принятия решения либо отката ее целиком..

В 1С кстати (только не плюйтесь сразу ) - у любой формы, диалога есть таймаут - после его истечения форма закрывается и там обычно ставится ttsabbort; В Аксе я так понимаю такого нет.. да и не стоит пытаться сделать из хорошей системы 1С
Старый 30.09.2005, 17:20   #11  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Если после 30 часов возникает спорная ситуация и может принять решение только пользователь, то значит процедура спроектирована НЕВЕРНО и надо было подумать 30 часов назад и задать все вопросы юзеру ДО запуска.
Старый 30.09.2005, 17:41   #12  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Цитата:
Изначально опубликовано Wamr
Если после 30 часов возникает спорная ситуация и может принять решение только пользователь, то значит процедура спроектирована НЕВЕРНО и надо было подумать 30 часов назад и задать все вопросы юзеру ДО запуска.
Считаю это схоластика, даная необходимость может возникнуть и отрицать ее нельзя ДОпустим смотри - я там ссылки кидал - вот вторую почитай от начала до конца - все поймешь.. Если проверять все последствия до начала работы операции - процедура будет выполняться в два или более раз дольше - первая итерация будет проверка, вторая собственно что либо делание - если посмотреть как реализована разноска складских журналов - там все так и делается, а ведь могли бы эти жрналы разносится в два раза быстрее
Старый 30.09.2005, 18:25   #13  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
...это схоластика, даная необходимость может возникнуть и отрицать ее нельзя...
Можно и нужно. Стандартная Axapta состоит из тысяч бизнес-процессов, однако она спроектирована так, что ни одного диалога в процессе транзакции в ней нет. Пример, приведенный вами, - плохой. Складские журналы запрограммированы так, а не иначе, чтобы можно было выполнить проверку отдельно от разноски и при этом повторно использовать код, в противном случае все можно было бы сделать в один проход или с дублированем кода проверки.

Я считаю, что дискуссии тут неуместны: примите как данность, наберитесь оптимизма и ищите обходные пути.
Старый 03.10.2005, 16:38   #14  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Возвращаясь к этому посту http://www.axforum.info/forums/showt...0&pagenumber=2 - объясню в кратце - есть процедура синхронизации базы которая запускается в частности при импорте проекта - думаешь она идет в рамках транзакции?... Я тоже так думал.. и каково же было мое удивление.. оказывается при неудачном импорте изменений ты рискуешь и очень уронить базу, о последствиях и стоимости такой роскоши говорить излишне.. Так почему же такая важная операция идет без транзакции - да потому что в случае если при попытке построить новый уникальный индекс по таблице допустим требуется проверка уникальности данных и если они не уникальны - вылетает диалог с гридом неуникальных записей и тебе предлагают либо их удалить либо не создавать индекс.. Я свою базу поднимал недели две.. Ты конечно скажешь - а потому что ее неправильно написали - надо было сначала прооверить.. так вот - ошибки инициируются зачастую "недоступными инстанциями" аля - СУБД, COM, ActiveX..
МОе мнение - просто не хватило рук сделать нормально.. Ну я конечно понимаю что это реальность данная нам в ощущениях, но говорить что это правильно реализовано я бы не стал (тем более вываливание Ахапки я не считаю "реализацией", а скорее незаткнутой возможность сделать граблю в разработке)..
Старый 23.10.2013, 11:03   #15  
Murlin is offline
Murlin
Возьми свет!!!
Аватар для Murlin
Самостоятельные клиенты AX
Злыдни
 
291 / 32 (2) +++
Регистрация: 22.09.2008
Адрес: Тюмень, Рашан Федерашан
А не мог бы кто нибудь дать ссылку на что-нибудь вроде Best Practice про все это. Большая просьба. Проблема в том что некоторая фирма оспаривает этот факт и требует денег за доработку изменения, а у нас из за этого блокировки висят, но правда там не диалог а Box, но сути наверное это не менят.
Причем требования у них сильно жоские там где этого по сути не требуется.
Самого уже это достало до жути, вообщем я то думал фирма "крутая", "супер-спецы", а я тут валенок сибирский.
__________________
Axapta 3.0 sp 5 Oracle
Диплом Интернет-Университета Информационных Технологий: Основы бухгалтерского учета
Я могу взорвать вам мозг!!!

Последний раз редактировалось Murlin; 23.10.2013 в 11:10.
Старый 23.10.2013, 11:14   #16  
Murlin is offline
Murlin
Возьми свет!!!
Аватар для Murlin
Самостоятельные клиенты AX
Злыдни
 
291 / 32 (2) +++
Регистрация: 22.09.2008
Адрес: Тюмень, Рашан Федерашан
Цитата:
Сообщение от MironovI Посмотреть сообщение
Считаю это схоластика, даная необходимость может возникнуть и отрицать ее нельзя ДОпустим смотри - я там ссылки кидал - вот вторую почитай от начала до конца - все поймешь.. Если проверять все последствия до начала работы операции - процедура будет выполняться в два или более раз дольше - первая итерация будет проверка, вторая собственно что либо делание - если посмотреть как реализована разноска складских журналов - там все так и делается, а ведь могли бы эти жрналы разносится в два раза быстрее
Это тока в теории... А на практике работает совсем другое и не весит пол-системы, ушол человек чай пить и все, ждем когда он вернется все.
__________________
Axapta 3.0 sp 5 Oracle
Диплом Интернет-Университета Информационных Технологий: Основы бухгалтерского учета
Я могу взорвать вам мозг!!!
Старый 23.10.2013, 11:20   #17  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
http://msdn.microsoft.com/en-us/library/aa609617.aspx
Цитата:
Do not use anything that requires a user interaction within a transaction (such as an action on a dialog box).
За это сообщение автора поблагодарили: Murlin (1).
Старый 23.10.2013, 11:21   #18  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от Murlin Посмотреть сообщение
А не мог бы кто нибудь дать ссылку на что-нибудь вроде Best Practice про все это. Большая просьба. Проблема в том что некоторая фирма оспаривает этот факт и требует денег за доработку изменения, а у нас из за этого блокировки висят, но правда там не диалог а Box, но сути наверное это не менят.
Причем требования у них сильно жоские там где этого по сути не требуется.
Самого уже это достало до жути, вообщем я то думал фирма "крутая", "супер-спецы", а я тут валенок сибирский.
Насколько я понял, это даже не по циклу ВР, просто Аксапта не позволяет такого делать в принципе(архитектура приложения так устроена).

Цитата:
Сообщение от EVGL
Стандартная Axapta состоит из тысяч бизнес-процессов, однако она спроектирована так, что ни одного диалога в процессе транзакции в ней нет.
Цитата:
Сообщение от EVGL
примите как данность, наберитесь оптимизма и ищите обходные пути.
Старый 23.10.2013, 11:23   #19  
Murlin is offline
Murlin
Возьми свет!!!
Аватар для Murlin
Самостоятельные клиенты AX
Злыдни
 
291 / 32 (2) +++
Регистрация: 22.09.2008
Адрес: Тюмень, Рашан Федерашан
Цитата:
Спасибо. Попробую если не получица я им на киргизский переведу.
__________________
Axapta 3.0 sp 5 Oracle
Диплом Интернет-Университета Информационных Технологий: Основы бухгалтерского учета
Я могу взорвать вам мозг!!!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка при вызове COM-метода koraman DAX: Программирование 8 23.10.2014 09:57
Ошибка при вызове функции «к поставке» в заказах Starling DAX: Функционал 9 15.01.2008 11:39
Критическая ошибка при вызове ранее настроенной формы tolstjak DAX: Администрирование 5 11.04.2007 09:51
при вызове функции из своей DLL, вылетает ошибка Delfins DAX: Программирование 9 07.03.2006 19:29
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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