Универсальное сопоставление двух баз различной структуры


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

Используется на практике, проверено.

Сопоставление ведется через COM-соединение, в планах — сравнение выгруженных в файл данных, для удаленных баз данных.

Прилагаю готовые правила для сопоставления УТ и Розницы.

 

20 Comments

  1. Ish_2

    С начинанием !

    Даже не смотрел. Кажется по постановке , такая задача уже встречалась.

    Reply
  2. fixin

    (1) Не уверен, что встречалась. Но буду рад потягаться качеством.

    Reply
  3. Ish_2

    (2) Поиск вел по фразе «сравнение баз» пока ничего похожего.

    Reply
  4. fixin

    в качетсве прикола расскажу, что потерял готовую обработку, но осталась версия 50% готовности. Скрепя сердце, таки ее написал повторно, т.к. очень нужна на практике, особенно там где идут обмены УТ-Бух или РТ-УТ.

    Reply
  5. AnryMc

    (0) А почему «Буриданов осёл»?

    Reply
  6. romansun

    (5)

    ну типа — изучать КД-не изучать КД, изучать-не изучать..

    а тут ррраз — и эта обработка 🙂

    По публикации — люблю простые обработки, даже если уже и написано пятьсот суперкомбайнов. Как буду что-нить сравнивать, обращу внимание, спасибо.

    Reply
  7. Boroda

    А правила для других, кроме УТ-Бух или РТ-УТ, конфигураций в перспективе ожидаются? Или обработка их сама формирует, на основании каких-либо заданных условий?

    И преимущества перед Конвертацие данных?

    Reply
  8. Ish_2

    (6) В точку.

    Reply
  9. fishca

    Ура! «Карлсон» вернулся 🙂

    Reply
  10. fixin

    (9) привет, Малыши!

    (6) КД изучать однозначно. Уж сколько я от нее открещивался, но если начинаете работать во франче, самое оно…

    (5) не знаю, на тему «сравнения» картинок не нашел, пришлось использовать тему «выбора», там тоже знаете ли идет постоянное сравнение.

    (7) У меня есть правила УТ-УТ, где-то завалялись правила УТ-Бух, попробую все это выложить. Но эти правила тривиальны, вы сами можете их набросать по аналогии. Все же это тулза для программистов. А насчет преимуществ перед КД — это вы о чем? КД уже умеет СРАВНИВАТЬ базы?

    Reply
  11. Ish_2

    (10) А мне удалось отбиться. Не знаю КД.

    Reply
  12. fixin

    (11) Ну это до поры до времени. Типовые обмены данными между УТ и Бух и другими неоднородными конфами написаны на КД, так что хочешь не хочешь, а хотя бы поверхностно (на уровне сопровождения, а не создания правил обмена) знать придется.

    Reply
  13. sandro1

    Интересно испытать

    Reply
  14. master_yoda

    Качнул,буду пробовать

    Reply
  15. mikhailv

    Большое спасибо автору! Интересная и очень полезная обработка. Из плюсов хотелось бы отметить универсальность (даже вычисления над данными поддерживаются), интуитивную понятность правил (примеры качать обязательно!) и наглядность.

    Среди минусов:

    — сравниваются только документы (легко исправляется копипастом для справочников)

    — довольно долго работает, т.к. метод «.выбрать», но это видимо плата за универсальность.

    Также большая просьба дополнить обработку на тему условных обозначений: вызвало затруднение сразу понять, что означает «Т» и «Б». Оказалось, «Т» — текущая, «Б» — удалённая. Можно отметить это в надписях к строкам соединений, тогда будет понятно, мне кажется.

    Это же касается и легенды к цветовому обозначению.

    В целом — зачётно!

    Reply
  16. fixin

    (15) спасибо за дельные советы. На дооформление, увы, пока что нет времени.

    Выбрать конечно же можно заменить запросом, если имеет смысл.

    Вообще я хотел делать не только через ком-соединения, но и через выгрузку данных из базы в файлы.

    Тогда можно было на удаленных базах запускать, а потом в центре сравнивать.

    Но так и не доковырял для файла. Дерзайте, ныне ободренны, Фиксина чтобы перегнать.

    Reply
  17. fixin

    Вот такой примерно код можно использовать для автоматического запуска сопоставления и рассылки его почтой:

    О = САП.ДатьВнешнююОбработку(«Сопоставление объектов»);
    Ф = О.ПолучитьФорму();
    Ф.Открыть();
    О.ИмяФайлаНастроек = «d:1cОбработкиСопоставление базСопоставление объектов в Рознице с УТ.txt»;
    О.флНастройкиШапка = истина;
    Ф.ЗагрузитьСохранитьНастройки(истина); //Загрузка
    //О.Дата1 = ‘00010101’; //с начала времен
    О.Дата1 = НачалоДня(ТекущаяДата()) — 3600*24*365; ; //за год
    О.Дата2 = НачалоДня(ТекущаяДата()) — 3600*24*2; //минус два дня…
    //Ф.Дата1 = Ф.Дата2; //для отладки
    Ф.КнопкаВыполнитьНажатие(Неопределено);
    
    ТабДок = Ф.ЭлементыФормы.Результат;
    ЗаписьЖурналаРегистрации(«Отладка.Сопоставление»,,,,»Сформирован отчет по сопоставлению»);
    ИмяФайла = ПолучитьИмяВременногоФайла(«XLS»);
    ЗаписьЖурналаРегистрации(«Отладка.Сопоставление»,,,,»Устанавливаем флаг разрешения вывода: » + ТабДок.Вывод);
    ТабДок.Вывод = ИспользованиеВывода.Разрешить;  //
    ЗаписьЖурналаРегистрации(«Отладка.Сопоставление»,,,,»Установлен флаг разрешения вывода: » + ТабДок.Вывод);
    ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLS);
    ИмяАрхива = ПолучитьИмяВременногоФайла(«ZIP»);
    САП.УпаковатьФайлВZIP(ИмяФайла, ИмяАрхива);
    
    Получатели = «1s@domen.ru»;
    САП.ОтправитьПисьмо(, Получатели, «Сопоставление объектов Розницы и УТ за период с » + Формат(Ф.Дата1, «ДФ=dd.MM.yyyy») + » по » + Формат(Ф.Дата2, «ДФ=dd.MM.yyyy») , «Смотрите отчет в приложенном XLS-файле», ИмяАрхива);
    
    

    Показать

    Reply
  18. ivanov660

    Мне кажется не хватает алгоритма проведения вышеуказанной манипуляции. Без общего описания не вижу смысла качать.

    Reply
  19. fixin

    (18) да, это обработка для продвинутых программистов. 😉

    гыгыгыгы

    Reply
  20. ivanov660

    И что? Без «ста грамм» не разберешься 😉

    На нет и суда нет…

    Reply

Leave a Comment

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