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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.10.2010, 11:54   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от lev Посмотреть сообщение
если это не системные слои, тогда предлагаю попытаться сделать по следующему алгоритму:

3. Экспортируем проекты нужных слоев с сохранением Id.
4. В полученных файлах выполняем переименование.
5. В приложении удаляем (переносим в другое место) слои, которые экспортировали.
6. Заходим в аху по очереди в каждый слой, начиная с более глубокого (например если экспортировали usr и cus, тогда в начале зайдем под cus) и заливаем наш проект.

В итоге должны получить то же приложение, но с нормальными названиями.
Я так пробовал.
При УБИРАНИИ префиксов возникают дубли. Которые фиг отловишь в текстовом файле. Может быть какой нибудь EMacs поможет...

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

Цитата:
Сообщение от mazzy Посмотреть сообщение
============
я попробовал выгрузить проект в текстовый файл с сохранением идентификаторов, провести переименование там и загрузить проект обратно.

Во-первых, были глюки с сохранением идентификаторов. Не везде она их сохранила.
Во-вторых (и это главное) в результате переименования появились объекты с дублирующимися названиями (одинаковые таблицы, одинаковые поля, одинаковые формы).

Дублирующиеся поля категорически отказывались импортироваться в разные объекты. В результате, импорт проекта также превратился в достаточно муторную головоломку.
В общем, что делать с дублями при таком подходе?
__________________
полезное на axForum, github, vk, coub.
Старый 27.10.2010, 12:01   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
Я так пробовал.
При УБИРАНИИ префиксов возникают дубли. Которые фиг отловишь в текстовом файле. Может быть какой нибудь EMacs поможет...

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



В общем, что делать с дублями при таком подходе?
я так понял что вы просто выгружали проект, в нем переименовывали, а потом загружали обратно, рассчитывая что нужный объект переименуется и все будет ок. но он мало того что переименовывался, ещё и создавался второй, с таким же именем.

я же предлагаю удалить слой, который вы экспортировали для переименования. тогда все объекты из приложения убьются и дублироваться не будут, и база не тронется (данные остануться). а потом зайти и накотить слой из правильно xpo.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 27.10.2010, 12:07   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от lev Посмотреть сообщение
я же предлагаю удалить слой, который вы экспортировали для переименования. тогда все объекты из приложения убьются и дублироваться не будут, и база не тронется (данные остануться).
Пример. Есть таблица (класс, тип и т.д.) LEV_InventTable (извините, что использую Ваш ник - просто мой слишком длинный). Убираю префикс. Что получается? Конфликт со штатным функционалом. При этом "хорошо", если LEV_InventTable было не таблицей. А если таблицей? А структура ее ну совсем отличается от InventTable?

Тоже думаю размышляю над веткой... Не приходит на ум "серебрянная пуля"
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 27.10.2010 в 12:09.
За это сообщение автора поблагодарили: lev (1).
Старый 27.10.2010, 12:22   #4  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Пример. Есть таблица (класс, тип и т.д.) LEV_InventTable (извините, что использую Ваш ник - просто мой слишком длинный). Убираю префикс. Что получается? Конфликт со штатным функционалом. При этом "хорошо", если LEV_InventTable было не таблицей. А если таблицей? А структура ее ну совсем отличается от InventTable?

Тоже думаю размышляю над веткой... Не приходит на ум "серебрянная пуля"
про сходство с системными объектами не подумал сразу... нужно как то их на стадии переименования отлавливать, и если совпадают то переносить в суфикс (как и писал fed).

