Добрый день сообщество. Подскажите был ли у кого опыт переноса доработок из 3.3.1 в 3.4? Какими средствами решали данную задачу?
Нравится
Я делал.
В любом случае вам надо понадобится 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]
Пишет недостаточно прав(( Почему?
Иван, здравствуйте.
А можно поподробней, на каком шаге, при каких действия у Вас возникает ошибка "Недостаточно прав"? Если можно также прикрепите скриншот.
Заранее спасибо!
"Андросов Дмитрий" написал:Валерий, а вы адаптировали эту утилиту под другие версии?
Да она не особо требует адаптации... Просто загружаем в нужную версию набор сервисов, которые были созданы еще для 3.0.4 :smile:
"Валерий Андрусик" написал:Попробуйте сейчас, сменил уровень доступа к записям
Да спасибо открылось. Валерий утилита миграции приобретаеться у Вас?
До коммерческого варианта мы не довели, и сейчас к сожалению некогда этим заниматься...
Отправил в личном сообщении сервисы текущего варианта, попробуйте использовать.
"Валерий Андрусик" написал:До коммерческого варианта мы не довели, и сейчас к сожалению некогда этим заниматься...
Отправил в личном сообщении сервисы текущего варианта, попробуйте использовать.
Отличная утилита. Перенес все новые сервисы в 3.4. Единственное что заметил почему то не обновились таблицы в БД. Это нужно каждую таблицу отдельно обновлять или это где то у меня косяк случился?
Должно сохранять - в коде есть вызов функции MigrateSaveTables
По крайней мере должно было выдать ошибку.
Походу из за _Right таблиц не перенеслись основные таблицы
Кстати, Right таблицы переносить не надо - они автоматически создадутся при переносе основных таблиц
Да сейчас нужно немного моденизировать утилиты чтобы она проверяла если имя таблицы заканчиваеться на Right, чтобы она их пропускала