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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.12.2004, 11:55   #1  
Anais is offline
Anais
Участник
Аватар для Anais
 
182 / 10 (1) +
Регистрация: 16.06.2003
Адрес: Москва
? Система не видит новые параметры методов при работе
Столкнулась со следующей проблемой.
В стандартные методы системы добавлены новые параметры (параметры функции). Все видно, все компилируется, все ОК (в том числе и то место, откуда метод вызвается).
Запускаю отработку - система не желает заходить внуть измененного метода. Ругается и не видит новых параметров. Убираю параметры - снова все становится хорошо.

В чем может быть проблема??

ЗЫ
Что уже пробовала сделать: перекомпилировала АОТ, удалила индексы, очистила таблицу SySLastValues (именно в таком порядке). Не помогло.

HELP!!!!
__________________
Улыбаемся и машем, парни! Улыбаемся и машем...
Старый 31.12.2004, 12:31   #2  
Hamster is offline
Hamster
Участник
 
687 / 13 (2) ++
Регистрация: 15.05.2003
Инкрементная компиляция класса в котором меняли методы & обновить перекрестные ссылки
Старый 31.12.2004, 12:39   #3  
Anais is offline
Anais
Участник
Аватар для Anais
 
182 / 10 (1) +
Регистрация: 16.06.2003
Адрес: Москва
Пробовала - не помогает.
Более того. Проблема наблюдается не только для методов классов, но и для методов, например, на мэпах. И еще система не видит новые методы объявленные в мэпе (только во время работы - во время компиляции все ОК)
__________________
Улыбаемся и машем, парни! Улыбаемся и машем...
Старый 01.01.2005, 09:43   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Re: Система не видит новые параметры методов при работе
Цитата:
Изначально опубликовано Anais
В стандартные методы системы добавлены новые параметры (параметры функции).
Вы добавили параметры в классе потомке?
А в родителе не добавили?

Дело в том, что параметры в виртуальных методах должны совпадать.
А в Аксапте (как и в Джаве) все методы виртуальные.

Будьте предельно осторожны. Добавляйте параметры только со значениями по-умолчанию. Поскольку добавляя параметры, вы меняете интерфейс класса. И, скорее всего, вам придется менять и вызовы данного метода во всем коде.
Старый 01.01.2005, 21:59   #5  
Anais is offline
Anais
Участник
Аватар для Anais
 
182 / 10 (1) +
Регистрация: 16.06.2003
Адрес: Москва
Увы, все на так просто.
Я добавила параметры в класс - наследник RunBaseBatch, в новый (нет наследуемый) метод initParameters. И у всех новых параметров заданы значения по-умолчанию.
__________________
Улыбаемся и машем, парни! Улыбаемся и машем...
Старый 02.01.2005, 11:53   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Anais
Я добавила параметры в класс - наследник RunBaseBatch, в новый (нет наследуемый) метод initParameters.
Я неточно выразился.
Добавляйте параметры со значением по-умолчанию в класс родитель.
В тот класс, где метод появился впервые.

Во всех классах потомках, метод будет виртуальным и будет иметь те же параметры, что и у класса-родителя (к сожалению, перегрузки методов нет ни в джаве, ни в Х++).

Поскольку RunBaseBatch системный класс, изменить параметры в нем вы не сможете. Поэтому в вашем случае и параметры добавить не сможете.

Выкручивайтесь при помощи переменных класса и метода обертки.
Старый 03.01.2005, 19:31   #7  
Anais is offline
Anais
Участник
Аватар для Anais
 
182 / 10 (1) +
Регистрация: 16.06.2003
Адрес: Москва
Но ведь метода initParameters нет в RunBaseBatch. Он (initParameters) как раз и появляется впервые в том самом методе, в котором я пытаюсь добавить новые параметры.
__________________
Улыбаемся и машем, парни! Улыбаемся и машем...
Старый 03.01.2005, 21:29   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
приложите код.
Старый 04.01.2005, 13:49   #9  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
Похожая проблема - уже не знаю что делать.
Когда то в класс Global добавил свою ф-ю (например int func( int a )). Много раз ею пользовался.
Спустя долгое время понадобилось расширить список параметров, видоизменил ф-ю следующим образом: int func( int a, int b = 0 ).
И тут начались странности - если выполнять обновлённый код (где исп-ся оба параметра ф-ии) выдаётся ошибка "метод был вызван с неверным числом параметров" - откомпилировав класс Global от этой ошибки избавляемся, но только для текущего пользователя! Если заходить под разными пользователями ошибка возникает снова и снова пока под конкретным пользователем не откомпилируешь Global.
Пробовал глобальную перекомпиляцию, инкрементную компиляцию Global и класса, который использует ф-ю, перезапускал АОС - ничего не помогает.
Старый 04.01.2005, 14:12   #10  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Перекрестные ссылки компилировал?

С Уважением,
Георгий.
Старый 04.01.2005, 14:14   #11  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,909 / 5730 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Если мне не изменяет память, то экземпляр класса global создается для каждой клиентской сесии и для контекста сервера приложений. То есть - методы исполняющиеся на сервере и на клиенте (в рамках одной пользовательской сесии) обращаются к разным экземплярам globals. Я когда-то с этим изрядно намялся когда хотел в globals глобальную переменную состояния завести.
Так что боюсь - единственное что спасает в такой ситуации - это рестарт AOS
Старый 04.01.2005, 14:32   #12  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
Цитата:
Изначально опубликовано fed
Если мне не изменяет память, то экземпляр класса global создается для каждой клиентской сесии и для контекста сервера приложений. То есть - методы исполняющиеся на сервере и на клиенте (в рамках одной пользовательской сесии) обращаются к разным экземплярам globals. Я когда-то с этим изрядно намялся когда хотел в globals глобальную переменную состояния завести.
Так что боюсь - единственное что спасает в такой ситуации - это рестарт AOS
Я же написал что делал это. Перекрёстные ссылки надо попробовать.
Старый 04.01.2005, 14:47   #13  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Alks
Похожая проблема - уже не знаю что делать.
Не, перекрестные ссылки тут не при чем.
При построении перекрестных ссылок выполняется компиляция.
А тут компиляция не помогла.

Тогда совсем глупый вопрос - у вас в каких слоях ваш метод определен?
Если вы создали метод в слое cus, например, то в слое usr вы не сможете изменить интерфейс (возвращаемый тип и параметры) этого метода. Но это уж совсем тривиальный случай.
Старый 04.01.2005, 15:13   #14  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
Цитата:
Изначально опубликовано mazzy

Не, перекрестные ссылки тут не при чем.
При построении перекрестных ссылок выполняется компиляция.
А тут компиляция не помогла.

Тогда совсем глупый вопрос - у вас в каких слоях ваш метод определен?
Если вы создали метод в слое cus, например, то в слое usr вы не сможете изменить интерфейс (возвращаемый тип и параметры) этого метода. Но это уж совсем тривиальный случай.
В usr слое разумеется... Лицензии на другие слои у нас нет вроде бы. Тут интересная штука произошла - нажал на этой ф-ии "Сравнение", Аксапта предложила сравнить слой usr с единственным другим слоем с названием washed. Может тут где то собака порылась? Что за слой такой? При чём когда я нажал "Сравнить" Аксапты вылетела...
Старый 04.01.2005, 15:18   #15  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Этто не то... Это типа BestPractice очищенный слой (насколько я понимаю).
Цитата:
Не, перекрестные ссылки тут не при чем.
При построении перекрестных ссылок выполняется компиляция.
Ой ли, Сергей??? Что-то я такого не припомню.

Попробуй перекрестные, все-таки.
P.S. С бубеном танцевал? Бил в него?

С Уважением,
Георгий.
Старый 04.01.2005, 15:49   #16  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,909 / 5730 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Ну и я на последок задам банальный вопрос:
А ты не пробовал на клиентских рабочих местах стирать кэш AOD ? (Это который в файлах с расширением .AOC на каждом клиентском компе лежит)
Если нет - рекомендую поискать по форуму ключевое слово aoc. Тут эта тема неоднократно поднималась
Старый 04.01.2005, 17:09   #17  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
Цитата:
Изначально опубликовано fed
Ну и я на последок задам банальный вопрос:
А ты не пробовал на клиентских рабочих местах стирать кэш AOD ? (Это который в файлах с расширением .AOC на каждом клиентском компе лежит)
Если нет - рекомендую поискать по форуму ключевое слово aoc. Тут эта тема неоднократно поднималась
Во!... А это похоже на солюшн! Ведь симптомы как раз состоят в том что у разных пользователей разные рантайнмы класса Global, несмотря на то что аос перегружали и перекомпилировывали... Такое возможно только если на клиентах каким то образом кешируется AOD, икласс Global является каким то исключением по сравнению с другими классами (по нему это видно).
...
Вот только про кеш AOD на клиентах я ничего слышал, а поиск по слову АОС выдаст мне треть всего этого форума.