Вопрос к mazzy. А может у вас есть человек который напишет программку на каком нибудь Си языке (например C#) (ну или каком нибудь другом, без разницы ) которая произведет "правильное" переименование в файле?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 27.10.2010, 12:30   #5  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Вообще, при переименовании объектов, кроме проблем с кодом следует еще учесть и проблемы с данными. Так, например, при переименовании таблицы может (зависит от способа передачи проектов клиенту) измениться ее идентификатор. Если какие-то алгоритмы завязаны на Id полей или таблиц это тоже следует учесть.
За это сообщение автора поблагодарили: mazzy (2).
Старый 27.10.2010, 12:48   #6  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Андре Посмотреть сообщение
Вообще, при переименовании объектов, кроме проблем с кодом следует еще учесть и проблемы с данными. Так, например, при переименовании таблицы может (зависит от способа передачи проектов клиенту) измениться ее идентификатор. Если какие-то алгоритмы завязаны на Id полей или таблиц это тоже следует учесть.
Это уже проблема из другой области. Это можно перенести xpo-шник между приложениями/слоями (без сохранения id) и изменятся идентификаторы. Как раз если какие-то алгоритмы завязаны на id - они не пострадают при переименовании.
Эта проблема достаточно легко лечится - не нужно в клиентское приложение вливать свои хпо, а нужно обновлять приложение либо слоем (слоями), либо приложением. А если до часа Х переносили код хпошником - нужно просто забрать себе приложение/слои клиента, после чего уже хпошником не заливать
__________________
Возможно сделать все. Вопрос времени
Старый 27.10.2010, 13:19   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от lev Посмотреть сообщение
Вопрос к mazzy. А может у вас есть человек который напишет программку на каком нибудь Си языке (например C#) (ну или каком нибудь другом, без разницы ) которая произведет "правильное" переименование в файле?
Не проблема написать. На лиспе, на си-шарп... да хоть на X++.
КАК?

Я ж и спрашиваю про инструмент и/или методику
__________________
полезное на axForum, github, vk, coub.
Старый 27.10.2010, 13:17   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от lev Посмотреть сообщение
я же предлагаю удалить слой, который вы экспортировали для переименования. тогда все объекты из приложения убьются и дублироваться не будут, и база не тронется (данные остануться). а потом зайти и накотить слой из правильно xpo.
Удалить - не получится.
Нужно сохранить уже имеющиеся данные.

Цитата:
Сообщение от mazzy Посмотреть сообщение
предположим, принято решение "избавиться от префиксов - идентификаторов разработчиков" (оставить только название модуля, как в стандартной аксапте. при этом не потерять уже существущие данные).
__________________
полезное на axForum, github, vk, coub.
Старый 27.10.2010, 13:28   #9  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
Удалить - не получится.
Нужно сохранить уже имеющиеся данные.
Удаление слоя при сохранении всех id никак не влияет на данные
__________________
Возможно сделать все. Вопрос времени
Старый 27.10.2010, 13:30   #10  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Удаление слоя при сохранении всех id никак не влияет на данные
как это? типа удалить и НЕ синхронизировать?

Можно пошагово?
__________________
полезное на axForum, github, vk, coub.
Старый 27.10.2010, 13:32   #11  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
как это? типа удалить и НЕ синхронизировать?

Можно пошагово?
написал выше

Цитата:
мы же убиваем файл из приложения, таблицу в БД не трогаем!
потом этот файл обратно заливаем, ИД таблицы сохраниться, данные потеряться не должны.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 27.10.2010, 13:48   #12  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
как это? типа удалить и НЕ синхронизировать?

Можно пошагово?
Легко.
1. Берем приложение. Экспортим с id в xpo слой.
2. Удаляем слой. Если не синхронизировать БД, то после запуска АОСа можно просто залить xpo обратно и все будет ок.
Если же мы переименовываем, то:
а) Надо подготовить приложение на пустой БД (залить туда xpo с id)
б) Надо убедиться в отсутствии в данных ссылок на название переименованного объекта
в) Надо пересоздать SQLDictionary на рабочем приложении (после копирования на рабочее приложение подготовленного). На эту тему почитать следующее:
Что нужно сделать: Изменение идентификаторов(id) полей или Изменение идентификаторов(id) полей

Имеющиеся потенциальные проблемы: Синхронизация

Полная инструкция по переносе объектов (таблиц) между слоями без сохранения ID, но без потери данных:
Перенос всех объектов с USR-слоя на VAR.
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 27.10.2010 в 13:56.
За это сообщение автора поблагодарили: mazzy (2).
Старый 27.10.2010, 13:31   #13  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Удаление слоя при сохранении всех id никак не влияет на данные
опередил
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 27.10.2010, 13:30   #14  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
Удалить - не получится.
Нужно сохранить уже имеющиеся данные.
так разве при заходе в аксапту, синхранизация выполняется автоматически? мы же убиваем файл из приложения, таблицу в БД не трогаем! потом этот файл обратно заливаем, ИД таблицы сохраниться, данные потеряться не должны.

З.Ы. по поводу алгоритма "правильного" переименования думаю, если что придумается напишу
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Что лучше, много номенклатур или много конфигураций? axvrp DAX: Функционал 75 21.09.2010 16:13
WebForms - какой контрол использовать GromRom DAX: Программирование 3 09.07.2008 16:20
Как использовать dimension sets (DAX 4.0) Qaz Qwerty DAX: Функционал 9 19.05.2008 21:08
Какой сканер штрихкодов брать и у кого? Hidden DAX: Администрирование 5 01.11.2005 10:30

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

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

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