OLE — монитор

Простенький монитор для проверки 2х синхронизированных по UID баз.

Для тех, кто синхронизирует базы по внутренним уникальным идентификаторам UID. В текущей базе необходимо открыть обработку, настроить параметры подключения к удаленной базе, выбрать тип объекта, отбор, если нужно. Отобрать данные в текущей базе, и нажать «Загрузить данные удаленной базы»… Таблица дополнится колонкой с идентификатором и колонкой со стоковым представлением ссылки в удаленной базе. Таким образом, легко можно проверить, все ли выгрузилось, и, главное, синхронизовано ли это по UID. часто бывает, что «умелые руки», не дожидаясь выгрузки, создают в удаленной базе документы или элементы справочников вручную. Когда документов много, и уследить в онлайн-режиме за дубликатами трудно, то после выгрузки обнаруживаются сюрпризы… Для наведения порядка поможет эта обработка. И не забудьте закрыть открывшееся окно удаленной базы, как только обработка начнет поиск. Скорость работы при этом увеличится в десятки раз.

Прим. Давно замечено, что если ComБаза.Visible = TRUE, а потом его закрыть, то будет в разы быстрее, чем если сразу написать ComБаза.Visible = FALSE

Последние версии всех обработок с полным описанием на http://sites.google.com/site/ghostishe1c

