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