gifts2017

"Мгновенный" перенос конфигурации

Опубликовал Герман (German) в раздел Администрирование - Системное

Мгновенный перенос изменений конфигурации между копиями ИБ 8.*
Версия для печати


Очень часто при разработке используется несколько копий базы одной конфигурации.

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


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

Немного напомню у том как это можно сделать стандартными методами

Есть два пути .. через распределенку, и через Владивосток.

Через распределенку все просто передаем изменения из главного узла в перефирийные.
Чем плох данный способ ..
  • Во первых нужно создавать план обмена.
  • Во вторых каждый раз при создании копии (не начального образа) переопределять главный узел.
  • Ну и читать каждый раз изменения из Xml файла, запуская вначале предприятие и потом конфигуратор.
Ну и через Владивосток это самый распространенный способ:
  1. Выгрузить конфигурацию (УПП 1.2.9 - 5 мин)
  2. Загрузить конфигурацию без сравнения (УПП 1.2.9 - 9 мин).
  3. Обновить конфигурацию (УПП 1.2.9 - 4 мин)
Итого: (5 + 13*n) где n- колличество баз.
О недостатках этого способа нужно говорить?

Есть еще один путь .. пользуюсь им давно не так давно но поражаюсь почему до этого все ходил мимо и не замечал таких простых вещей.

О том как хранятся данные конфигурации писалось давно и много в том числе и мной.
Обратил я внимание на колонку "Modified" в этой колонке сохраняется дата последней модификации записи конфигурации. Вот это основная наша соломинка

Теперь спустимся ну уровень ниже. Для того что передать изменения в конфигурацию нужно сделать записи в Таблицу ConfigSave. При чем не всей конфигурации (как при загрузке без сравнения), а только измененных. Измененной запись будем считать если дата изменения "Modified" ее в основной конфигурации больше чем в копии. Можно еще сравнивать по размеру ну я считаю что это лишнее.
Ну собственно записи добавляем следующим запросом в EM или Enterprise Integrator

В запросе нужно поменять только названия баз соответствующих вашим.

 

 

Имя БД
Описание
dogovor_81 Основная БД из которой передаем изменения конфигурации.
Dogovor81_Test Копия БД в которую нужно передать изменения конфигурации.

 

INSERT INTO Dogovor81_Test.dbo.ConfigSave
Select ConfigNew.* From dogovor_81.dbo.Config as ConfigNew
Left JOIN
Dogovor81_Test.dbo.Config as ConfigOld
ON ConfigNew.FileName = ConfigOld.FileName
Where ConfigNew.Modified>ConfigOld.Modified or ConfigOld.Modified is Null

Выполняем запрос, перечитываем конфигурацию и обновляемся.
Теперь на сладкое... о достоинствах.
  1. Запрос выполняет меньше 2 сек.
  2. Обновление ~~60 сек. записей значительно меньше.
  3. Устраняется колоссальная избыточность перезаписи одинаковых данных.
Ограничения:
  1. Перед выполнением запроса конфигурация в которую необходимо передать изменения должна соответствовать конфигурации БД.
  2. Разумеется только для серверного варианта.



 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Артур Аюханов (artbear) 15.04.08 10:32
Красиво :)
ЗЫ блин, похоже, уже пора как-нибудь научиться пользоваться Интегратором :)
2. Дмитрий Глух (IronDemon) 15.04.08 13:20
А что будет при обычном сравнении-объединении после применения твоего способа?
3. Валерий Агеев (awa) 15.04.08 21:45
Плюс однозначно! Но вообще-то для описанной ситуации (несколько баз с идентичными конфами) в 1С предусмотрен механизм хранилища, он же средство групповой разработки, он же система контроля версий. Хранилище много удобней и распределенки и уж тем более "Владивостока" :) И в пакетном режиме можно базы обновлять - есть соответствующие ключи командной строки.
mikhailovaew; hulio; +2 Ответить
4. Валерий Агеев (awa) 15.04.08 22:28
Кстати, если в новой конфигурации будет удалён какой-либо объект, например справочник? Насколько я понял из запроса, в обновляемой конфе он останется. Или 1С такую ситуацию отработает правильно?
5. borovikSV (BorovikSV) 15.04.08 22:32
Зачем огород городить? Есть же хранилище!
6. Герман (German) 16.04.08 09:44
(4) все ситуации будут отработаны стандартно.. аналогичны перечислинным вариантам.
http://groups.google.ru/group/enterprise-integrator/browse_thread/thread/30d2c1b28661ef5f
7. Герман (German) 16.04.08 09:48
(5) я не против хранилища как раз наоборот, но хранилише в пурвую очередь необходимо для групповой разработки.
Как раз наооборот для выполнения секудных операций в мне предлагаете подключить базы к хранилишу. а я предлагаю выполнить всего лишь один запрос.
8. Антон (Fynjy) 17.09.08 11:55
Вот ведь вопрос ... При РБД прокатит такой перенос? Там помоему идет метка "изменения отправлены"- "изменения загружены". Или я ошибаюсь.
ЗЫ: Идея гуд.
9. Андрей Куришко (boggonzikov) 27.01.10 09:27
А для postgres подскажите запрос?
10. Алексей Марочкин (mrscylla) 01.07.10 15:37
boggonzikov порадовал (я случайно зашел в эту тему)

На дворе 2010 год и "Хранилище конфигурации" и "Сервер хранилища конфигурации"

:D
11. Трактор Трактор (Трактор) 08.12.10 12:23
Жестокий способ. Автор знает толк в извращениях :-) А вечерами, наверное, развлекается гуляя по канату на двадцатиметровой высоте без страховки.
12. Модератор раздела Артур Аюханов (artbear) 05.03.12 18:20
(0) Герман, что-то старые статьи стали недоступны.
Например, в публикации есть нерабочая ссылка http://groups.google.ru/group/enterprise-integrator/web/%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D1%8B%20­%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86­%D0%B8%D0%B8-2#Data
Дашь полный путь?
13. rasswet (rasswet) 06.11.13 09:40
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа