Если мы решим перейти с CRM на CRM + Service Desc возможно ли будет перенести всю существующую информацию в новую систему?
Спасибо.
Нравится
решал такую задачу для 3.3 CRM -- 3.4 XRM
было весело ))
Суть следующая:
1) Доработать на новой конфигурации то, что было на старой (главное справочники и детали)
2) написать скрипт SQL версии 1 (и чуть позже последующих)) и добиться его отработки без ошибок:
- надо сбросить (в новой базе) все ключи на данные, которые подлежат копированию (и сразу писать ту часть, где Вы будете их включать обратно). М.б. стоит сбросить и триггеры - я этого не делал.
- скопировать все таблицы из старой базы в новую, сохраняя структуру данных, добавляя там где надо значения по умолчанию (для новых справочников) и т.д.
Возможно, где-то надо будет извращаться как-то так:
CREATE TABLE #AccountBillingInfo( [ID] [uniqueidentifier] ROWGUIDCOL NULL, [CreatedOn] [datetime] NULL, [CreatedByID] [uniqueidentifier] NULL, [ModifiedOn] [datetime] NULL, [ModifiedByID] [uniqueidentifier] NULL, [AccountID] [uniqueidentifier] NULL, [Description] [nvarchar](500) NULL, [IsDefault] [int] NULL, [Name] [nvarchar](250) NOT NULL, [Position] [nvarchar](250) NULL, [FIO] [nvarchar](250) NULL, [Ground] [nvarchar](250) NULL, [CountryID] [uniqueidentifier] NULL, [INN] [nvarchar](250) NULL, [KPP] [nvarchar](250) NULL, [RSN] [nvarchar](250) NULL, [BIK] [nvarchar](250) NULL, [KSN] [nvarchar](250) NULL, [OGRN] [nvarchar](250) NULL, [EGRPOU] [nvarchar](250) NULL, [NumSertificateNDS] [nvarchar](250) NULL, [RegDate] [datetime] NULL, [RNN] [nvarchar](250) NULL, [IIK] [nvarchar](250) NULL, [KBE] [int] NULL, [OKPO] [nvarchar](250) NULL, [SSN] [nvarchar](250) NULL, [UNN] [nvarchar](250) NULL, [BankID] [uniqueidentifier] NULL, [SignerID] [uniqueidentifier] NULL, [Address] [nvarchar](250) NULL) use [terra2] go ALTER TABLE [dbo].[tbl_Document] DROP CONSTRAINT [FK12426AccountSignerIDtbl13] ALTER TABLE [dbo].[tbl_Invoice] DROP CONSTRAINT [FK115613CustomerSignerIDt14] ALTER TABLE [dbo].[tbl_Contract] DROP CONSTRAINT [FK134618CustomerSignerIDt3] ALTER TABLE [dbo].[tbl_Document] DROP CONSTRAINT [FK12426AccountLegalEntity11] ALTER TABLE [dbo].[tbl_Contract] DROP CONSTRAINT [FK134618CustomerLegalEnti0] ALTER TABLE [dbo].[tbl_Invoice] DROP CONSTRAINT [FK115613CustomerLegalEnti12] go delete tbl_AccountLegalEntitySigner where LegalEntityID in (select (LegalEntityID) from tbl_AccountLegalEntitySigner group by LegalEntityID having COUNT(LegalEntityID) > 1) and Position = 'Главный бухгалтер' and LegalEntityID not in (select ID from tbl_AccountLegalEntity where AccountID = (select id from tbl_Account where Name = 'Сфера')) update tbl_Document set AccountSignerID = null where AccountSignerID = 'AEE5C2D2-552B-4009-9A93-E437E405A756' update tbl_Invoice set CustomerSignerID = null where CustomerSignerID = 'AEE5C2D2-552B-4009-9A93-E437E405A756' delete tbl_AccountLegalEntitySigner where ID ='AEE5C2D2-552B-4009-9A93-E437E405A756' update tbl_Document set AccountSignerID = null where AccountSignerID = 'D834E542-B940-44AE-8A32-5B1052916C99' update tbl_Invoice set CustomerSignerID = null where CustomerSignerID = 'D834E542-B940-44AE-8A32-5B1052916C99' delete tbl_AccountLegalEntitySigner where ID ='D834E542-B940-44AE-8A32-5B1052916C99' update tbl_Document set AccountSignerID = null where AccountSignerID = 'F5FB7F83-5439-485C-82AE-D36857787542' update tbl_Invoice set CustomerSignerID = null where CustomerSignerID = 'F5FB7F83-5439-485C-82AE-D36857787542' delete tbl_AccountLegalEntitySigner where ID ='F5FB7F83-5439-485C-82AE-D36857787542' go INSERT INTO #AccountBillingInfo ([ID] ,[CreatedOn] ,[CreatedByID] ,[ModifiedOn] ,[ModifiedByID] ,[AccountID] ,[IsDefault] ,[Name] ,[INN] ,[KPP] ,[RSN] ,[OGRN] ,[BankID] ,[Address]) SELECT entity.[ID] ,entity.[CreatedOn] ,entity.[CreatedByID] ,entity.[ModifiedOn] ,entity.[ModifiedByID] ,[AccountID] ,[IsDefault] ,[LegalName] ,[INN] ,[KPP] ,[RS] ,[OGRN] ,[BankID] ,[LegalAddress] FROM [terra2].[dbo].[tbl_AccountLegalEntity] as entity update #AccountBillingInfo set #AccountBillingInfo.Position = t2.Position, #AccountBillingInfo.FIO = t2.Name, #AccountBillingInfo.Ground = t2.BasisForSignature, #AccountBillingInfo.SignerID = t2.ID from #AccountBillingInfo inner join tbl_AccountLegalEntitySigner as t2 on #AccountBillingInfo.ID = t2.LegalEntityID INSERT INTO #AccountBillingInfo ([ID] ,[CreatedOn] ,[CreatedByID] ,[ModifiedOn] ,[ModifiedByID] ,[AccountID] ,[IsDefault] ,[Name] ,[Position] ,[FIO] ,[Ground] ,[INN] ,[KPP] ,[RSN] ,[OGRN] ,[BankID] ,[SignerID]) SELECT signer.ID ,entity.[CreatedOn] ,entity.[CreatedByID] ,entity.[ModifiedOn] ,entity.[ModifiedByID] ,[AccountID] ,[IsDefault] ,[LegalName] ,[Position] ,signer.[Name] ,signer.[BasisForSignature] ,[INN] ,[KPP] ,[RS] ,[OGRN] ,BankID ,signer.ID from [tbl_AccountLegalEntity] as entity left outer join [tbl_AccountLegalEntitySigner] as signer on entity.ID = signer.LegalEntityID where not exists (select SignerID from #AccountBillingInfo where SignerID = signer.ID) and signer.ID is not null update #AccountBillingInfo set #AccountBillingInfo.BIK = t3.MFO, #AccountBillingInfo.KSN = t3.KS from #AccountBillingInfo inner join tbl_Bank as t3 on #AccountBillingInfo.BankID = t3.ID update tbl_Document set tbl_Document.AccountLegalEntityID = #AccountBillingInfo.ID from tbl_Document inner join #AccountBillingInfo on tbl_Document.AccountSignerID = #AccountBillingInfo.SignerID where AccountSignerID in (select ID from #AccountBillingInfo where ID = SignerID) update tbl_Invoice set tbl_Invoice.CustomerLegalEntityID = #AccountBillingInfo.ID from tbl_Invoice inner join #AccountBillingInfo on tbl_Invoice.CustomerSignerID = #AccountBillingInfo.SignerID where CustomerSignerID in (select ID from #AccountBillingInfo where ID = SignerID) update tbl_Contract set tbl_Contract.CustomerLegalEntityID = #AccountBillingInfo.ID from tbl_Contract inner join #AccountBillingInfo on tbl_Contract.CustomerSignerID = #AccountBillingInfo.SignerID where CustomerSignerID in (select ID from #AccountBillingInfo where ID = SignerID)
- восстановить все сброшенные ключи в новой базе
3) настроить права доступа и раздать их на все существующие записи (во всех администрируемых таблицах)
Вот и все. в принципе ничего сложного :biggrin:
Можно сбрасывать не все ключи, но тогда надо следить за порядком копирования: например перед копированием раздела контрагентов скопировать все его справочники (тип, типы средств связи т.д.) и справочники этих справочников (если есть), т.е. чтобы всегда существовали записи, на которые в копируемых записях есть ключи. Мне было проще сбросить сразу все).
Могу скинуть скрипты, которые я использовал, если саппорт не против
Добрый день!
В рамках технической поддержки, мы можем предоставить готовый пакет перехода, с помощью которого Вы сможете выполнить обновление базы, а также, перенести все существующие данные.
Также, если у Вас нет специалистов, которые могут выполнить перевод, Вы можете воспользоваться услугами специалистов Terrasoft.
Для предоставления утилиты перехода, Вам нужно предоставить на оценку копию Вашей базы данных (обезличенной), после чего, департамент разработки приступает к подготовке утилиты.
С уважением,
Белецкий Арсений
Группа компаний Terrasoft
Для переноса данных очень удобно использовать утилиты dbForge Schema Compare for SQL Server и dbForge Data Compare for SQL Server
Для отдельного справочника можно сгенерировать на старой базе INSERT-скрипт, используя SQL Script Generator (для MS) или TOAD (для Oracle, но TOAD не умеет записывать в скрипт BLOB-поля), а потом его запустить на новой базе. Для раздела - аналогично, но сначала перенести связанные справочники и разделы, либо избавиться в скрипте от значений в колонках типа "справочник", которые не будем переносить.