08.09.2004, 10:59 | #1 |
Гость
|
о слоях
планомерно изучая и перепроверяя документацию наткнулся на интересный для меня эффект:
при экспорте из usp слоя класса и импорте его в usr методы класса (как, впрочем, и таблицы) удаляются из слоя usp (остаются на слое usr). То же верно для job. Для других объектов не проверял. Из документации понял, что объекты накатываются на разные слои независимо. В связи с этим вопросы: 1. Это нормально? Как соотнести с документацией. 2. При импорте, допустим, в CUS слой будет происходить то же? (Вопрос к людям, делавшим это реально) . Или это характерно для слоев патчей? |
|
09.09.2004, 18:15 | #2 |
Гость
|
жаль, что так и не удалось послушать начальника транспортного цеха...
EVGL, пожалуйста, ответь на мой вопрос |
|
10.09.2004, 18:14 | #3 |
Moderator
|
Цитата:
1. Это нормально? Как соотнести с документацией.
Цитата:
2. При импорте, допустим, в CUS слой будет происходить то же? (Вопрос к людям, делавшим это реально) . Или это характерно для слоев патчей?
При экспорте из vap и импорте в usr - нет. В этом случае все отрабатывает корректно. |
|
10.09.2004, 18:19 | #4 |
Гость
|
Цитата:
При экспорте из vap и импорте в vap - то же самое.
Цитата:
При экспорте из vap и импорте в usr - нет. В этом случае все отрабатывает корректно.
|
|
10.09.2004, 18:35 | #5 |
Moderator
|
Цитата:
ээээ?
Цитата:
снизу-вверх вопросов нет. Сверху-вниз как?
p.s. Поправил оформление. |
|
10.09.2004, 18:43 | #6 |
Гость
|
дак вопрос то был про одни методы, но на разных слоях.
Готовишь метод на верхнем слое (usr)-> экспортируешь его -> переходишь на нижний слой (var) -> импортируешь этот метод из файла экспорта -> <он пропадает на верхнем слое (usr)> У Вас эта процедура проходит как я описал? |
|
10.09.2004, 18:48 | #7 |
Moderator
|
Цитата:
дак вопрос то был про одни методы, но на разных слоях.
Ну тогда, описанное Вами поведение не идет в разрез с документацией. При экспорте класса/таблицы экспортируются модифицированные методы (в случае, если мы экспортируем определенный слой). При импорте файла, он импортируется ВЕСЬ. Естественно при этом полностью перетирается этот метод на другом слое. Merge Axapta сама не делает. Но Вы можете при импорте сравнить xpo файл со слоем и сделать этот merge ручками. |
|
10.09.2004, 18:53 | #8 |
Гость
|
Андре, я не знаю , что такое merge, но процедуру описал подробно.
В файле импорта есть метод. Он затирает метод слоя, в который накатывается. Это понятно. Но также он затирает себя из вышележащего слоя. Это неправильно. |
|
10.09.2004, 18:55 | #9 |
Moderator
|
Извини, мне нужно отойти. Я отвечу завтра.
|
|
11.09.2004, 13:02 | #10 |
Moderator
|
Перечитал всю ветку еще раз. Что-то я совсем запутался. Давай еще раз:
Цитата:
Готовишь метод на верхнем слое (usr)-> экспортируешь его -> переходишь на нижний слой (var) -> импортируешь этот метод из файла экспорта -> <он пропадает на верхнем слое (usr)>
1) Цитата:
Готовишь метод на верхнем слое (usr)-> экспортируешь его ->
2) Цитата:
переходишь на нижний слой (var) -> импортируешь этот метод из файла экспорта ->
Здесь солгасен ? 3) Цитата:
<он пропадает на верхнем слое (usr)>
В данном случае верхний слой можно удалить и функционал останется тем же. Вот. Я не видел, чтобы этот момент был описан в документации, поэтому утверждать правелен ли этот подход или нет - нельзя. Скорее нужно смириться с этим фактом и учитывать его при работе. Чтобы избежать этого эффекта достаточно лишь сделать так, чтобы слои различались. Например после экспорта usr, но перед его импортом в var добавить на usr какой-нибудь комментарий. |
|
12.09.2004, 13:57 | #11 |
Гость
|
1) -ок
2) -ок 3) - нет: Цитата:
Import
When you import application objects, they will be placed directly in the current layer. ... - If you log on to the CUS layer, and import some application objects, all the imported application objects will be placed in the CUS layer. -- existing application objects in the USR layer will be left unchanged, but be "underridden" with the imported ones in the CUS layer. (So the USR layer probably has to be updated!) Цитата взята из Бест практис по программингу. Это раз. Верхний слой Акс не имеет права удалять, тем более без предупреждения. Ведь само присутствие кода в верхнем слое говорит о том, что код был изменен пользователем-программистом. И то, что он в текущий момент времени совпадает с импортируемым, не является достаточным основанием для удаления. Машина не может принимать решения за человека. Это два. Главное: даже при изменении кода в USP, сделанное после экспорта из него , но до импорта на USR, НЕ спасает объект(метод) от удаления из слоя USP. Это уже три. Так что все плохо. А в экзамене вопросов с такими примерами навалом |
|
13.09.2004, 10:31 | #12 |
Гость
|
Андре, так как возникло непонимание, и чтобы избежать его в дальнейшем, прошу Вас позволить мне проэкспериментировать со слоем var на Вашем сайте, либо выслать мне девелоперский код для этого слоя. Обещаю удалить его после проведения эксперимента.
|
|
13.09.2004, 13:03 | #13 |
Moderator
|
Цитата:
... проэкспериментировать со слоем var на Вашем сайте
Цитата:
либо выслать мне девелоперский код для этого слоя.
Могу предложить Вам подъехать в наш офис, где я смогу предоставить Вам компьютер для необходимого Вам эксперимента. Хотя, думаю, что подобную услугу Вам сможет оказать любой партнер mbs. |
|
13.09.2004, 13:06 | #14 |
Administrator
|
Есть подозрение, что это, на самом деле, нигде не описанная фича (по крайней мере, я не видел описания) работы с patch-слоями. Похоже, что при импорте на USR/USP-слой (аналогично, VAR/VAP, CUS/CUP и т. п.) происходит сравнение кода методов, и при отсутствии различий они не импортируются. Попробуйте, например, перенести класс с USR на USP, не удаляя его при этом с USR. При импорте между разными (то есть, не между основным и patch-) слоями, такого не происходит.
Еще раз повторяю, что это всего лишь мои личные выводы, основанные на результатах некоторого (не очень большого) количества экспериментов.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
13.09.2004, 13:33 | #15 |
Гость
|
2 Андре & Maxim Gorbunov
вот я и хочу сам посмотреть, что будет при экспорте-импорте между слоями основной-основной и основной-патч (возможно, и патч-патч). 2 Андре эксперимент будет заключаться в создании и экспорте-импорте временного класса и , допустим, job , между слоями, описанными выше. После получения результатов временные объекты будут удалены. Думаю, можно пообщаться в ICQ по поводу времени и места встречи. Мой номер в профиле. |
|
13.09.2004, 15:44 | #16 |
Moderator
|
Скорее всего тебе нужно авторизировать меня в icq. Дело в том, что мои сообщения не доходят. В случае проблем - я добавил свой icq в профайл.
|
|
23.09.2004, 12:31 | #17 |
Гость
|
после проведения экспериментов могу выложить отчет о них.
Выражаю благодарность Андре за техническую поддержку и дополнительную информацию об экспорте-импорте слоев. Итак. В результате экспериментов на лицензионной Аксапте 3.0 выявилось несоответствие технической документации и системы. Как отвечать на экзаменационные вопросы по программированию в свете изложенного, каждый должен решать сам. Порядок проведения экспериментов: 1. Создание на "верхнем" слое объекта. 2. Экспорт объекта 3. Изменение и сохранение объекта на "верхнем" слое 4. Импорт объекта на "нижний" слой Условия проведения: 1. Перезапуск клиента после каждой операции модификации+сохранения 2. В качестве объектов эксперимента были использованы Акс-объекты AOT Class и Job 3. Серии экспериментов проводились для пар слоев - usp (создание + эксп + модификация + сохранение) -> usr, var, vap (имп) - usr (создание) -> var, vap (имп) Результат: 1. Импортируемые методы класса затирают те же (по имени) методы того же класса на верхнем уровне. С верхнего уровня они просто удаляются. Несмотря на отличия в коде сохраненного на верхнем слое и импортируемого методов. Определение класса также удаляется. 2. Для job - все в порядке, не затирается. Объект остается на обоих слоях "по версиям". 3. 1. и 2. верны для любых пар слоев. 4. Для класса: При импорте на слой патчей из слоя импорта также удаляются все методы, не входящие в файл экспорта-импорта, но существующие на слое импорта. Как если бы при импорте было выбрано "Удалять существующие объекты". Наличие или отсутствие выбора этой опции при импорте значения не имеет и на импорт не влияет. 5. 4. верно для любого слоя патча. Предположение, основанное на незафиксированных <официально )> экспериментах: 1. Таблицы ведут себя так же, как классы. 2. Остальные объекты ведут себя так же, как job. Так вот. И никакого, понимаешь, возврата денег за бракованную вещь. |
|