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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.10.2017, 22:28   #1  
alicedr is offline
alicedr
Участник
 
175 / 43 (2) +++
Регистрация: 06.07.2012
Адрес: Канада
Цитата:
Сообщение от mazzy Посмотреть сообщение
нет, конечно )

человеку надо поставить модель на систему.
он задает вопрос как переименовать файл меток.

из этого никак не следует что ему надо переименовывать.
ему по-прежнему надо поставить модель на другую систему.
Уточняю.

Если честно, что там у них законфликтило, я не знаю, доступа пока нет.

В теории в АОТе не может быть 2х объектов одного типа с одинаковым названием, пусть они и лежат физически в разных моделях (читай папках); так что это может быть название меточного файла.
Также это может быть Label file Id, то есть аббревиатура из уже не обязательно трех букв.
В худшем случае и то, и другое. Ориентируюсь на него.

Меток почти 2 тысячи, зато язык один.
Мерджить ничего не надо, слава Богу.
Старый 27.10.2017, 14:02   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от alicedr Посмотреть сообщение
В теории в АОТе не может быть 2х объектов одного типа с одинаковым названием, пусть они и лежат физически в разных моделях (читай папках)
может. объект - может. )))
меточные файлы - да - не могут.
см. "хитрый" вопрос на собеседование по акс7.

Цитата:
Сообщение от alicedr Посмотреть сообщение
Меток почти 2 тысячи, зато язык один.
Мерджить ничего не надо, слава Богу.
почему вы так думаете?

Если вы знаете что делаете, слушайте Макса Белугина.
Дополнительно к VSCode могу порекдомендовать Notepad++
)))
__________________
полезное на axForum, github, vk, coub.
Старый 08.11.2017, 12:45   #3  
MazZzDaI is offline
MazZzDaI
Участник
Аватар для MazZzDaI
 
44 / 35 (2) +++
Регистрация: 19.09.2013
Где теперь хранятся xrefs в 365?

Видится такой алгоритм реплейсера:
1. "прочёсывать" xrefs на предмет пути к исходнику содержащему метку "@OLD22";
2. открыть исходник объекта и заменить "@OLD22" на "@NEW22".

Upd:
База данных DYNAMICSXREFDB содержит построенные ссылки.
Запрос выбора ссылок для указанного объекта "@ANG5614":
X++:
use DYNAMICSXREFDB;

select top 100
	modules.Module
	,searchObject.Id as 'SearchObjectId'
	,searchObject.Path as 'SearchObjectPath'
	,xrefs.SourceId as 'ReferencedObjectId'
	,referencedObject.[Path] as 'ReferencedObjectPath'
	,xrefs.Line
	,xrefs.[Column]
	,xrefs.Kind
from [Names] searchObject
inner join [Modules] modules
	on modules.Id = searchObject.ModuleId
inner join [References] xrefs
	on xrefs.TargetId = searchObject.Id
inner join [Names] referencedObject
	on referencedObject.Id = xrefs.SourceId
where searchObject.Path like '%@ANG5614%'
Таблица References содержит поле Kind, и после некоторых попыток связать номера с типами объектов получил следующий маппинг:
1 Method
2 Class
3 Interface
4 Abstract class
5 ?
6 Property
7 Attribute
8 ?
9 Tag

Результат выглядит следующим образом:


Смапить с физическим расположением исходника - дело техники

Последний раз редактировалось MazZzDaI; 08.11.2017 в 14:19. Причина: Solution added
Старый 08.11.2017, 21:28   #4  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от MazZzDaI Посмотреть сообщение

Таблица References содержит поле Kind, и после некоторых попыток связать номера с типами объектов получил следующий маппинг:
1 Method
2 Class
3 Interface
4 Abstract class
5 ?
6 Property
7 Attribute
8 ?
9 Tag
Поиск по форуму великолепный Что значит kind в xReference в ax7?

Последний раз редактировалось skuull; 08.11.2017 в 23:12.
За это сообщение автора поблагодарили: MazZzDaI (1).
Старый 13.11.2017, 11:11   #5  
MazZzDaI is offline
MazZzDaI
Участник
Аватар для MazZzDaI
 
44 / 35 (2) +++
Регистрация: 19.09.2013
Цитата:
Сообщение от skuull Посмотреть сообщение
Поиск по форуму великолепный Что значит kind в xReference в ax7?
Да, ты прав, Евгений, спасибо ^_^

Сделал приложение для замены кодов меток Ax7LabelsReplacer
Критика приветствуется.
За это сообщение автора поблагодарили: mazzy (4).
Старый 13.11.2017, 12:22   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от MazZzDaI Посмотреть сообщение
Сделал приложение для замены кодов меток Ax7LabelsReplacer
Критика приветствуется.
Огромное спасибо за проект.
Пусть будет больше проектов - хороших и разных.

Не столько критика, сколько предложения для обсуждения:
  1. может не стоит хардкодить путь к аксапте? если уж не параметры командной строки, то хотя бы какой-нибудь в XML или брать из проекта. см.п.10
  2. И connection string к базе с перекрестными ссылками тоже.
  3. мне не кажется, что прямой запрос в базе с перекрестными ссылками является хорошей идеей. лучше воспользоваться хранимками, которые поставляются в этой базе. (см. приложенный скриншот). об эффективности и целесообразности прямых запросов по сравнению с хранимками можно поговорить
  4. насчет Replace в type - мне вот интересно, а сами разработчики в MS как с этим работают? наверняка какая-нибудь утилита есть для такой замены. А вообще говоря, яйца хочется оторвать тому, кто запроектировал множественное число.
  5. могу ошибаться, но не понимаю как будут найдены метки, которые используются в другой модели. например, метка объявлена в модели myModel, а используется в модели myModelTest. )))
  6. чтение файла - очень медленная операция. поэтому хотелось бы, чтобы алгоритм был более умным и читал только один раз. могу ошибаться, но мне кажется, что сейчас каждый xml-файл будет читаться столько раз, сколько меток в этом файле найдено перекрестными ссылками (retList - обычный список, который позволяет хранить дубли. в sql нет group by)
  7. в идеале хотелось бы видеть хотя бы подходы к распараллеливанию дисковых операций с xml-файлами
  8. текстовый replace в xml-файле... да еще заменяемые строки задаются пользователем в параметрах... мне кажется это слишком опасным - слишком легко сломать ВЕСЬ исходный код аксапты.
  9. if (!text.Contains(_fromLabel)) ПОСЛЕ замены выглядит прикольно )))
  10. на самом деле хотелось бы на выходе получить не тексты ошибок, а список измененных файлов, которые надо включить в проект и которые надо будет сбилдить. а лучше, чтобы проект сразу был бы обновлен утилитой.
  11. добавил после крепкого размышления "а стоит ли": ну и не Console.WriteLine, а вывод в канал для ошибок stderr, чтобы утилиту можно было запускать в автоматическом режиме, чтобы можно было перенаправлять потоки-каналы в файл и затем анализировать другими утилитами.
Миниатюры
Нажмите на изображение для увеличения
Название: ax7.PNG
Просмотров: 752
Размер:	32.4 Кб
ID:	11722  
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 13.11.2017 в 12:40.
За это сообщение автора поблагодарили: MazZzDaI (1).
Старый 13.11.2017, 13:55   #7  
MazZzDaI is offline
MazZzDaI
Участник
Аватар для MazZzDaI
 
44 / 35 (2) +++
Регистрация: 19.09.2013
Спасибо большое за отзыв!

Цитата:
Сообщение от mazzy Посмотреть сообщение
может не стоит хардкодить путь к аксапте? если уж не параметры командной строки, то хотя бы какой-нибудь в XML или брать из проекта. см.п.10
И connection string к базе с перекрестными ссылками тоже.
TODO

Цитата:
Сообщение от mazzy Посмотреть сообщение
мне не кажется, что прямой запрос в базе с перекрестными ссылками является хорошей идеей. лучше воспользоваться хранимками, которые поставляются в этой базе. (см. приложенный скриншот). об эффективности и целесообразности прямых запросов по сравнению с хранимками можно поговорить
TODO
Поиск на моём инстансе занимал 22 сек для каждой метки, для оптимизации перенёс все нужные References в отдельную таблицу путём select * into.

Цитата:
Сообщение от mazzy Посмотреть сообщение
насчет Replace в type - мне вот интересно, а сами разработчики в MS как с этим работают? наверняка какая-нибудь утилита есть для такой замены. А вообще говоря, яйца хочется оторвать тому, кто запроектировал множественное число.
Хороший вопрос, но в группу разработчиков ядра я пока не вхожу

Цитата:
Сообщение от mazzy Посмотреть сообщение
могу ошибаться, но не понимаю как будут найдены метки, которые используются в другой модели. например, метка объявлена в модели myModel, а используется в модели myModelTest. )))
Поиск исходников производится только в указанном каталоге независимо от наличия файла меток. Т.е. получил ссылку на файл, нашёл файл, переписал "ТестOLD" на "ТекстNEW".

Цитата:
Сообщение от mazzy Посмотреть сообщение
чтение файла - очень медленная операция. поэтому хотелось бы, чтобы алгоритм был более умным и читал только один раз. могу ошибаться, но мне кажется, что сейчас каждый xml-файл будет читаться столько раз, сколько меток в этом файле найдено перекрестными ссылками (retList - обычный список, который позволяет хранить дубли. в sql нет group by)
TODO

Цитата:
Сообщение от mazzy Посмотреть сообщение
в идеале хотелось бы видеть хотя бы подходы к распараллеливанию дисковых операций с xml-файлами
TODO

Цитата:
Сообщение от mazzy Посмотреть сообщение
текстовый replace в xml-файле... да еще заменяемые строки задаются пользователем в параметрах... мне кажется это слишком опасным - слишком легко сломать ВЕСЬ исходный код аксапты.
Если подвязана система контроля версий, то все изменения можно откатить (чем я и пользовался в процессе создания)

Цитата:
Сообщение от mazzy Посмотреть сообщение
if (!text.Contains(_fromLabel)) ПОСЛЕ замены выглядит прикольно )))
Действительно

Цитата:
Сообщение от mazzy Посмотреть сообщение
на самом деле хотелось бы на выходе получить не тексты ошибок, а список измененных файлов, которые надо включить в проект и которые надо будет сбилдить. а лучше, чтобы проект сразу был бы обновлен утилитой.
TODO
При подключенной системе контроля версий все изменённые файлы сваливаются в Pending changes, выгребаю оттуда командой "tf status".

Цитата:
Сообщение от mazzy
при включенной системе контроля версий, в большинстве случаев у файлов будет включен ReadOnly атрибут.
Можно убрать атрибут (что потенциально опасно при совместной разработке) или настроить build

Цитата:
Сообщение от mazzy Посмотреть сообщение
добавил после крепкого размышления "а стоит ли": ну и не Console.WriteLine, а вывод в канал для ошибок stderr, чтобы утилиту можно было запускать в автоматическом режиме, чтобы можно было перенаправлять потоки-каналы в файл и затем анализировать другими утилитами.
и
Цитата:
Сообщение от ryik Посмотреть сообщение
...сканирование папок лучше завернуть в обертку try catch так как во время поиска возможны ошибки доступа и ошибки с пермишенами
Можем улучшить приложение совместно - кидайте ChangeRequest в GutHub

Последний раз редактировалось MazZzDaI; 13.11.2017 в 13:59.
Старый 13.11.2017, 12:38   #8  
ryik is offline
ryik
Участник
 
2 / 12 (1) ++
Регистрация: 13.11.2017
Адрес: Киев
Цитата:
Сообщение от MazZzDaI Посмотреть сообщение
Да, ты прав, Евгений, спасибо ^_^

Сделал приложение для замены кодов меток Ax7LabelsReplacer
Критика приветствуется.
После развернутого ответа mazzy мне осталось только дополнить, что сканирование папок лучше завернуть в обертку try catch так как во время поиска возможны ошибки доступа и ошибки с пермишенами - и программа будет просто вывалиться.
За это сообщение автора поблагодарили: mazzy (2).
Старый 13.11.2017, 12:48   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от ryik Посмотреть сообщение
возможны ошибки доступа и ошибки с пермишенами - и программа будет просто вывалиться.
угу.
и, при включенной системе контроля версий, в большинстве случаев у файлов будет включен ReadOnly атрибут.
__________________
полезное на axForum, github, vk, coub.
Теги
ax7, d365, label

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamicsaxinsight: AX7/D365/Operations: Enable/Disable form control in X++ Blog bot DAX Blogs 0 14.09.2017 13:11
dynamicsaxinsight: AX7/D365/Operations: Create custom data entity Blog bot DAX Blogs 0 14.09.2017 13:11
dynamicsaxinsight: AX7/D365/Operations: Data import using data entities Blog bot DAX Blogs 0 14.09.2017 13:11
patrickmouwen: 1yr with AX7 Data Management – My top 12 learnings Blog bot DAX Blogs 2 12.10.2016 15:14
patrickmouwen: AX7 – My top 12 highlights Blog bot DAX Blogs 0 27.02.2016 13:11

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

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

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