|
![]() |
#1 |
Гость
|
Имхо сложно сказать
![]() |
|
![]() |
#2 |
Злыдни
|
А последовательный вызов SysFlushDictionary, SysFlushAOD и SysFlushData не помогает?
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. |
|
![]() |
#3 |
Участник
|
Это первое что попробовал.
Не помогает. Пробовал запускать и на клиенте и на сервере. |
|
![]() |
#4 |
Участник
|
Цитата:
в микрософт вроде разрабочки изолированно работают, так что рестрат не должнен быть проблемой
Я выше в описании пояснил почему это все же проблема : 1. Как правило после добавления поля - надо их заполнить тестовыми данными и тут же прогнать проверку. Крайне неудобно закрывать клиента со всеми окнами редактора кода, затем снова открывать их и вспоминать что и где было. Это очень сильно замедляет процесс разработки. Особенно "приятно" это ощущать когда проект уже стартовал, надо срочно пофиксить баги, над душой стоит начальник с воплем, что ты сейчас зафакапишь нам все внедрение, а ты в очередной раз перестартуешь аос и снова открываешь редактор кода там где он был открыт 2 минуты назад ![]() 2. У меня к разработке может быть подключен вебпортал в котором крутится функциональность, которую я довожу до ума. Нашел ошибку - подправил код, снова продолжаю тестирование. Все перестартовывать крайне неудобно даже для одного разработчика. Кроме того, разве у нас запретили совместную разработку на одном аосе ? Нигде не видел такого указания. Да и в чем проблема то ? Дописать в ядре аналог классов SysFlushDictionary, SysFlushAOD и SysFlushData чтобы обнуляли соответствующий кеш объектов и все. Это просто лень и наплевательское отношение к коллегам по прикладной разработке. Последний раз редактировалось Logger; 25.01.2017 в 19:49. |
|
![]() |
#5 |
Участник
|
Надо будет попрбовать запустить аос с ключом
-INTERNAL=NOCURSORREUSE есть подозрение, что поможет. |
|
![]() |
#6 |
Участник
|
Проверил, похоже
-INTERNAL=NOCURSORREUSE нас спасает. Не удается повторить глюк. Правда это достигается ценой снижения производительности. Но в деве это некритично. |
|
|
За это сообщение автора поблагодарили: fed (3), Ace of Database (3), Perc (2), ax_mct (3), alex55 (3), S.Kuskov (2), Товарищ ♂uatr (1). |
![]() |
#7 |
Британский учённый
|
Цитата:
![]() А где вы этот ключ нашли, мне что то гугл не хочет показывать... По поводу наплевательского отношения, так это же не первый случай, на разработчиках бабла не срубишь и они где то в конце списка, если вообще там ![]()
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
![]() |
#8 |
Участник
|
Последний раз редактировалось Logger; 27.01.2017 в 07:50. |
|
|
За это сообщение автора поблагодарили: Link (5). |
![]() |
#9 |
Британский учённый
|
Да, спасибо, я искал документацию, и вот что удалось найти:
The Internal command-line parameters Axapta has a number of command-line parameters which extends the formal and documented list of parameters. All of these takes the form -INTERNAL=something, where something denotes the flavor of the parameter. Below is a list of parameters maintained by the BackOffice Feature Team (links to whitepapers appear where appropriate): -INTERNAL=NOCURSORREUSE Disable the SQL cursor reuse mechanism. Hurts performance, improves easy of tracing/debugging -INTERNAL=COMMENTS Insert comments in the generated SQL showing the values of placeholders. -INTERNAL=RELAXEDONTTSLEVEL Suppress the TTS level checking. Should only be used with care. -INTERNAL=RELAXEDONUPDATE Suppress the checks on updates, and deletes (manipulating data which was not seleted locked) -INTERNAL=UNIQUEINDEXES Force all Axapta indexes to be created unique (i.e. by appending the RecId column to the index). Requires the database to be re-indexed to be applied to the database. -INTERNAL=SYSLASTVALUE Make the table SysLastValue be stored in Axapta internal storage (as opposed to the SQL database). For backward compatibility only. -INTERNAL=SYSLASTVALUECACHE:cacheMode Overrule the default caching method on the system table SysLastValue. Default is 3 (“NotFound”), valid values 0 through 3. Used for testing and debugging purposes only. -INTERNAL=MONOCASE Simulate the way the Oracle-version handles indexed fields, i.e. lower (“mono”) case the data. Used for testing and debugging purposes only. -INTERNAL=NODATAAREAID Simulate the “SavePerCompany” table property to be “FALSE” on all tables. To be used in benchmarking. -INTERNAL=NOSYNCTABLELOCK Don’t apply exclusive tablelock on a table being synchronized. Еще есть для клиента: -INTERNAL=NOMODALBOXES switch prevents Axapta from different pop-ups during the process.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
|
За это сообщение автора поблагодарили: sukhanchik (6), Logger (3), Ace of Database (3), Raven Melancholic (2), gl00mie (3), -DocSerzh- (1). |
![]() |
#10 |
Участник
|
Наверное не то, но недавно натолкнулся, в базу знаний как говорится. На форму LedgerParameters Добавили ReferenceField. Поле сохраняется, но пишет что оно не извлечено. Оказалось что проблема в том что на форме удалён супер в методе init, и это стандарт. Как следствие дополнительные датасорсы по Reference Field не Outer джойнятся.
|
|
![]() |
#11 |
Участник
|
Парад "Неизвлеченных" полей.
На форме CustTable в источнике данных CustTable надо перекрыть метод executeQuery() вот так: X++: public void executeQuery() { QueryBuildDataSource qbds = this.query().dataSourceName(this.name()); ; qbds.orderMode(OrderMode::GroupBy); super(); } Последний раз редактировалось Ace of Database; 27.01.2017 в 14:43. |
|
![]() |
#12 |
Участник
|
|
|
![]() |
#13 |
Участник
|
Да, приятно самому управлять программно надписью "Поле не извлечено", именно когда сам этого хочешь
![]() |
|
![]() |
#14 |
Участник
|
Да, прикольная ссылочка. Мне тоже попадалась.
Кстати, если открыть ax32Serv.exe и поискать в UTF16 подстроку NOCURSORREUSE то рядом с ней найдется еще кучка параметров, которые в указанной ссылке не упомянуты (конечно без описания, но у некоторых по названию ясно что делают) : ENABLEREFERENCECOUNTERTRACE ENABLEEVALSTACKINDEXCHANGETRACE HANDLEASSIGNMENT:NO SKIPUTILLAYERSQUERY FORCECLISTRCMP DELETECONFIGFILE CRASHLOGPOSTFIX: RECCACHE: REPORTWARNINGS SILENT NOUNLOADONCOMPILE NOVCS NOARRAYFETCH: OLDCOMPILEROUTPUT STRICTSYNTAX RELAXEDSYNTAX NOSYNCTABLELOCK NODATAAREAID GENERATEKEYHELP NOMODALBOXES AOCPLOG CSDEBUGLOG SYSLASTVALUECACHE: MAXCACHELEVEL: IMPORTEXPORTID EXTRACTDOCUMENT UNIQUEINDEXES STRICTONUPDATE SHOWUNFREED: STRICTONTTSLEVEL RELAXEDONUPDATE RELAXEDONTTSLEVEL STATISTICS SHOWSQLERROR MOVEAOTELEMENTS NOCURSORREUSE SHOWDEBUG CLASSONSERVER REVERSEMAP NORESTRICTED NOSCOPE Последний раз редактировалось Logger; 30.01.2017 в 14:35. |
|
![]() |
#15 |
Участник
|
Надпись "Поле не извлечено" очень полезна при модификации форм, на которых отображаются сгруппированные данные. При добавлении новых полей есть шанс забыть сделать по ним группировку.
Раньше в таких случаях отображалось пустое значение, а сейчас - "Поле не извлечено". Например, в форму "в наличии" мне надо было добавить отображение остатков в разрезе самодельных полей в партии товара. Надпись "Поле не извлечено" напомнила, что надо залезть в класс InventDimCtrl_Frm_OnHand и добавить в метод modifyQuery группировку по самодельным полям. Последний раз редактировалось Ace of Database; 30.01.2017 в 15:40. |
|
|
За это сообщение автора поблагодарили: Logger (1), gl00mie (2), dech (2). |
![]() |
#16 |
MCTS
|
Экспресс-вариант: временно изменить на таблице свойство CacheLookup в None.
Главное потом не забыть вернуть обратно. |
|
![]() |
#17 |
Участник
|
|
|
![]() |
#18 |
MCTS
|
|
|
![]() |
#19 |
Участник
|
Мне тоже сперва так показалось. Я игрался этим свойством, но по факту оно не влияет.
Внимательно посмотрите описанный мной пример как воспроизводить баг. Ядро держит некий пул курсоров и случайным образом хватает оттуда объекты, так что в итоге при последовательном добавлении нескольких полей в табличку может получиться так, что у вас в пуле будут разные курсоры, с корректным перечнем и с неправильным (разным количеством полей). По несчастливой случайности при выполнении запроса из аксапты может попасть курсор с корректным числом полей и у вас создастся ложное ощущение, что проблема решена, но если попробовать задействовать больше курсоров (открыть 5-10 обозревателей таблички или сделать несколько параллельных вставок в БД), то тут-то проблема и проявится. |
|
![]() |
#20 |
Участник
|
Там просто меняется условие фильтрации, поэтому ядро открывает новый курсор, в котором корректный перечень полей.
Основная засада дам со вставкой записей в бд. |
|
Теги |
ax2012, command line parameters, internal, nocursorreuse, баг, не извлечено, параметры командной строки, поле не извлечено |
|
|