14.05.2004, 13:09 | #1 |
Участник
|
Народ подскажите плиз, можно ли в Axapta 3.0 программноо (из моего кода) переместить объект из одного слоя в другой, не выходя при этом из аксапты.
Т.е. я работаю в слое USP, создал Таблицу, форму, ксласс, расширенный тип... да что угодно, и теперь я хочу поднять этот объект в слой USR из своего кода.., причем находясь в USP (подойдет и такой вариант, сменить currentLayer, но при этом не выходить из аксапты) Я конечно понимаю, что можно сделать Export потом выйит загрузиться в другом слое, и сделать Import, но этот вариант не устраивает, можно опятьже воспользоваться классом SysCopyToCurrentLayer, но опятьже, он делает это темже самым экспортом и импортом, и его надо запускать из USR слоя, т.е. опять же выходить из аксапты, и грузиться в другом слое. Ведь возможна в аксапте такая штука: что если объекты уже существуют в обоих слоях и в USR и в USP, то я находясь в USP смогу, переписать объект в USR c помощью TreeNode.AOTGetSource-> TreeNode.AOTSetSource и TreeNode.AOTGetProperties-> TreeNode.AOTSetProperties, ну а вот с вновь созданными объектами, которых нет в слое USR так уже не поступить. Кто что скажет на эту тему?? Может действительно есть способ программно сменить текущий слой? Этот вариант тоже подойдет:-) |
|
14.05.2004, 13:31 | #2 |
Участник
|
можно. но это закат солнца вручную. дешевле купить лицензию.
см. таблицу UtilElements. |
|
14.05.2004, 13:43 | #3 |
Участник
|
Цитата:
Сообщение от mazzy
можно. но это закат солнца вручную. дешевле купить лицензию.
см. таблицу UtilElements. Или нужно создать новую запись в ней и в source поместить весь код из объекта? И кстати, можно поподробнее, про купить лицензию? У меня есть лицензия на разработку, и даже в нескольких слоях... или речь о другой лицензии?? в которой есть подобный функционал? Извиняюсь за чайниковские вопросы, просто я с аксаптой еще меньше недели:-) |
|
14.05.2004, 13:49 | #4 |
Участник
|
Цитата:
Сообщение от shura
смотрел мельком, сейчас посмотрю поподробнее но вот собсно вопрос, если я в UtilElements сменю UtilLevel, для объекта, он что переедет, в другой слой? А как же код переползет?
Или нужно создать новую запись в ней и в source поместить весь код из объекта? Самое главное, нет никаких гарантий, что этот способ будет работать корректно. Вам нужно будет не столько сделать, сколько обеспечить корректность. А это еще полдня придется бегать. про лицензии здесь Почему наши разработки не работают у клиента на его лицензии? Axapta 3.0 |
|
14.05.2004, 13:53 | #5 |
Участник
|
Таки уточню.
Сам код - у вас переползет. Но код должен быть скомпилирован, он должен попасть в индексы и кэши, особенно для трехуровневых клиентов. Если в коде есть объявление режима кэширования таблиц, то они должны изменить режим кэширования. Если у вас форма, то должны создасться записи в security-таблицах и т.д. и т.п. А вот это простым копированием кода не делается. Что нужно вызвать чтобы обеспечить корректную работу - не знаю. Мало того, считаю пустой тратой времени и денег разбор в этих механизмах. Если у вас есть время и вам за это платят... Попробуйте разобраться. Гарантий никаких в этом случае нет. |
|
14.05.2004, 13:55 | #6 |
Участник
|
Ну значит про лицензии я правильно понял:-)
Да все эти лицензии у меня есть... Просто мне нужен контороль разработки, т.е. кто что чего и когда поменял... Впринципе я уже написал то что мне нужно, но для корректной работы и сравнения, мне нужно как раз программно поднимать объеты с одного слоя в другой... Сейчас попробую поиграть с UtilElements я на нее мельком уже глядел и пытался, для начала тупо сменить UtilLevel , но это не отрабатывало... сейчас попробую что-нить еще, если получится напишу:-) Спасибо за ответы... |
|
14.05.2004, 14:00 | #7 |
Участник
|
Цитата:
Сообщение от shura
Просто мне нужен контороль разработки, т.е. кто что чего и когда поменял...
тогда вы неправильный инструмент выбрали. скопируйте aod-файлы в каталог old внутри приложения. Наслаждайтесь сравнением со старыми слоями. Если вы выберете копирование, кстати, у вас индексный файл намного меньше будет. Аксапта будет быстрее работать, трафика будет меньше, требования к работчим местам существенно меньше... Не программируйте |
|
14.05.2004, 14:02 | #8 |
Участник
|
ну это понятно, вызвать компиляцию программно тоже можно, насчет индексов и записи в security таблицах тут не знаю... насчет веремени, у меня его как раз мало, потому и начал задавать вопросы :-) ладно, еще раз спасибо, пошел разбираться:-))
|
|
14.05.2004, 14:16 | #9 |
Участник
|
Цитата:
Сообщение от mazzy
а зачем вам слои? только для того, чтобы сравнить в средствах разработки?
тогда вы неправильный инструмент выбрали. скопируйте aod-файлы в каталог old внутри приложения. Наслаждайтесь сравнением со старыми слоями. Начальству хочется видеть не различия между тем, что было в начале проекта и в конце, им хочется видеть все изменения в разрезе каждого Бизнес процесса, и каждого ТЗ, и кто их делал и когда... т.е. один и тотже объект (например форма), была в процессе разработки изменена 5 раз, исходя из 5 тех. заданий, изменения делали 3 программера.. так вот хотят видеть по каждому ТЗ, что в 1 случае было добавлено одно поле таким-то программером, по второму ТЗ был изменен метод таким-то программером... и т.д... сравнение и запись результатов уже сделаны, привязка их к программеру ТЗ и ЮП тоже сделаны (это все оказалось просто), но вот чтобы делать автоматическое сравнение, мне надо чтобы объекты жо изменения были в одном слое, после изменения в другом...., и соответственно, чтобы после записи результатов сравнения, объект был бы поднят (уже с изменениями) обратно в верхний слой.... |
|
14.05.2004, 14:29 | #10 |
Модератор
|
Цитата:
Сообщение от shura
смотрел мельком, сейчас посмотрю поподробнее но вот собсно вопрос, если я в UtilElements сменю UtilLevel, для объекта, он что переедет, в другой слой?
у меня попытки update и delete по UtilElements приводят к крэшу (вот вам и обработчик ошибок)
__________________
-ТСЯ или -ТЬСЯ ? |
|
14.05.2004, 14:32 | #11 |
Модератор
|
Цитата:
Сообщение от shura
согласен, но мне немного другую задачу поставили (пока что я не смог от нее отмахнуться)
Начальству хочется видеть не различия между тем, что было в начале проекта и в конце, им хочется видеть все изменения в разрезе каждого Бизнес процесса, и каждого ТЗ, и кто их делал и когда... т.е. один и тотже объект (например форма), была в процессе разработки изменена 5 раз, исходя из 5 тех. заданий, изменения делали 3 программера.. так вот хотят видеть по каждому ТЗ, что в 1 случае было добавлено одно поле таким-то программером, по второму ТЗ был изменен метод таким-то программером... и т.д...
__________________
-ТСЯ или -ТЬСЯ ? |
|
14.05.2004, 14:49 | #12 |
Участник
|
Цитата:
Сообщение от Vadik
А когда ТЗ/изменений по объекту будет больше 16?
Там смысл такой, разработка вся, например в USP слое, закончил модификацию, объекта, нажал кнопочку, записались все твои изменения, с привязкой к ТЗ, (сравнения автоматические с любым из вышележещих слоев, в котором находится объект (например со слоем SYS), либо если он новый, то сохранится весь код), затем, этот объект поднимается на слой выше в USR, а из USP удаляется, и пожалста, редактируй его по следующему Т.З. (но опять же находясь в слое USP) И по следующему Т.З. запишутся уже изменения, начиная, уже с первых модификаци, так как будто они всегда в нем и были (т.е. выполнится сравнение уже USR USP ) и мало того, еще и запишется, что объект модифицирован уже второй раз, и если хошь посмотреть что было в первом разе, или туда-то.. и так далее... т.е. этих Т.З. может быть хоть миллион:-) И впоследствие можно буить посмотреть как изменялся каждый объект и покаким ТЗ.... и мало ого, елси постараться, то и на основе этих изменений выполнить откат.... Но затык именно в автоматическом поднятии ... ну уж очень не хочется скакать из одного слоя в другой посредством выхода и входа в аксапту, и руками делать Экспорт импорт... |
|
14.05.2004, 14:54 | #13 |
Участник
|
Цитата:
Сообщение от shura
Начальству хочется видеть не различия между тем, что было в начале проекта и в конце, им хочется видеть все изменения в разрезе каждого Бизнес процесса, и каждого ТЗ, и кто их делал и когда...
приложение реально существует в таблице UtilElements. Вот и подумайте, как воспользовать СУЩЕСТВУЮЩИЙ инструмент, вместо того, чтобы изобретать НОВЫЙ. Причем изобретая новый инструмент, вы значительно ухудшаете параметры системы (помимо того, что тратите время на разработку никому, кроме вас самих, не нужного инструмента) Либо наконец выгружайте ежедневно весь AOT в текстовый файл и загоняйте в CVS систему. Главное чего я понять не могу - нафига вы программировать то начали? Вам существующих инструментов мало? Извините, shura. Это не лично вам упрек. В очередной раз убеждаюсь, что если в Аксапте задачу начинает решать программист "большим программированием", то он решает что угодно, но не исходную задачу. |
|
14.05.2004, 14:55 | #14 |
Участник
|
Может все таки есть возможность в Аксапте, программно сменить слой, в котором ты работаешь?
Т.е. Зашел в аксапту в слое USP и не выходя из нее сменить на USR слой, тогда моя проблема буить решена, я сделаю запись объектов, тем же самым export import но так как я нахожусь уже в USR слое, то и объект буить там жить:-) |
|
14.05.2004, 14:57 | #15 |
Участник
|
Цитата:
Сообщение от Vadik
Это же псевдотаблица, то есть просто представление AOD, структура которого неизвестна, в табличной форме, чтобы можно было по ней выборки делать.
Не удивлюсь, что aod - это просто база, а utilElements, utilIDElements просто view к ней. Хотя не проверял и зуб давать по этому поводу не буду. |
|
14.05.2004, 14:57 | #16 |
Участник
|
Цитата:
Сообщение от shura
Может все таки есть возможность в Аксапте, программно сменить слой, в котором ты работаешь?
|
|
14.05.2004, 15:02 | #17 |
Участник
|
Цитата:
Сообщение от mazzy
В Аксапте есть журнал изменения базы данных. Этот инструмент как раз и предназначен для того, чтобы отслеживать изменения (сам не пробовал).
приложение реально существует в таблице UtilElements. А насчет зачем изобретаю велосипед, и начал сие писать, это потому что программист плохой (не смог убедить начальство, что этого делать не нужно!) |
|
14.05.2004, 15:08 | #18 |
Участник
|
Цитата:
Сообщение от shura
Нет в самой базе данных такой таблицы, и соответственно я не могу отследить изменения в ней, я бы их и без аксапты отследил:-)
читайте FAQ Описание скрытых объектов Системные объекты и их описание Если вы хотите сказать, что вы не видите эту таблицу при добавлении в инструмент databaselog... но id-то у этой таблицы есть, а у вас есть доступ к базе. Копируйте aod-файлы в old-каталог. В конце-концов, выгружайте в текстовый файл, если у вас сроки поджимают. Или заплатите тем, кто сможет реализовать такую задачу быстро (хотя не люблю вставлять этот пункт в советы, знайте, что этот вариант у вас тоже есть) В общем вариантов - масса. Хотите трахаться со слоями для того, чтобы отследить изменения в коде - трахайтесь. |
|
14.05.2004, 18:34 | #19 |
Шаман форума
|
Цитата:
Сообщение от shura
согласен, но мне немного другую задачу поставили (пока что я не смог от нее отмахнуться)
Начальству хочется видеть не различия между тем, что было в начале проекта и в конце, им хочется видеть все изменения в разрезе каждого Бизнес процесса, и каждого ТЗ, и кто их делал и когда... т.е. один и тотже объект (например форма), была в процессе разработки изменена 5 раз, исходя из 5 тех. заданий, изменения делали 3 программера.. так вот хотят видеть по каждому ТЗ, что в 1 случае было добавлено одно поле таким-то программером, по второму ТЗ был изменен метод таким-то программером... и т.д... сравнение и запись результатов уже сделаны, привязка их к программеру ТЗ и ЮП тоже сделаны (это все оказалось просто), но вот чтобы делать автоматическое сравнение, мне надо чтобы объекты жо изменения были в одном слое, после изменения в другом...., и соответственно, чтобы после записи результатов сравнения, объект был бы поднят (уже с изменениями) обратно в верхний слой.... Не мучайте бедное животное!
__________________
All information in this post is strictly confidential. If you have read it in error, please forget it immediately. |
|
25.05.2004, 18:35 | #20 |
Участник
|
Цитата:
Сообщение от shura
т.е. один и тотже объект (например форма), была в процессе разработки изменена 5 раз, исходя из 5 тех. заданий, изменения делали 3 программера..
так вот хотят видеть по каждому ТЗ, что в 1 случае было добавлено одно поле таким-то программером, по второму ТЗ был изменен метод таким-то программером... и т.д... тут тебе и все разработчики, и команда разработки, и изменяемые объекты, и инфо об объектах. Мне сие очень понравилось. Вместе с документооборотом можно было бы все изменения отслеживать.. планировать вносимые изменения, отслеживать автора и время последних модификаций и тд и тп.. конечно, без возможности переносить из слоя в слой. Но если так актуально сие, можно собственный пункт в контекстное меню добавить) и почти никто ничего не заметит - посмотрели кто что наваял - и перенесли в нужный слой, при это используя методику, предложеную в Developer Guide (поиск по layer, move to another). |
|