|
Медленная работа через OLE c 1С7.7
|
|||
---|---|---|---|
#18+
Cчитывание данных из 1С из другого приложения через OLE происходит медленно. К примеру, считывание 16 тыс. проводок происходит примерно за 3 минуты. Если способы ускорить обмен данными через OLE? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2007, 20:35 |
|
Медленная работа через OLE c 1С7.7
|
|||
---|---|---|---|
#18+
bmt2000Cчитывание данных из 1С из другого приложения через OLE происходит медленно. К примеру, считывание 16 тыс. проводок происходит примерно за 3 минуты. Если способы ускорить обмен данными через OLE? Транзакция ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2007, 21:25 |
|
Медленная работа через OLE c 1С7.7
|
|||
---|---|---|---|
#18+
Программист 1с bmt2000Cчитывание данных из 1С из другого приложения через OLE происходит медленно. К примеру, считывание 16 тыс. проводок происходит примерно за 3 минуты. Если способы ускорить обмен данными через OLE? Транзакция хм.. Я в 1С не особо силен, можно немного поподробнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2007, 21:40 |
|
Медленная работа через OLE c 1С7.7
|
|||
---|---|---|---|
#18+
НачатьТранзакцию(); // много-много исполняемого кода............ ЗавершитьТранзакцию(); Массовая запись ускоряется радикально, чтение данных - вряд ли. И это как раз то немногое, что через ОЛЕ не работает. Возможно, код неоптимален. Для рекомендаций слишком мало подробностей - методы оптимизации сильно зависят от особенностей базы. Но, если "в 1С не силен" - лучше ничего не трогать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2007, 05:42 |
|
Медленная работа через OLE c 1С7.7
|
|||
---|---|---|---|
#18+
поспешил.. ЗафиксироватьТранзакцию(); ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2007, 07:09 |
|
Медленная работа через OLE c 1С7.7
|
|||
---|---|---|---|
#18+
Вот код на 1С: Процедура Сформировать() КОЛИЧЕСТВО_СУБКОНТО = 3; Опер = СоздатьОбъект("Операция"); Опер.ВыбратьОперацииСПроводками(); Пока (Опер.ПолучитьПроводку() = 1) Цикл стр = Опер.Дебет.Счет; стр = Опер.Кредит.Счет; // читаем другую информацию по проводке КонецЦикла; КонецПроцедуры Этот же код который на Delphi (подключаемся через OLE): Handle1S := CreateOleObject('V77.Application'); Handle1S.Initialize(...); OleEntry := Handle1S.CreateObject('Операция'); if (OleEntry.ВыбратьОперацииСПроводками = 1) then Begin while (OleEntry.ПолучитьПроводку = 1) do Begin sCurDate := OleEntry.ДатаОперации; // читаем другую информацию по проводке end; end; На дельфи работает гораздо медленнее, и тормоза происходят как раз при обращениях к 1С-ке. Я думаю что это из-за OLE технологии. Может возможно как-то ускорить? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2007, 08:10 |
|
Медленная работа через OLE c 1С7.7
|
|||
---|---|---|---|
#18+
Быстрее будет работать запрос, в тексте которого определены все нужные в дальнейшем поля, а также условия (если реально нужен меньший объем данных чем тот , что перебирается в цикле). т.е. вместо OleEntry := Handle1S.CreateObject('Операция'); лучше OleEntry := Handle1S.CreateObject('Запрос'); OleEntry.Выполнить('................. текст запроса ...............'); Однако у 7-ки значения параметров запроса явно не устанавливаются, а берутся из контекста в момент запрос.выполнить(); Поэтому здесь надо построить такой текст запроса, чтобы значения параметров определялись в нем явно. Для простых значений это несложно, для ссылок - может быть затруднительно. Поэтому лучший вариант - организовать функцию в глобальном модуле, которой передаются значения параметров, требуемых для запроса, она делает всю обработку и возвращает результат запроса непосредственно или в таб.значений. Ее одну и вызывать из внешнего приложения. Если нельзя организовать свою процедуру в ГМ - ее можно организовать во внешней обработке. Это чуть изощреннее. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2007, 11:45 |
|
Медленная работа через OLE c 1С7.7
|
|||
---|---|---|---|
#18+
все равно много обращений получается к 1С-ке, получилось до 1.5 мин уменьшить время загрузки, но это для 16 тыс. проводок, а если взять базу где 1 млн. проводок, то загрузка будет идти слишком долго. Как-н. время обращения к 1с через OLE можно уменьшить? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2007, 18:22 |
|
Медленная работа через OLE c 1С7.7
|
|||
---|---|---|---|
#18+
bmt2000Cчитывание данных из 1С из другого приложения через OLE происходит медленно.ничего не сделаешь, всё равно будет медленно лучше наоборот в 1С вызываешь OLE объект и выгружаешь данные например в Access ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2007, 12:55 |
|
|
start [/forum/topic.php?fid=28&msg=34966978&tid=1525143]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
132ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 275ms |
total: | 488ms |
0 / 0 |