22 Comments

  1. mamappc

    Ща глянем… 😉

    Reply
  2. webcont

    … и я гляну…

    Reply
  3. lubaduba

    мне не нужно, но идея хорошая. плюс

    Reply
  4. kote

    P.S. Кому не лень, на моей страничке, которая есть в обработке, кликните по гугловскому баннеру

    ===

    Вы прямо в текст статьи эту ссылку поместите.. или хотите отследить, сколько чел реально тестировало обработку?

    Reply
  5. ghostishe

    (4) Вообще хотелось бы знать, сколько народу. Просто другую мою обработку скачали 900 раз отсюда с инфостарта, так никто толком не отписался.

    Reply
  6. ediks

    (5)

    1) И сколько раз я должен кликнуть, чтобы можно было уже перейти на закладку «настройка»? Переключаюсь на настройку, а меня упорно выбрасывает на закладку WEB. Это фича или баг? Или я обязательно должен куда-то кликнуть, чтобы отметиться в качестве подопытного кролика ?

    2) Ctrl+V для ввода имени сервера и базы уже отменили? Или это только у меня такая фича? В notepad почему-то копируется.

    3) В обработке вообще возможно работать без переключения на страничку автора? Когда она вдруг переключается на закладку WEB во время ввода данных — как-то напрягает.

    4) Удалось таки нажать кнопку «Загрузить данные». получил {ВнешняяОбработка.COM_MONITOR(44)}: Значение не является значением объектного типа (Метаданные).

    Reply
  7. ghostishe

    (6)

    1. Это у тебя что-то не так…

    2. ctrl+v работает во всех полях

    3. можно, я не в курсе, почему у тебя что-то перескакивает. Если у тебя глючит — в конфигураторе удали эту закладку и все. проблем-то?

    4. 99% неправильно ввел данные удаленной базы или прав не хватает. проверь.

    Reply
  8. ediks

    (7) После удаления закладки WEB обвинения по пунктам 1,2,3 снимаются 🙂

    Пункт 4 остался.

    Данные введены верно — проверил, да и пользуюсь я известной комбинацией Ctrl+C Ctrl+V.

    Насчет прав: я под этими же правами перезаливаю данные параллельно в эту же базу. Куда уж полнее полных прав. Но у меня установлена аутентификация Windows в удаленной базе. В этом может быть проблема? Аналогичная обработка присоединилась без проблем http://infostart.ru/public/21382/

    Reply
  9. alexk-is

    Вот решил «отписаться». Это не со зла, а так — некоторые замечания

    1. Если не выбран сравниваемый объект, то ошибка

    2. Если не указаны параметры подключения, то ошибка

    3. Работает очень медленно

    4. После заполнения таблицы значений остается висеть процесс 1С:Предприятия до закрытия обработки

    5. При сравнении, например, справочника на 20000 нет наглядного отображения расхождений. Выявить расхождения визуально не реально

    6. Модуль зачем-то запаролен

    Модуль стыдно показать? 🙂

    Уверен, что можно поднять скорость получения данных из подключенной базы хотя бы в 10 раз — я же смог у себя поднять скорость в 90 раз 🙂 Хотел в 100 — не получилось 🙂

    Как поднять скорость можно посмотреть http://www.infostart.ru/public/71130/ и http://www.infostart.ru/public/18924/ 🙂

    Reply
  10. ghostishe

    (9)

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

    3. Написано же… В описании, что надо закрыть открывшийся сеанс удаленной базы. Тогда скорость возрастет в десятки раз. Внимательнее читай описание.

    4. Мой косяк. исправлено. забыл закрыть COM-соединение.

    5. Проще простого. Стандартными возможностями платформы, не забывай про отбор в табличном поле. на первом ненайденном удаленном справочнике правой кнопкой — установить отбор по текущему значению — в табличке останутся ТОЛЬКО расхождения, куда уж нагляднее? 😉 Это ж «1С для чайников». каждый знать должен.

    6. Модуль могу открыть, если надо.

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

    Reply
  11. ghostishe

    (9)

    Спец для тебя добавил 2 блока с «Попытка — Исключение», чтоб ошибки не вылетали.

    СОМ-соединение закрыл. Процессов больше висеть не должно.

    Ну а по поводу наглядности, сейчас проверил на 40 000 документах постцупления. Берешь этот столбец и по алфавиту сортируешь стандартной командой контекстного меню A-Z и все. <ОБЪЕКТ НЕ НАЙДЕН> будут все рядышком один за другим. Наглядно очень даже. 😉

    Reply
  12. alexk-is

    (10) Быстрее это не показатель, хотелось бы увидеть результат в цифрах.

    (11) По 40000 документов данные из подключенной базы получены за сколько секунд? С открытым сеансом и с закрытым? Можно в процедуре ЗагрузитьСпискиНажатие написать вместо ДополнитьДанными() следующий код:

    Скрипт = Новый COMОбъект(«MSScriptControl.ScriptControl»);

    Скрипт.language = «javascript»;

    мСек1 = Формат(Скрипт.eval(«new Date().getTime()»),«ЧГ=0»);

    ДополнитьДанными();

    мСек2 = Формат(Скрипт.eval(«new Date().getTime()»),«ЧГ=0»);

    Если
    мСек2 мСек1 <> 0 Тогда

    Сообщить(«Завершено за » + ((мСек2 мСек1) / 1000) + » сек.»);

    КонецЕсли;

    Reply
  13. ghostishe

    (12) 2400 секунд 900 документов с НЕзакрытым сеансом.

    27 секунд ———————— с закрытым, как я советовал в описании.

    2400/27=88,9

    простая фишка для увеличения скорости. ComБаза.Visible = TRUE + закрыть сеанс — во много раз быстрее, чем ComБаза.Visible = FALSE изначально.

    Это старая фишка платформы. природа ее мне непонятна =)

    Reply
  14. alexk-is

    +12 Прикольно движок сайта покривел. Вместо красного красит зеленым 🙂

    Reply
  15. ghostishe

    +14 К тому же на SQL варианте скорость может отличаться в зависимости от загруженности сервака, если на нем не только одна база крутится, т.к. SQL распределяет ресурсы неплохо. У нас 1 база УПП 200 подключений + буха + зуп на одном SQL. скорость разнится.

    Reply
  16. alexk-is

    (14) Ура цифры. Сейчас досчитает, напишу свои цифры 🙂

    Reply
  17. alexk-is

    (15) Ну, у меня ПК попроще.

    Итак, база УПП файловая 15 Гб соединение с УПП файловой.

    Обрабатывается 894 документов.

    1. НЕ закрытый сеанс — 8 612,822 сек

    2. закрытый сеанс — 110,249 сек

    3. немного оптимизированный код — 3,313 сек

    4. еще немного оптимизированный код — 0,922 сек

    Это на маленьких объемах данных, а вот на больших.

    Обрабатывается 22 489 элементов справочника.

    1. НЕ закрытый сеанс — не дождался, убил чтоб не мучалась

    2. закрытый сеанс — 2 379,947 сек

    3. немного оптимизированный код — 80,029 сек

    4. еще немного оптимизированный код — 18,77 сек

    Замечено, если в окне НЕ закрытого сеанса шурудить мышкой, то процесс пойдет быстрее

    Reply
  18. ghostishe

    (17) Я не заморачивался с подключением внешних dll-ек, как у тебя в постах

    Reply
  19. alexk-is

    (19) О каких внешних dll-ках идет речь?

    Reply
  20. ghostishe

    (20) Ну ты ссылку дал на посты, там какие-то дллки подключаются для оптимизации, я в суть не вникал, там для 7.7

    Reply
  21. alexk-is

    (21) Ах, dll-ки, так это для 7.7. Не, не, не. Здесь только ловкость рук и ни какого шаманства. dll-ки для 8.1 это к Душелову. Я dll-ки под 8-кой не использую и в данном случае их тоже не было.

    Reply
  22. andru_dv

    Спасибо за обработку. Жаль что раньше её не увидел.

    Я как раз синхронизирую две базы УТ по UID.

    Reply

Leave a Comment

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