Рецепты переход с 3.3.1 на 3.4?

Добрый день сообщество. Подскажите был ли у кого опыт переноса доработок из 3.3.1 в 3.4? Какими средствами решали данную задачу?

Нравится

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

Я делал.
В любом случае вам надо понадобится TSMerge.exe, что-то типа Araxis Merge, скрипты SQL чтобы перенести данные в новую базу (это имхо проще, чем дорабатывать базу - там очень много изменений)

Однако, все зависит от количества и сложности доработок в вашей конфигурации. Нужно оценить - что проще прикрутить изменения 3.4 к вашей конфигурации или наоборот, ваши доработки накатить на конфигурацию 3.4.

Второй вариант предпочтительнее, т.к. тогда базовая логика будет точно адекватно отрабатывать.

В таком случае алгоритм такой:

1. Составляете перечень доработок - для этого сравниваете вашу конфигурацию с базовой вашей версии (3.3.1)

2. Берете новую чистую базу версии 3.4.1. Назовем ее ТЕСТ

3. Дублируете все ваши доработки (или не все, а только за исключением ненужных, как было у нас) в ТЕСТ. Т.е. в основном делаете их заново - копипастом с (если нужно) коррекцией и адаптацией. Это первая весомая часть работы.

4. Тестируете ТЕСТ. Мой совет: желательно делать это как можно более тщательно. И когда вам покажется, что все ок, проверить все еще раза три - уже чужими руками и глазами.

На данном этапе вы должны иметь новую тестовую базу версии 3.4 (ТЕСТ) со всеми доработками - в том числе со всеми вашими справочниками и, пожалуй, их значениеями. Значения не заводите заново а копируйте со старой базы:

insert into [TEST].[dbo].[tbl_SomeDictionary]
select * from [OldBase].[dbo].[tbl_OldNameOfSomeDictionary]

5. Переносите данные из старой базы в новую с помощью SQL-скрипта. Это вторая весомая часть работы.
Т.к. между таблицами есть связи то... есть два варианта:
-- правильный. Вы копируете данные в нужном порядке. Например, перед тем как скопировать таблицу контрагентов, вы копируете все справочники. А перед тем как копировать детали вы копируете все разделы, на которые они ссылаются. И т.д. и т.п.
Дело в том, что вам все равно где-то придется сбросить связи между таблицами. Поэтому я не стал ломать голову и пошел по второму пути:
-- неправильному. Я сбросил сразу все связи:

-- дропаем все ключи
 
-- tbl_Account
ALTER TABLE [dbo].[tbl_Account] DROP CONSTRAINT [FAccountAccountTypeID]
ALTER TABLE [dbo].[tbl_Account] DROP CONSTRAINT [FAccountActivityID]
ALTER TABLE [dbo].[tbl_Account] DROP CONSTRAINT [FAccountAddressTypeID]
ALTER TABLE [dbo].[tbl_Account] DROP CONSTRAINT [FAccountCampaignID]
...
etc

всего 523 строчки скрипта ))

После этого я скопировал данные. Всего 2644 строчки скрипта))

А после этого восстановил сразу все связи:

-- tbl_Account
ALTER TABLE [dbo].[tbl_Account]  WITH CHECK ADD  CONSTRAINT [FAccountAccountTypeID] FOREIGN KEY([AccountTypeID]) REFERENCES [dbo].[tbl_AccountType] ([ID])
ALTER TABLE [dbo].[tbl_Account] CHECK CONSTRAINT [FAccountAccountTypeID]
 
ALTER TABLE [dbo].[tbl_Account]  WITH CHECK ADD  CONSTRAINT [FAccountActivityID] FOREIGN KEY([ActivityID]) REFERENCES [dbo].[tbl_Activity] ([ID])
ALTER TABLE [dbo].[tbl_Account] CHECK CONSTRAINT [FAccountActivityID]
 
ALTER TABLE [dbo].[tbl_Account]  WITH CHECK ADD  CONSTRAINT [FAccountAddressTypeID] FOREIGN KEY([AddressTypeID]) REFERENCES [dbo].[tbl_AddressType] ([ID])
ALTER TABLE [dbo].[tbl_Account] CHECK CONSTRAINT [FAccountAddressTypeID]
...
etc

всего 1093 строчек скрипта))

6. Тестируем то, что получилось после переноса и долго ловим баги :exclaim:

7. Когда все проверили пятьсот раз - копируем данные заново (т.к. пока вы все это делали работа-то не стояла)

Естественно не забываем постоянно бекапить все базы, с которыми работаем.
Прикладываю мои скрипты и скрипт от техподдержки Террасофт, на основе которого я все и делал

Поддерживаю Дмитрия, причем придерживаюсь мнения, что надежнее переносить свои доработки на 3.4 (второй вариант).

Почитайте также, как мы переводили клиента с 3.0.4 на 3.3.1 - в общем то принципы переноса те же самые.
http://www.community.terrasoft.ua/blogs/4354
http://www.community.terrasoft.ua/blogs/4504

Валерий, а вы адаптировали эту утилиту под другие версии?

[quote="Валерий Андрусик"]Почитайте также, как мы переводили клиента с 3.0.4 на 3.3.1 - в общем то принципы переноса те же самые.
http://www.community.terrasoft.ua/blogs/4354
http://www.community.terrasoft.ua/blogs/4504[/quote]
Пишет недостаточно прав(( Почему?

Иван, здравствуйте.

А можно поподробней, на каком шаге, при каких действия у Вас возникает ошибка "Недостаточно прав"? Если можно также прикрепите скриншот.
Заранее спасибо!

Дмитрий, на этапе перехода по ссылке :lol:

Попробуйте сейчас, сменил уровень доступа к записям

"Андросов Дмитрий" написал:Валерий, а вы адаптировали эту утилиту под другие версии?

Да она не особо требует адаптации... Просто загружаем в нужную версию набор сервисов, которые были созданы еще для 3.0.4 :smile:

"Валерий Андрусик" написал:Попробуйте сейчас, сменил уровень доступа к записям

Да спасибо открылось. Валерий утилита миграции приобретаеться у Вас?

До коммерческого варианта мы не довели, и сейчас к сожалению некогда этим заниматься...
Отправил в личном сообщении сервисы текущего варианта, попробуйте использовать.

"Валерий Андрусик" написал:До коммерческого варианта мы не довели, и сейчас к сожалению некогда этим заниматься...
Отправил в личном сообщении сервисы текущего варианта, попробуйте использовать.

Отличная утилита. Перенес все новые сервисы в 3.4. Единственное что заметил почему то не обновились таблицы в БД. Это нужно каждую таблицу отдельно обновлять или это где то у меня косяк случился?

Должно сохранять - в коде есть вызов функции MigrateSaveTables
По крайней мере должно было выдать ошибку.

Походу из за _Right таблиц не перенеслись основные таблицы

Кстати, Right таблицы переносить не надо - они автоматически создадутся при переносе основных таблиц

Да сейчас нужно немного моденизировать утилиты чтобы она проверяла если имя таблицы заканчиваеться на Right, чтобы она их пропускала

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