Выгрузка данных из тестовой базы




Инструмент будет полезен при командной разработке на тестовой базе.

Назначение

Эта обработка предназначена для выгрузки данных из тестовой базы малого объема в табличный документ для последующей загрузки в копию тестовой базы.


Описание решаемой задачи

Одна из больших проблем, с которой я столкнулся при командной разработке — актуализация тестовых данных для разработки. Пусть есть одна общая тестовая база, имеющая собственно только один конфигуратор на команду программистов, который постоянно занят. В локальной базе каждого разработчика есть какие-то данные, но отлаживать на них трудно, т.к. они быстро теряют актуальность. Копировать базу несколько раз в день — проблематично, потому что если конфигурация большая (например, ERP или УПП), то подключать ее к хранилищу после копирования очень долго.

Попробовал различные обработки по переносу данных, но они все не подошли, т.к. структура базы постоянно меняется. Все обработки по переносу, которые я нашел, падали на первом же переименованном поле или объекте.

Данная обработка выгружает данные в формате загрузчика, частично описанном мной в предыдущей статье. Упомянутый загрузчик заполняет объекты через метод ЗаполнитьЗначенияСвойств(), поэтому если поле переименовано, то оно просто не заполняется и загрузка продолжается. Если переименован/удален объект или табличная часть, загрузка также продолжается с выдачей предупреждения.

Пример формата данных приложен к данной статье


Подсчет выгружаемых объектов

В обработке имеется кнопка для подсчета количества элементов и записей в таблицах бд. Таблицы с большим количеством данных подсвечиваются цветами по принципу: чем больше данных, тем ярче цвет.

Ограничение: подсчет количества записей в табличных частях не выполняется.


Исключаемые объекты

Если часто переносим данные из тестовой базы, то неудобно каждый раз снимать галки с таблиц с большим количеством данных. Для этого используется кнопка “Исключить объекты по списку”. В текстовое поле вводится имя или синоним исключаемого объекта (каждый объект с новой строки).


Ограничения

  1. Интерфейс реализован только для управляемых форм

  2. Есть нерешенные проблемы с переносом точек бизнес-процессов и типа значений планов видов характеристик

Обработка не зависит от подсистем и сторонних библиотек. Использовалась пока только на платформе 8.3.7


Версия 2.1.0

1. Список выгружаемых объектов расширен практически до всех объектов бд

2. Релизована выгрузка ссылок с идентификаторами (в соответствии с пожеланиями в комментариях)

3. Сделано открытие списка по двойному щелчку в дереве


14 Comments

  1. necropunk

    Интересно. Давно думал про такую вещь. А сложно ли добавить, чтобы был вариант синхронизации по ГУИДам? То есть, чтобы при переносе из базы в базу, сохранялся ГУИД?

    Reply ↓
  2. roofless

    поддерживаю предыдущего комментатора.

    плюс вопрос: нужно перенести доки Реализации товаров и услуг, нужно ли ставить галки у справочников или по ссылке они сами перенесутся?

    Reply ↓
  3. json

    (1) necropunk, (2) roofless, согласен. В ближайшее время планирую реализовать перенос по идентификаторам.

    Reply ↓
  4. json

    (2) roofless, создадутся элементы, но реквизиты и табличные части у них будут пустые.

    Reply ↓
  5. roofless

    (4) было бы круто, если бы эта фича работала (как в универсальной выгрузке/загрузке) — выгружать всё зависимое. Но я так понимаю в вашем случае это не требовалось или было не приоритетным

    Reply ↓
  6. orion_king

    (1) necropunk, (2) roofless, (3)

    Что вам мешает грузить данные через XML, чтобы идентификаторы сохранить?

    Reply ↓
  7. json

    (5) roofless, перенос всех зависимых реквизитов, предполагает рекурсивный обход. Это скажется на скорости выгрузки, а также требует существенных затрат на программную реализацию, с обходом всех подводных камней. Вот, скажем, переносите вы реализацию, предположим, что мы перенесем также и движения этой реализации. Но поступление, которое сформировало приход, мы же все равно не зацепим. То есть, я не смогу перенести все данные для проведения реализации в один клик. Также мне скорее всего понадобятся какие-нибудь настройки, константы и т.п.

    В общем, лично для себя я не вижу большой выгоды в рекурсивном переносе зависимостей (на текущий момент).

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

    Reply ↓
  8. json

    (6) orion_king, структура базы меняется несколько раз в день, когда разработчиков много. XML загрузка сразу же падает.

    Reply ↓
  9. artbear

    >Ограничение: количество записей в табличных частях не выполняется.

    Опечатка?

    Reply ↓
  10. json

    (9) artbear, исправил. Спасибо

    Reply ↓
  11. artbear

    (0) Спасибо, интересно.

    (5) roofless, Выгрузка зависимых частей (при необходимости) реализована в нашем генераторе данных (из продукта тестирования 1С xUnitFor1C)

    Вот моя статья по описания продукта http://infostart.ru/public/418168/

    В нашем варианте также решена проблема с «неважными» полями. в отличие от ХМЛ-выгрузки.

    Reply ↓
  12. artbear

    (0) Исходники своего кода на гитхаб выложишь?

    Reply ↓
  13. json

    (12) artbear, см. progromaking

    Reply ↓
  14. json

    (3) реализована выгрузка ГУИДов

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *