V83.ComConnector vs V83.Application #709475


#0 by Jenstel
Доброго времени суток. Подскажите, почему при соединении с базой 1С с помощью 'V83.ComConnector' любые операции выполняются значительно дольше, чем при подключении с помощью 'V83.Application', например даже одна строка Con1C.Документы.ПлатежноеПоручение.СоздатьДокумент; выполняется 5-6 секунд, но если подключение через 'V83.Application', то она выполняется практически моментально.
#1 by Cube
Че ты заливаешь? Коннектор на порядок (в 10 раз) быстрее работает...
#2 by shuhard
брехня
#3 by Jenstel
я в курсе, поэтому и сбит с толку вот полный код, висит на событии нажатия кнопки Подскажите, в чем может быть проблема. После нажатия на кнопку приложение "подвисает" на 5-6 секунд (кнопка в нажатом состоянии), но стоит соединиться как V83.Application  и это все происходит моментально.
#4 by acsent
может ключ ищет долго?
#5 by Jenstel
Как ускорить?
#6 by Jenstel
Сделал лог с временем каждой операции. Дольше всех выполняются:
#7 by Cube
Может в платформе дело? Какой релиз? поставь другой.
#8 by Jenstel
Еще есть разница в запуске: из компилятора Delphi тайминги как написал выше, а если запускать уже скомпилированный exe - выполнение занимает 1,5-2 секунды. С 'V83.Application' - вся операция занимает 57 миллисекунд Платформа - 8.3.4.482
#9 by Cube
Попробуй 8.3.5.
#10 by Jenstel
Изменений нет Может я не так коннектор создаю?
#11 by DmitrO
А exe компилируешь 32-битный?
#12 by Jenstel
Да хоть какой. Я первым подумал на разрядность и возможные косяки. Для чистоты эксперимента перенес исходник на виртуальную машину c WinXP и попробовал скомпилировать и запустить там. Все идентично. Куда копать, ума не приложу.
#13 by DmitrO
Ну ты не ответил на вопрос-то.. Приведенное время по ComConnector на какой разрядности приложения? И что значит на "хоть какой", если собрать exe 64-битный тоже работает?
#14 by alex007ag
вот так надо, как на 17 секунде
#15 by DmitrO
Есть подозрения, что компилятор Delphi слишком умный..
#16 by alex007ag
#17 by Jenstel
Exe собирал только 32-битный. Все описания только к 32-битной версии.
#18 by alex007ag
Как его притупить немного? :) Я импортировал библиотеку V83_TLB, может не стоило этого делать?
#19 by alex007ag
эта библиотека позволит применить ранее связывание, но только для самого коннектора, а не для полученного им соединения, там полюбому будет позднее.. так что это не повлияет никак. Я не знаю особенностей компилятора, может он зачем-то маршалит вызовы собственными силами, хотя именно комконнектору это не нужно, т.к. это InProc COM сервер. Хотя даже в этом случае что-то велика разница..
#20 by oleg_km
Импорт tlb наоборот должен только ускорить
#21 by Jenstel
что же делать тогда? Поделитесь Вашим кодом вызова СОМ-соединителя
#22 by DmitrO
сто лет в Delphi не пишу уже.. только с++ думать, читать, думаю пользователю не так критично 5-6 секунд, пусть пока так работают.. надо дождаться тех кот на Delphi пишут, здесь такие есть..
#23 by Jenstel
Я выделил только самую малую часть кода, которая доолжна выполняться. Полный код более 200 строк, да еще и циклы (синхронизация справочником между базой рабочей программы и 1С, создание документов, создание документов на их основе). Полная процедура с созданием 5 документов длиться 27 секунд, тогда как 'V83.Application' делает это за 4.
#24 by DmitrO
Или попробуй переписать через чистый IDispatch, без понтов делфёвого компилятора: вместо: PP.Записать применять: IDispatch::GetIDsOfNames IDispatch::Invoke
#25 by DmitrO
хотя врядли поможет.. тут чета другое
#26 by oleg_km
Может для Connector другой РЛС работает?
#27 by DmitrO
Кстати да, неплохая мысль, пользователь 1С тот-же для коннектора используется?
#28 by Jenstel
Для коннектора создал нового юзера (пока с полными правами, база тестовая) Но пробовал и под своим рабочим логином - результат тот же
#29 by Jenstel
А есть возможность сначала собрать текст скрипта, а потом выполнить его целиком в 1С (аналогично SQL execute), а не выполнять построчно каждое действие.
#30 by Jenstel
ап
#31 by Defender aka LINN
Выполнить, как ни ВНЕЗАПНО
#32 by Jenstel
ВНЕЗАПНО не пашет, не поддерживает метод
#33 by Jenstel
ап знающие люди, помогите плиз
#34 by DmitrO
Нет такой возможности. Выполнить работать не будет.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С