Конвертация данных SQL (управляемые формы).


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

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

Данная обработка позволяет по названиям объектов метаданных быстро очистить данные таблицы и перенести данные из базы источника SQL — прямым запросом.

Для выполнения операции необходимо:

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

2. Выбрать объект для обработки

3. Выбрать таблицу в базе приемнике (из выпадающих списков)

4. Выбрать поля таблицы в базе приемнике для обработки (из выпадающего списка)

5. Разрешить манипуляции с данными (очистку и запись).

6. Нажать кнопку «Скопировать данные таблицы источника в таблицу базы приемника».


П.С. Данная обработка является логическим продолжением существующего аналога: //infostart.ru/public/147147/

Логика:

Шаг 1: Открываем базу источник и получаем из нее структуру метаданных с полями SQL через COMConnector.

Шаг 2: Очищаем выбранную в базе приемнике таблицу с данными и загружаем новые данные из базы источника через ADODB.

18 Comments

  1. zekrus

    Эта штука снится мне уже 5 лет (просыпаюсь с криком).

    Reply ↓
  2. kapustinag

    (1) с криком ужаса? Не то очистили или не туда загрузили 5 лет назад?

    Обработка для тех, кто УЖЕ делает бэкапы.

    Reply ↓
  3. zekrus

    (2) kapustinag, Я вижу вас никогда не мучает желание выразить идею (воплотить ее в жизнь), покажите ваши публикации может ваши идеи и муки поиска будут более впечатляющими. Объективно есть вам, что мне предложить по сабжу?

    Reply ↓
  4. tolyan_ekb

    Как обработка понимает какие данные соответствуют данным в другой базе? Например, при переносе из УТ в БП.

    Reply ↓
  5. zekrus

    (4) tolyan_ekb, Пока к сожалению никак — на перспективу есть чем заняться с различными структурами в базах (времени просто в обрез). В целом идея — упростить процедуру выгрузки загрузки.

    Reply ↓
  6. tolyan_ekb

    (5) тогда почему конвертацией называется? Может с разными версиями баз работать?

    Reply ↓
  7. zekrus

    (6) tolyan_ekb, Поправил. Теперь может работать с разными версиями баз. Пробуйте 😉

    Reply ↓
  8. kapustinag

    (3) Вы не поняли. У меня и в мыслях не было обидеть.

    Просто я воспринял Вашу фразу «Эта штука снится мне уже 5 лет (просыпаюсь с криком)» как желание поделиться каким-то прошлым опытом, возможно, негативным. И шутливо (мне казалось, что это будет именно так понято) продолжил тему. Вот и все.

    Конкретно по предмету публикации — меня это заинтересовало, иначе бы я никаких комментариев не оставлял. Не так давно занимался сверткой базы УПП размером первоначально 145Гб, обошелся без непосредственного использования SQL, но решил, что в следующий раз нужно будет делать по-другому. Очень уж небыстро это делается 1С-овскими средствами.

    Поэтому все материалы, касающиеся свертки с использованием SQL, обмена через SQL, иного использования SQL для задач 1С, внимательно изучаю.

    Reply ↓
  9. V.Nikonov

    А как обработка работает с Рекурсивными ссылками? Т.е. реквизиты ссылочного типа приводят к переносу объектов ссылок? А степень анализа уровней?

    Reply ↓
  10. zekrus

    (9) V.Nikonov, Все ссылки переносятся при условии идентичности типов в базах. Конвертация типов данных пока не реализована, к сожалению. Но если есть желание заказать — любая прихоть за ваши деньги!

    Reply ↓
  11. V.Nikonov

    (10) Давайте уточним, переносятся ссылки (реквизиты)? А сами объекты по ссылкам?

    Если переносятся объекты по ссылкам, то какой уровень вложенности допускается? Запоминаются ли ранее выгруженные объекты, для исключения повторной пересылки?

    Reply ↓
  12. zekrus

    (11) V.Nikonov, Переносятся зеркально все данные! Если будут указаны отдельно объекты для переноса (полностью вся таблица), то они тоже переносятся. Уровень вложенности допускается 1 в 1 как в базе источнике. Все ранее записанные данные в таблице стираются. Еще один минус есть — пока нет возможности обработки событий (до выгрузки, после выгрузки, в процессе).

    Reply ↓
  13. V.Nikonov

    Ещё раз уточним.

    Например заказали выгрузку справочника Контрагенты. В справочнике есть реквизит «ОсновнойДоговор», который содержит ссылку на элемент справочника «ДоговорыКонтрагентов», который не выбран для выгрузки. Спрашивается, будет ли выгружен экземпляр объекта (Договор) который указан в реквизите?

    Соответственно у Элемента «ДоговорКонтрагента» возможны собственные реквизиты (ссылки на другие объекты)… Они попадут под выгрузку?

    Просто, если нет рекурсии (выгрузка по ссылкам), то вероятно появление кучи «битых ссылок». Если рекурсия есть, и нет анализа уже выгруженных объектов, то могут по 100 раз пересылаться один и тот же объект. Да и если разрешить все рекурсивные ссылки, то процесс может затянуться до бесконечности (есть вариант зацикливания)!

    Reply ↓
  14. zekrus

    (13) V.Nikonov, Нет не будет (без отметки). Нет не попадут (без отметок). Согласен что задача не простая (для этого нужен квалифицированный специалист).

    Reply ↓
  15. V.Nikonov

    (14) тогда рекомендовал бы третье состояние объектов (ВыгружатьПоСсылкам). А количество уровней вложенности (объекты по Ссылкам) ограничить выгрузкой реквизитов Основного объекта…

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

    Reply ↓
  16. zekrus

    (15) V.Nikonov, Я не против — оплата будет?

    Reply ↓
  17. V.Nikonov

    (16) Спрос появится!!!

    Reply ↓
  18. zekrus

    (17) V.Nikonov, Супер. Только я тут не для этого. Я начал постить на всякий (конца света ждал).

    Reply ↓

Leave a Comment

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