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




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

Назначение

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


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

Одна из больших проблем, с которой я столкнулся при командной разработке — актуализация тестовых данных для разработки. Пусть есть одна общая тестовая база, имеющая собственно только один конфигуратор на команду программистов, который постоянно занят. В локальной базе каждого разработчика есть какие-то данные, но отлаживать на них трудно, т.к. они быстро теряют актуальность. Копировать базу несколько раз в день — проблематично, потому что если конфигурация большая (например, 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 не будет опубликован. Обязательные поля помечены *