Ладно, буду рыть, спасибо всем за советы!
Старый 04.01.2005, 17:14   #18  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
Цитата:
Изначально опубликовано fed
Ну и я на последок задам банальный вопрос:
А ты не пробовал на клиентских рабочих местах стирать кэш AOD ? (Это который в файлах с расширением .AOC на каждом клиентском компе лежит)
Если нет - рекомендую поискать по форуму ключевое слово aoc. Тут эта тема неоднократно поднималась
Не ну точно оно!! Судя по уже встреченным описаниям проблем должно помочь. Жаль только если придется это делать на каждом клиенте.... Неспортивно как то...
Спасибо, завтра буду пробовать.
Старый 04.01.2005, 18:08   #19  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Ага! У меня прям батник есть, я его запускаю периодически на всякий случай.
Но что бы чистить на каждом клиенте

Удачи!
С Уважением,
Георгий.
Старый 04.01.2005, 22:32   #20  
Anais is offline
Anais
Участник
Аватар для Anais
 
182 / 10 (1) +
Регистрация: 16.06.2003
Адрес: Москва
Цитата:
Изначально опубликовано mazzy

Тогда совсем глупый вопрос - у вас в каких слоях ваш метод определен?
Если вы создали метод в слое cus, например, то в слое usr вы не сможете изменить интерфейс (возвращаемый тип и параметры) этого метода. Но это уж совсем тривиальный случай.
А как же изменение "стандартных" методов? В моем случае метод определен аж на dis-слое. А изменения - на usr.
Может, это глупый аргумент, но ведь раньше работало. Никогда никакие проблем...

Код такой:
<b>Определение метода (класс FactureJourCreate_RU)</b>
public void initParameters(NoYes _mustBeUpdated,
NoYes _showPreview,
PrintOut _printOut,
FacturePrintType_RU _printType,
NoYes _printMST,
FactureExternalId_RU _factureExtId,
TransDate _factureDate,
CustVendAC _custVendAC,
CurrencyCode _currencyCode,
FactureType_RU _factureType,
CustVendAC _consignee = "",
CustVendAC _consignor = "",
OffSessionId_RU _offsessionId = "",
AttorneyId_RU _attorneyId = "",
AttorneyIssuedName_RU _attorneyIssuedName = "",
AttorneyDate_RU _attorneyDate = dateNull(),
Addressing _deliveryAddress = "",
TransDate _factureDateExternal = _factureDate,
NumberSequenceGroupId _factureExtIdNumSeq = "",
BGR_FactureDescr _bgr_FactureDescr = "" // BGR_BF0026
// BGR_BF0035 >>
,BGR_NumDecimalsQty _BGR_numDecimalsQty = BGR_NumDecimalsQty::None,
BGR_SalesFormType _BGR_salesFormType = BGR_SalesFormType::None,
FromDate _BGR_fromDate = dateNull(),
ToDate _BGR_toDate = dateNull(),
BGR_NumDecimals _BGR_numDecimals = BGR_NumDecimals::None
// BGR_BF0035 <<
)
{
...
}

<b>Вызов метода (из метода createFacture формы FactureEditLines_RU)</b>
factureCreate.initParameters(update,
preview,
printFacture,
printType,
PrintInMST.value(),
FactureExternalId.text(),
FactureDate.dateValue(),
contragLoc,
Currency.text(),
factureEngine.factureType(),
Consignee.text(),
Consignor.text(),
factureEngine.offSessionID(),
AttorneyId.text(),
AttorneyIssuedName.text(),
AttorneyDate.dateValue(),
Address.Address,
FactureDate_External.dateValue(),
// BGR_BF0035 >>
FactureExtIdNumSeqGroupId.text(),
BGR_FactureDescr.text(),
BGR_NumDecimalsQty.selection(),
custInvoiceJour1.BGR_SalesFormType,
BGR_StartDate.dateValue(),
BGR_FinishDate.dateValue(),
BGR_NumDecimals.selection());
// BGR_BF0035 <<

Танцы с АОС'ами и кэшами точно не годятся - проблемы в двухзвенке, машины перегружались не раз.
__________________
Улыбаемся и машем, парни! Улыбаемся и машем...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Query - getNo(n) - не видит данных Arahnid DAX: Программирование 15 19.02.2009 11:52
Denis Fedotenko: Новые поля в складских проводках Blog bot DAX: База знаний и проекты 10 24.05.2007 11:57
ALEG: Почему система сопротивляется изменениям и как с этим бороться Blog bot DAX Blogs 2 17.11.2006 10:17
Query, параметры введенные пользователем kostas DAX: Программирование 8 26.05.2005 16:43
Параметры почты - не работает... soin DAX: Функционал 3 09.01.2004 01:00

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

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

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