Гость
Форумы / [игнор отключен] [закрыт для гостей] / Медленная работа через OLE c 1С7.7 / 9 сообщений из 9, страница 1 из 1
26.11.2007, 20:35
    #34966509
bmt2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через OLE c 1С7.7
Cчитывание данных из 1С из другого приложения через OLE происходит медленно. К примеру, считывание 16 тыс. проводок происходит примерно за 3 минуты. Если способы ускорить обмен данными через OLE?
...
Рейтинг: 0 / 0
26.11.2007, 21:25
    #34966561
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через OLE c 1С7.7
bmt2000Cчитывание данных из 1С из другого приложения через OLE происходит медленно. К примеру, считывание 16 тыс. проводок происходит примерно за 3 минуты. Если способы ускорить обмен данными через OLE?
Транзакция
...
Рейтинг: 0 / 0
26.11.2007, 21:40
    #34966578
bmt2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через OLE c 1С7.7
Программист 1с bmt2000Cчитывание данных из 1С из другого приложения через OLE происходит медленно. К примеру, считывание 16 тыс. проводок происходит примерно за 3 минуты. Если способы ускорить обмен данными через OLE?
Транзакция
хм..
Я в 1С не особо силен, можно немного поподробнее?
...
Рейтинг: 0 / 0
27.11.2007, 05:42
    #34966889
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через OLE c 1С7.7
НачатьТранзакцию();

// много-много исполняемого кода............

ЗавершитьТранзакцию();

Массовая запись ускоряется радикально, чтение данных - вряд ли.

И это как раз то немногое, что через ОЛЕ не работает.
Возможно, код неоптимален.
Для рекомендаций слишком мало подробностей - методы оптимизации сильно зависят от особенностей базы.
Но, если "в 1С не силен" - лучше ничего не трогать.
...
Рейтинг: 0 / 0
27.11.2007, 07:09
    #34966930
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через OLE c 1С7.7
поспешил..

ЗафиксироватьТранзакцию();
...
Рейтинг: 0 / 0
27.11.2007, 08:10
    #34966978
bmt2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через OLE c 1С7.7
Вот код на 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 технологии. Может возможно как-то ускорить?
...
Рейтинг: 0 / 0
27.11.2007, 11:45
    #34967526
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через OLE c 1С7.7
Быстрее будет работать запрос, в тексте которого определены все нужные в дальнейшем поля, а также условия (если реально нужен меньший объем данных чем тот , что перебирается в цикле).
т.е. вместо
OleEntry := Handle1S.CreateObject('Операция');
лучше
OleEntry := Handle1S.CreateObject('Запрос');
OleEntry.Выполнить('................. текст запроса ...............');

Однако у 7-ки значения параметров запроса явно не устанавливаются, а берутся из контекста в момент запрос.выполнить();
Поэтому здесь надо построить такой текст запроса, чтобы значения параметров определялись в нем явно.
Для простых значений это несложно, для ссылок - может быть затруднительно.
Поэтому лучший вариант - организовать функцию в глобальном модуле, которой передаются значения параметров, требуемых для запроса, она делает всю обработку и возвращает результат запроса непосредственно или в таб.значений. Ее одну и вызывать из внешнего приложения.
Если нельзя организовать свою процедуру в ГМ - ее можно организовать во внешней обработке. Это чуть изощреннее.
...
Рейтинг: 0 / 0
27.11.2007, 18:22
    #34969682
bmt2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через OLE c 1С7.7
все равно много обращений получается к 1С-ке, получилось до 1.5 мин уменьшить время загрузки, но это для 16 тыс. проводок, а если взять базу где 1 млн. проводок, то загрузка будет идти слишком долго. Как-н. время обращения к 1с через OLE можно уменьшить?
...
Рейтинг: 0 / 0
30.11.2007, 12:55
    #34977785
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленная работа через OLE c 1С7.7
bmt2000Cчитывание данных из 1С из другого приложения через OLE происходит медленно.ничего не сделаешь, всё равно будет медленно
лучше наоборот
в 1С вызываешь OLE объект и выгружаешь данные

например в Access
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Медленная работа через OLE c 1С7.7 / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]