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

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

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

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

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

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

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

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


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