Конвертация данных 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 не будет опубликован. Обязательные поля помечены *