Добрый день!

Есть CRM 3.3.2.254 (FireBird), в ней реализованы отчеты Word, новые детали в разделах, справочники и т.д.. Приобретена версия XRM+CD 3.3.2.179 (MS SQL). Подскажите каким образом возможно перенести все реализованное в CRM на новую платформу XRM+CD ?

Нравится

10 комментариев

Здравствуйте Александр,
Предлагаю вам действовать следующим образом:
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.

Другим путем переноса данных, является создание Linked Server на уровне СУБД SQL Server, пример создания вы можете посмотреть в теме Подключение к другой БД http://www.community.terrasoft.ru/forum/topic/6843#comment-29463

3. Отчеты Word и соотвествующие им запросы, являются по сути записями в таблицах tbl_Report,tbl_Query перенести их возможно через Linked Server

Добрый день, Алексей!

Скажите в чем отличия: в выгрузке-загрузке сервисов через утилиту TSMergeServices.exe, от выгрузки-загрузки сервисов через админку?

Я не совсем правильно сформулировал вопрос - имелся в ввиду мой случай, когда необходимо перенести все доработки, без масок по времени и т.д.

Разницы чем именно выгружать сервисы из базы никакой, на выходе получается набор xml-ников, отличие будет в удобстве поиска нужных сервисов и форматировании получившихся xml, что удобно если вы планируете их просматривать и возможно править перед загрузкой

Александр,
В случае выгрузки через Terrasoft Administrator, в принципе Вы можете даже выгрузить все сервисы, как это указано в посте http://www.community.terrasoft.ru/blogs/6281#comment-27302

С выгрузкой все получилось...Но при попытке загрузить tbl_Document через админку возникает ошибка: "Object 'Relation.ParentField' is not assignet".

При загрузке через TSMergeServices.exe использую:

TSMergeServices.exe /opr=Load /cfg="SQL Configuration" /ugp=true /js=true
/usr="Supervisor" /pwd="" /upddb=false /fulllog=true

получаю:

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:

Если я правильно понял, то необходимо выполнить пункт 2 сначала, а потом переносить сервисы таблиц?

При выполнении скрипта (из пункта 2)одна запись настораживает - что бы это значило?

[12.03.12 14.38.28.994] (E) 327. Error to save service: tbl_Project Original message: Разрушительный сбой

Александр, по поводу ошибки "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: Разрушительный сбой
Попробуйте пересохранить в ручную таблицу, возможно в самой структуре есть ошибки, которые не дают сохранить таблицу

Показать все комментарии