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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.08.2017, 00:19   #1  
jopagames is offline
jopagames
Участник
 
45 / 24 (1) +++
Регистрация: 22.11.2011
Перенос объектов
Коллеги (оставшиеся), такой вопрос:

Как и с помощью какого инструмента "передвинуть" некий произвольный функционал (состоящий из таблиц, пейджей, репортов и проч.) в другой диапазон?

Интересует именно автоматический(полуавтоматический) перенос, поскольку объектов в грануле много, а гранул несколько.
Т.е. чтобы, к примеру, я пейдж 50000 переименовал, а в меню он появился на своём же месте, но уже с новым номером.
Или T27 мне не нравится, и я хочу её быстро перенести в T50027, да так, чтобы вся база не развалилась.
Важно! Таблицы все с данными и на "живой" базе! Т.е. я хочу поменять местами T17 и T21 (к примеру, конечно) и где-то должен быть предусмотрен временный буфер.

Да и современный NAV почему-то отказывается теперь переименовывать ID таблиц, хотя в 2009 это раньше нормально работало ;(

Последний раз редактировалось jopagames; 24.08.2017 в 00:41.
Старый 24.08.2017, 13:29   #2  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
а привет
создаем табличку: тип, старый ID, новый ID
выгружаем объекты в текст.

IF FileName = '' THEN
ERROR('файлик не выбран');

F.OPEN(FileName);
F.TEXTMODE(TRUE);
F1.CREATE(<новое имя файла>);
F1.TEXTMODE(TRUE);
F1.WRITEMODE(TRUE);
REPEAT
//_pos := F.POS;
CLEAR(fString);
F.READ(fString);
ConvertString();
//F.SEEK(_pos);
F1.WRITE(fString);
UNTIL F.POS = F.LEN;



F.CLOSE;
F1.CLOSE;


ConvertString()

IF <табличка>.FIND('-') THEN REPEAT
CLEAR(_From);
CLEAR(_To);
_From := FORMAT(<табличка>.Type) + ' ' + FORMAT(<табличка>."ID From");
_To := FORMAT(<табличка>.Type) + ' ' + FORMAT(<табличка>."ID To");
IF STRPOS(fString, _From) <> 0 THEN BEGIN
//MESSAGE(fString);
fString := COPYSTR(fString, 1, STRPOS(fString, _From)-1)
+ _To
+ COPYSTR(fString, STRPOS(fString, _From) + STRLEN(_From));
//MESSAGE(fString);
END;
_From := FORMAT(<табличка>.Type) + FORMAT(<табличка>."ID From");
_To := FORMAT(<табличка>.Type) + FORMAT(<табличка>."ID To");
IF STRPOS(fString, _From) <> 0 THEN BEGIN
fString := COPYSTR(fString, 1, STRPOS(fString, _From)-1)
+ _To
+ COPYSTR(fString, STRPOS(fString, _From) + STRLEN(_From));
END;
_From := 'Record ' + FORMAT(<табличка>."ID From");
_To := 'Record ' + FORMAT(<табличка>."ID To");
IF STRPOS(fString, _From) <> 0 THEN BEGIN
fString := COPYSTR(fString, 1, STRPOS(fString, _From)-1)
+ _To
+ COPYSTR(fString, STRPOS(fString, _From) + STRLEN(_From));
END;
UNTIL <табличка>.NEXT = 0;

далее импортируем текстовичек в пустую базу (в эту же нельзя, название объектов)
почти все переносится, не помню где какой-то хвостик остается
с переносом данных не помогу.
Старый 24.08.2017, 18:36   #3  
Captain is offline
Captain
Участник
Лучший по профессии 2017
 
300 / 81 (3) ++++
Регистрация: 28.02.2003
Ответ близкий, но не верный.
Делаем матрицу перевода ID-new ID
И шаманскими методами меняем таблицу Object со ссылками на зависимости перемененных, полей и свойств.
Отдельной дудкой, без изменения физической структуры данных. Все в новый лицензионный диапазон.
Без нарушения прав правообладателя. Т.е.миграция объектов в рамках ЛИЦЕНЗИИ(Й)
Остальное в Личку.
Captain
__________________
---------------------------------------------------------------------------------------------
"Собрать стадо из баранов легко, трудно собрать стадо из кошек" Профессор Сергей Капица

Последний раз редактировалось Captain; 24.08.2017 в 18:45.
Старый 25.08.2017, 00:49   #4  
jopagames is offline
jopagames
Участник
 
45 / 24 (1) +++
Регистрация: 22.11.2011
Цитата:
Сообщение от Captain Посмотреть сообщение
Ответ близкий, но не верный.
Делаем матрицу перевода ID-new ID
И шаманскими методами меняем таблицу Object со ссылками на зависимости перемененных, полей и свойств...
Captain
Ну я примерно в этом ключе и делаю. Весь текст выгрузил в файл, таблицы с данными отдельно, потом всё остальное (которое можно грохнуть и создать потом заново) - отдельно. Все объекты с ID-newID,
И парсинг всех-всех встречающихся переменных на предмет вхождения объекта в мою таблицу с ID-newID.

Только, разве что, я все объекты переименовал из "Item" в "^T27", чтобы в тексте отлавливать не только Record 27, но и прямые вызовы объекта по имени типа REPORT::"^R50000" (старое имя объекта сохранил рядом c ID-newID, разумеется)

Но пока всё как-то сыровато у меня )

А я хотел готовый функционал, который умеет для 2017 это делать. (В 2017 текст, извините, >1024 и в нормальную текстовую переменную даже не влазит, а хранить вообще кусками по 250 приходится)

Ну и с таблицей Object в RTC не так всё просто, как в 2009.
Всякие тенанты да метадаты.

Цитата:
Сообщение от Sancho
а привет
создаем табличку: тип, старый ID, новый ID
выгружаем объекты в текст.

IF FileName = '' THEN
ERROR('файлик не выбран');
Ну это, Серёг, уж совсем как-то просто
Старый 25.08.2017, 01:24   #5  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
просто! работает!
правда, только с классическим Навом, с новым не пробовал )))
Старый 28.08.2017, 10:09   #6  
jopagames is offline
jopagames
Участник
 
45 / 24 (1) +++
Регистрация: 22.11.2011
Цитата:
Сообщение от Sancho Посмотреть сообщение
просто! работает!
правда, только с классическим Навом, с новым не пробовал )))
А вот в новом как раз свои заморочки.
Основная - нельзя переименовывать ID таблиц.

Ну и по мелочи: типа, номер отчёта хранится, например, в самом шаблоне Word и через Nav его никак не изменить.
И через Word Тоже ))
Приходится .docx переименовывать в .zip и править внутри него править xml, меняя пространство имён.

Короче, передвинул как-то, наконец. Вручную, можно скачать.
С несчастными 200 объектами провозился неделю.

Всём спасибо!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как вы контролируете изменение C\AL кода и объектов Константин! NAV: Администрирование 7 01.09.2011 16:11
__Сравнение версий объектов__ kgenius NAV: Администрирование 7 05.06.2008 12:10
Выгрузка объектов в FOB из C/AL VProk NAV: Программирование 2 12.03.2007 19:36
Последовательный запуск объектов Nataly NAV: Программирование 4 14.09.2005 07:12
Перенос данных в NAVISION BusyMan NAV: Функционал 5 15.11.2004 15:29

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

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

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