09.08.2005, 15:10 | #1 |
Участник
|
Ошибка в компиляции после переноса слоя
Добрый день.
Выявил такую закономерность. Есть два приложения П1 (разработчесая) и П2 (боевая). В П1 разработка ведется в слое VAR. В П2 разработка (оперативное исправление) ведется в слое USP. В день Х происходит перенос приложения с П1 на П2. Перенос происходит следующим образом: 1) С П2 удаляется слой USP. 2) В П2 копируется слой VAR из П1. 3) Удаляются индексы. Ситуация: Был создан самописный класс К1, наследник от RunBaseBatch. С паками и унпаками, как полагается. Этот класс, после переноса в обоих приложениях находится в слое VAR. Необходимо оперативно внести в него изменения. Изменения вносятся в П1 в слое VAR и затем через экспорт перекочевывают на П2 в слой USP. Спустя, приходит время переноса приложения. И выполняются ряд операций описанных выше. После этого, в П2 нет слоя USP. Но в слое VAR класс К1 не компилируется. В нем пустой класдекларейшн. И так со всеми наследниками RunBaseBatch. В чем проблема тут засада, подскажите. |
|
09.08.2005, 15:12 | #2 |
Участник
|
Со всеми наследниками, прошедшими рассмотренные изменения.
|
|
09.08.2005, 16:05 | #3 |
Administrator
|
Первая версия, которая напрашивается - в приложении П1 методы класса по ошибке были созданы в USP-слое (или же там оказались). Очевидно, что после переноса слоя (то бишь подкладывания файлика) их там не было...
Заодно интересно узнать - не является ли ID класса К1 в П1 из диапазона 50000-59999? Хотя это только предположения.... точно сказать сразу не могу... |
|
09.08.2005, 16:12 | #4 |
Участник
|
При переносе в П1 класс был в слое VAR точно
Да и после переноса, сделанные изменения остались. Всё хорошо, да только класдекларейшин выглядит вот так class BAC_ExportSettleInvoice4PaymCust { } вместо class BAC_ExportSettleInvoice4PaymCust extends RunBaseBatch { boolean bImport ; FileName fileNameExport ; FreeText strDescription ; CustAccount custAccount; и т.д. а айдишник у класса 30091 |
|
09.08.2005, 17:01 | #5 |
Administrator
|
я правильно понял - что ПОСЛЕ переноса (подкладывания файлика) - у класса слетели все методы ? или слетел только classDeclaration ?
Удаление USP было ДО переноса axvar.aod ? |
|
09.08.2005, 17:40 | #6 |
Участник
|
только классдикларейшн
"Удаление USP было ДО переноса axvar.aod ?" Хороший вопрос. Именно он меня побудил написать на форум. Мой напарник считает, что разницы нет, удалять usp а потом копировать var или наоборот. Моё первое предположение было связанно именно с этим. Но это на уровне интуиции. Какая последовательность на самом деле была, не отследил. А если есть разница, то в чем? Как это может повлиять? При следующем переносе поставлю эксперимент. |
|
09.08.2005, 19:37 | #7 |
Administrator
|
в отношении ДО переноса axvar.aod -- уточню - конечно нет разницы - что делать сначала удаление axusp.aod или копирование axvar.aod, другое дело, что не нужно подкладывать axvar.aod, затем заходить в Аксапту - синхронизировать, компилировать, а только затем грохать USP-слой, после чего снова перестраивать индексы.
Разница может быть только в вышеописанном случае, когда в axvar.aod существуют элементы с ID из диапазона USR-USP (50000-59999). (Или в USP из диапазона 30000-39999). Тогда есть высокая вероятность существования двух элементов с одинаковыми ID. И тогда будет ситуация точь в точь как у вас |
|
09.08.2005, 19:48 | #8 |
Administrator
|
В Аксапте есть правило - элементам АОТ присваиваются ID-шники из разного числового диапазона в зависимости от слоев. Например - USR-USP - 5xxxx, CUS-CUP - 4xxxx, VAR-VAP - 3xxxx, из SystemDocumentation - 65xxx ну и так далее
Если вдруг, по какой-то случайности элемент с ID-шником одного слоя попадает в другой слой (чужой) - напр импортировали с сохранением ID, то при подкладывании - будут траблы.. уже несколько раз на форуме сие пролетало.. |
|
14.09.2011, 16:58 | #9 |
Участник
|
Есть 2 приложения 1 - Для разработок, 2 - Для тестирования
1). В 1-ом приложении опустил разработки с usr слоя на vap, откомпилировал, перезапустил AOS. 2). Переношу файл слой vap (axvap.aod ) в приложение 2, приложение стартует, но при старте клиента получаю ошибки и клиент завершает работу. При этом во 2 приложении vap слоя небыло вообще, так что совпадения id объектов исключено. Во время переноса слоя все AOS-ы остановлены Как быть в такой ситуации, что следует проверит, может я что то упустил? |
|
14.09.2011, 17:30 | #10 |
Участник
|
запустить delIndex.bat
|
|
14.09.2011, 18:13 | #11 |
Участник
|
Не помогло, теже ошибки и завершает работу клиент.
Теже ошибки встретил когда опускал с usr на vap в приложении Для разработок, при первом старте после перезапуска aos, но клиент не завершал работу, я просто сделал глобальную компиляцию и всё разрешилось, приложение работает. Но а почему тут завершается не ясно, и ведь ничего сделать не могу даже компиляцию. Как только убираю подложеный слой (vap), Тестовое приложение снова работает. |
|
15.09.2011, 09:37 | #12 |
Участник
|
а что пишет в evetLog на сервере AOS-a ?
|
|