gifts2017

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

Опубликовал Пишу код как картины (yurii_host) в раздел Программирование - Инструментарий

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

Назначение

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


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

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

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

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

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


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

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

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


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

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


Ограничения

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

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

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


Версия 2.1.0

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

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

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


Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Обработка для выгрузки данных
.epf 16,54Kb
22.06.16
4
.epf 2.1.0 16,54Kb 4 Скачать
Пример выгрузки (ERP демо)
.mxl 30,65Mb
16.06.16
1
.mxl 30,65Mb 1 Скачать

См. также

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

Комментарии

1. Сергей (necropunk) 16.06.16 17:33
Интересно. Давно думал про такую вещь. А сложно ли добавить, чтобы был вариант синхронизации по ГУИДам? То есть, чтобы при переносе из базы в базу, сохранялся ГУИД?
2. Алексей Ларин (roofless) 17.06.16 10:20
поддерживаю предыдущего комментатора.
плюс вопрос: нужно перенести доки Реализации товаров и услуг, нужно ли ставить галки у справочников или по ссылке они сами перенесутся?
3. Пишу код как картины (yurii_host) 17.06.16 12:48
(1) necropunk, (2) roofless, согласен. В ближайшее время планирую реализовать перенос по идентификаторам.
4. Пишу код как картины (yurii_host) 17.06.16 12:49
(2) roofless, создадутся элементы, но реквизиты и табличные части у них будут пустые.
5. Алексей Ларин (roofless) 17.06.16 12:54
(4) yurii_host, было бы круто, если бы эта фича работала (как в универсальной выгрузке/загрузке) - выгружать всё зависимое. Но я так понимаю в вашем случае это не требовалось или было не приоритетным
6. ОРИОН ОРИОН (orion_king) 17.06.16 13:04
(1) necropunk, (2) roofless, (3) yurii_host,

Что вам мешает грузить данные через XML, чтобы идентификаторы сохранить?
7. Пишу код как картины (yurii_host) 17.06.16 13:08
(5) roofless, перенос всех зависимых реквизитов, предполагает рекурсивный обход. Это скажется на скорости выгрузки, а также требует существенных затрат на программную реализацию, с обходом всех подводных камней. Вот, скажем, переносите вы реализацию, предположим, что мы перенесем также и движения этой реализации. Но поступление, которое сформировало приход, мы же все равно не зацепим. То есть, я не смогу перенести все данные для проведения реализации в один клик. Также мне скорее всего понадобятся какие-нибудь настройки, константы и т.п.
В общем, лично для себя я не вижу большой выгоды в рекурсивном переносе зависимостей (на текущий момент).
Но у меня есть другая идея, которая позволяла бы быстро переносить только нужную часть данных. Планирую ее реализовать в ближайшее время.
8. Пишу код как картины (yurii_host) 17.06.16 13:10
(6) orion_king, структура базы меняется несколько раз в день, когда разработчиков много. XML загрузка сразу же падает.
9. Артур Аюханов (artbear) 17.06.16 13:19
>Ограничение: количество записей в табличных частях не выполняется.

Опечатка?
10. Артур Аюханов (artbear) 17.06.16 13:22
(0) Спасибо, интересно.

(5) roofless, Выгрузка зависимых частей (при необходимости) реализована в нашем генераторе данных (из продукта тестирования 1С xUnitFor1C)
Вот моя статья по описания продукта http://infostart.ru/public/418168/

В нашем варианте также решена проблема с "неважными" полями. в отличие от ХМЛ-выгрузки.
11. Пишу код как картины (yurii_host) 17.06.16 13:22
(9) artbear, исправил. Спасибо
12. Артур Аюханов (artbear) 17.06.16 13:24
(0) Исходники своего кода на гитхаб выложишь?
13. Пишу код как картины (yurii_host) 17.06.16 13:26
14. Пишу код как картины (yurii_host) 22.06.16 09:41
(3) yurii_host, реализована выгрузка ГУИДов
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа