Есть CRM 3.3.2.254 (FireBird), в ней реализованы отчеты Word, новые детали в разделах, справочники и т.д.. Приобретена версия XRM+CD 3.3.2.179 (MS SQL). Подскажите каким образом возможно перенести все реализованное в CRM на новую платформу XRM+CD ?
Здравствуйте Александр,
Предлагаю вам действовать следующим образом:
1. Выгрузить все сервисы с текущие версии CRM на Firebird. Это можно сделать с помощью утилиты TSMergeServices.exe
С инструкцией по работе с данной утилитой вы можете ознакомиться по следующей ссылке http://www.community.terrasoft.ru/blogs/3013
Сравнить выгруженные сервисы на уровне xml файлов (это можно например утилитой Araxis Merge) с коробочной версией Terrasoft CRM на Firebird.
На данном этапе вы поймете, какие доработки и в каких разделах были выполнены, и где необходимо будет вносить изменения в конфигурацию XRM+SD.
Также вы увидите таблицы справочники которые были добавлены
2.Следующим шагом будет перенос справочников, после того как сервисы справочников загружены в конфигарцию на SQL Server, их необходимо пересохранить что бы внести изменения в БД, данное действие можно сделать скриптом scr_ResaveTables:
//-----------------------------------------------------------------------------// scr_ResaveTables//-----------------------------------------------------------------------------
function Main(){
ResaveTables();}
function ResaveTables(){
Log.Write(1, 'Start.');
var Service;
var SelectQuery = Services.GetNewItemByUSI('sq_Service');
ApplySelectQueryFilter(SelectQuery, 'ServiceTypeCode', 'Table', true);
var Dataset = SelectQuery.Open();
var i =0;
var Code;
Dataset.GotoFirst();while(!Dataset.IsEOF){
Code = Dataset.ValAsStr('Code');
i++;try{
Service = Services.GetSingleItemByUSI(Code);
Services.SaveItem(Service, 1);
Log.Write(1, i +'. Service '+ Code +' saved.');}catch(e){
Log.Write(2, i +'. Error to save service: '+ Code +' Original message: '+ e.message);}
System.ProcessMessages();
Dataset.GotoNext();}
Dataset.Close();
Log.Write(1, 'Finish.');}
После чего разумно провести перенос самих данных в справочники.
На данном этапе можно воспользоваться внутренней утилитой DataManager, которая расположена в конфигурации по пути Common\Tools\DataManager\wnd_DataManager
Вызвать данную утилиту можно через клиент C:\Program Files\Terrasoft\Bin\TSClient.exe /wnd=wnd_DataManager
Данные необходимо выгрузит с конфигурации Firebird в файл xml, после чего загрузить в конфигурации SQL Server.
Разницы чем именно выгружать сервисы из базы никакой, на выходе получается набор xml-ников, отличие будет в удобстве поиска нужных сервисов и форматировании получившихся xml, что удобно если вы планируете их просматривать и возможно править перед загрузкой
C:\Program Files (x86)\Terrasoft\Bin>TSMergeServices.exe /opr=Load /cfg="MSSQL C
onfiguration" /ugp=true /js=true /usr="Supervisor" /pwd="" /upddb=false /
fulllog=true
Error: Directory 'C:\Program Files (x86)\Terrasoft\Bin\MSSQL Configuration\' is
not exists
наверно это связано с тем, что база находится : C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA , а приложение в "Program Files (x86)"?
Проблема в одном из внешних ключей в таблице tbl_Document. Нужно смотреть структуру базы, вероятно сначала надо загружать те таблицы, на которые в tbl_Document вы ссылаетесь (новый справочник, например)
Местоположение базы и приложения совсем не при чем:smile:
Александр, по поводу ошибки "Object 'Relation.ParentField' is not assignet" предлагаю Вам сначала загружать таблицы на которые ссылается tbl_Documunent, посмотрите в TSAdmin внешние связи в самом сервисе tbl_Documunent и сначала загрузите тиблицы на которые ссылается данная таблица. Собвственно как и рекомендует Александр Кудряшов
Пункт 2 следует выполнять после того как Вы загрузили сервисы недостающих таблиц в конфигурацию SQL Server и после этого сами таблицы необходимо сохранить в БД, для этого я и советовал скрипт scr_ResaveTables
По поводу ошибки [12.03.12 14.38.28.994] (E) 327. Error to save service: tbl_Project Original message: Разрушительный сбой
Попробуйте пересохранить в ручную таблицу, возможно в самой структуре есть ошибки, которые не дают сохранить таблицу