|
![]() |
#1 |
Участник
|
Цитата:
Сообщение от lev
![]() если это не системные слои, тогда предлагаю попытаться сделать по следующему алгоритму:
3. Экспортируем проекты нужных слоев с сохранением Id. 4. В полученных файлах выполняем переименование. 5. В приложении удаляем (переносим в другое место) слои, которые экспортировали. 6. Заходим в аху по очереди в каждый слой, начиная с более глубокого (например если экспортировали usr и cus, тогда в начале зайдем под cus) и заливаем наш проект. В итоге должны получить то же приложение, но с нормальными названиями. При УБИРАНИИ префиксов возникают дубли. Которые фиг отловишь в текстовом файле. Может быть какой нибудь EMacs поможет... Подозреваю, что подобная проблема будет и при замене разных префиксов на один. (но только в упор не понимаю, зачем переименовывать чужие префиксы-идентификаторы-разработчиков в свой префикс) Цитата:
Сообщение от mazzy
![]() ============
я попробовал выгрузить проект в текстовый файл с сохранением идентификаторов, провести переименование там и загрузить проект обратно. Во-первых, были глюки с сохранением идентификаторов. Не везде она их сохранила. Во-вторых (и это главное) в результате переименования появились объекты с дублирующимися названиями (одинаковые таблицы, одинаковые поля, одинаковые формы). Дублирующиеся поля категорически отказывались импортироваться в разные объекты. В результате, импорт проекта также превратился в достаточно муторную головоломку. |
|
![]() |
#2 |
Ищущий знания...
|
Цитата:
Сообщение от mazzy
![]() Я так пробовал.
При УБИРАНИИ префиксов возникают дубли. Которые фиг отловишь в текстовом файле. Может быть какой нибудь EMacs поможет... Подозреваю, что подобная проблема будет и при замене разных префиксов на один. (но только в упор не понимаю, зачем переименовывать чужие префиксы-идентификаторы-разработчиков в свой префикс) В общем, что делать с дублями при таком подходе? я же предлагаю удалить слой, который вы экспортировали для переименования. тогда все объекты из приложения убьются и дублироваться не будут, и база не тронется (данные остануться). а потом зайти и накотить слой из правильно xpo.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#3 |
Administrator
|
Цитата:
Тоже думаю размышляю над веткой... Не приходит на ум "серебрянная пуля" ![]()
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 27.10.2010 в 12:09. |
|
|
За это сообщение автора поблагодарили: lev (1). |
![]() |
#4 |
Ищущий знания...
|
Цитата:
Сообщение от sukhanchik
![]() Пример. Есть таблица (класс, тип и т.д.) LEV_InventTable (извините, что использую Ваш ник - просто мой слишком длинный). Убираю префикс. Что получается? Конфликт со штатным функционалом. При этом "хорошо", если LEV_InventTable было не таблицей. А если таблицей? А структура ее ну совсем отличается от InventTable?
Тоже думаю размышляю над веткой... Не приходит на ум "серебрянная пуля" ![]() Вопрос к mazzy. А может у вас есть человек который напишет программку на каком нибудь Си языке (например C#) (ну или каком нибудь другом, без разницы ![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#5 |
Moderator
|
Вообще, при переименовании объектов, кроме проблем с кодом следует еще учесть и проблемы с данными. Так, например, при переименовании таблицы может (зависит от способа передачи проектов клиенту) измениться ее идентификатор. Если какие-то алгоритмы завязаны на Id полей или таблиц это тоже следует учесть.
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
![]() |
#6 |
Administrator
|
Цитата:
Сообщение от Андре
![]() Вообще, при переименовании объектов, кроме проблем с кодом следует еще учесть и проблемы с данными. Так, например, при переименовании таблицы может (зависит от способа передачи проектов клиенту) измениться ее идентификатор. Если какие-то алгоритмы завязаны на Id полей или таблиц это тоже следует учесть.
Эта проблема достаточно легко лечится - не нужно в клиентское приложение вливать свои хпо, а нужно обновлять приложение либо слоем (слоями), либо приложением. А если до часа Х переносили код хпошником - нужно просто забрать себе приложение/слои клиента, после чего уже хпошником не заливать
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#7 |
Участник
|
Цитата:
КАК? Я ж и спрашиваю про инструмент и/или методику |
|
![]() |
#8 |
Участник
|
Цитата:
Нужно сохранить уже имеющиеся данные. |
|
![]() |
#9 |
Administrator
|
Удаление слоя при сохранении всех id никак не влияет на данные
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#10 |
Участник
|
как это? типа удалить и НЕ синхронизировать?
Можно пошагово? |
|
![]() |
#11 |
Ищущий знания...
|
написал выше
Цитата:
мы же убиваем файл из приложения, таблицу в БД не трогаем!
потом этот файл обратно заливаем, ИД таблицы сохраниться, данные потеряться не должны.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#12 |
Administrator
|
Легко.
1. Берем приложение. Экспортим с id в xpo слой. 2. Удаляем слой. Если не синхронизировать БД, то после запуска АОСа можно просто залить xpo обратно и все будет ок. Если же мы переименовываем, то: а) Надо подготовить приложение на пустой БД (залить туда xpo с id) б) Надо убедиться в отсутствии в данных ссылок на название переименованного объекта в) Надо пересоздать SQLDictionary на рабочем приложении (после копирования на рабочее приложение подготовленного). На эту тему почитать следующее: Что нужно сделать: Изменение идентификаторов(id) полей или Изменение идентификаторов(id) полей Имеющиеся потенциальные проблемы: Синхронизация Полная инструкция по переносе объектов (таблиц) между слоями без сохранения ID, но без потери данных: Перенос всех объектов с USR-слоя на VAR.
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 27.10.2010 в 13:56. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
![]() |
#13 |
Ищущий знания...
|
опередил
![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#14 |
Ищущий знания...
|
так разве при заходе в аксапту, синхранизация выполняется автоматически? мы же убиваем файл из приложения, таблицу в БД не трогаем! потом этот файл обратно заливаем, ИД таблицы сохраниться, данные потеряться не должны.
З.Ы. по поводу алгоритма "правильного" переименования думаю, если что придумается напишу ![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|