Вход | Регистрация
 

Excel.application плохая производительность при загрузке .xls в 1С.

Excel.application плохая производительность при загрузке .xls в 1С.
Я
   Alexandrovich
 
17.04.21 - 01:35
В общем очень долго загружается 4000 строк из *.xls или *.xlsx в 1С.

На компе стоит офис 2007, платформу 1С пробовал 8.3.14,8.3.15, 8.3.17, кстати офис тоже пробовал 2016.
Подключение происходит через внешнюю компоненту excel.application.

Размер файла 7Мб.

Железо:
Intel Xeon (Skylake, IBRS) 2.29 GHz
SSD
16Гб ОП

При загрузке файла нагрузка идет только на процессор 25%, на диск и оперативку загрузки нету.

И самое главное что на другом ПК загрузка происходит в два раза быстрее.

В чем может быть проблема?
   Garykom
 
1 - 17.04.21 - 01:37
1 антивирус и прочие фоновые
2 грузи без экселя напрямую через табдок.прочитать
   UFOdriver
 
2 - 17.04.21 - 01:38
СпособЧтенияЗначенийТабличногоДокумента.Текст
   UFOdriver
 
3 - 17.04.21 - 01:38
А уж опосля...
   Alexandrovich
 
4 - 17.04.21 - 01:48
Еще есть варианты?
   UFOdriver
 
5 - 17.04.21 - 01:51
   UFOdriver
 
6 - 17.04.21 - 01:52
Смущает ВК excel.application. Первый раз такую слышу. ВК я писал и прикручивал, но что бы майкросовтовский офис...
   UFOdriver
 
7 - 17.04.21 - 01:56
Откажемся от вражеского ПО и доверимся монополии 1С "даром" что она все метОды предоставляет!
   Aleksey
 
8 - 17.04.21 - 02:28
(4) сдредствами ексел сохранить в csv файл (это быстро) и дальше работать как с текстовым файлом (это тоже очень быстро)
   Злопчинский
 
9 - 17.04.21 - 02:37
(8) или в дбф, будет наверное еще быстрее
по крайней мере когда я на клюшках так делал - разница была в десятки раз по сравнению с экселем
   Жан Пердежон
 
10 - 17.04.21 - 03:17
(0) *.xls* уже давно можно через табличный документ читать без excel.application
   Жан Пердежон
 
11 - 17.04.21 - 03:23
а так в (0) всё не конкретно - плохо / быстро / медленно
на Xeon 2.29GHz - одно ядро на 100% грузит, а на "другом ПК" вполне может оказаться что-нибудь современное 4.2-4.7 GHz - отсюда и результат
   NorthWind
 
12 - 17.04.21 - 08:20
(6) да нет такой ВК. Это автор OLE-объект так называет, потому что не понимает чем одно отличается от другого.
   NorthWind
 
13 - 17.04.21 - 08:27
По существу - эксель это последнее, чем сейчас стоит пользоваться для таких целей. Во-первых, требуется его наличие на компе, где происходит работа. Часто разбором файлов занимаются на сервере, а на серверах офис нужен как корове седло. При этом лицензия стоит вполне конкретных денег. Во-вторых, как я недавно убедился, даже при наличии офиса нужной битности иногда бывают всякие подземные стуки, из-за которых ком-объект не работает как надо, можно потратить кучу времени на выяснение причин и с неясным результатом. Ну и в-третьих, есть куча вариантов без экселя обойтись. Табличный документ в относительно свежих 1С. Прямой разбор XLSX файла. Драйвер Jet/Access для ADO.
   GANR
 
14 - 17.04.21 - 13:12
(0) На CSV-ху заменить не вариант? Все эти Ворды и Эксели при загрузках больших объёмов - зло
   Alexandrovich
 
15 - 17.04.21 - 16:56
Это все понятно, писал обработку другой человек, почему используется ecxel.application я не знаю, но задача сейчас в том чтобы как-то ускорить процесс загрузки товаров, 5 минут идет загрузка - это не совсем удобно.
   Garykom
 
16 - 17.04.21 - 17:14
(15) Логично же что переписать обработку
И да если она написана криворуким недопрограммистом это будет сложней
Чем если нормальным и там в самом начале все данные из файлика получаются в какой то объект 1С а затем юзаются

А не так что тут же поиск/создание номенклатуры например и тут же в цикле чтение из ячеек екселя ))
   NorthWind
 
17 - 17.04.21 - 19:15
(16) на табличный документ 1С переписать не так уж трудно и в этом случае. Логика-то практически та же
   GANR
 
18 - 18.04.21 - 11:34
(15) А вы, кстати, уверены, что тормоза возникают именно из за экселя? У меня подозрение, что на самом деле надо запись в базу-приемник ускорять. Если он там у себя грузит не "дельты", а каждый раз всю базу, рекомендую выкинуть эту обработку и написать свой обмен по инструкции по подсистеме "Обмен данными" с ИТС по правилам конвертации. Проще будет КД2 для БСП 2 (старая методика), если модель сервиса - лучше КД3 для БСП 3.
   GANR
 
19 - 18.04.21 - 11:34
разумеется правила регистрации продумать
   GANR
 
20 - 18.04.21 - 11:40
(0) Замер производительности при длительной операции покажите, если можно.
   mistеr
 
21 - 18.04.21 - 15:24
>Подключение происходит через внешнюю компоненту excel.application

Это ты COM так называешь? :)

>на другом ПК загрузка происходит в два раза быстрее

Битность 1С и Excel совпадет? Если нет, там накладные расходы приличные.
   Alexandrovich
 
22 - 18.04.21 - 16:58
(21) Совпадает, 1с 32х и офис тоже 32х.

Еще есть варианты? Человек отказывается менять с DCOM на табчасть, получается мне надо менять сервак :)
   craxx
 
23 - 18.04.21 - 17:21
(22) а ты там кем?
   mistеr
 
24 - 18.04.21 - 17:54
(22) Профилировать, как уже советовали.
   GANR
 
25 - 18.04.21 - 19:19
(22) Так что замер производительности показывает? Можно ещё сходить свечку поставить, дохлую крысу к ране приложить - вдруг чума пройдёт.
   Alexandrovich
 
26 - 18.04.21 - 22:57
(25)  Какой замер производительности? Написал какая ситуация и все, нету никаких производительностей.
Файл загружается, но грузит долго, в это время сервер работает в холостую.
   Garykom
 
27 - 18.04.21 - 23:23
(26) ты программист или где?
делишь свой файл и в кол-во потоков фоновых по числу сервера грузишь
   Garykom
 
28 - 18.04.21 - 23:23
(27) *по числу ядер сервера
   acanta
 
29 - 18.04.21 - 23:29
(28) точно! А не цикл...
   Alexandrovich
 
30 - 19.04.21 - 01:15
(27)  Можно ссылку на инструкцию если существует разбор такой процедуры.
 
 Рекламное место пустует
   GANR
 
31 - 19.04.21 - 05:40
(26) Замер производительности 1С - это гуглится. Как вы себе представляете не оптимизацию без этой информации? Если запрос тормозит действия одни, запись в базу - другие, если экселевские операции - третьи.
   Bigbro
 
32 - 19.04.21 - 05:52
проблема в мегагерцах процессора, которые Эксель по ОЛЕ сжирает полностью.
   NorthWind
 
33 - 19.04.21 - 10:00
(30) у меня не так давно была похожая ситуация, правда, она была хуже - на серваке в системе просто что-то покорежилось и Excel через OLE отказался нормально работать, при том что все остальное осталось в норме, а переустановка офиса не помогла. Переписывание на табличный документ решило проблему а) полностью; б) с минимальными затратами на кодирование, потому что логика обращения к ячейкам по сути та же; в) в качестве бонуса увеличилась производительность. А там думайте, решайте.
   DGorgoN
 
34 - 19.04.21 - 10:05
(33) Я бы поспорил по производительности т.к. у экселя есть процедура копирующая область прямо в тз. Это существенно быстрее очень многих методов.
   NorthWind
 
35 - 19.04.21 - 10:06
(34) хмм... а что за процедура? И откуда эксель вообще может знать про ТЗ, это же объект 1С.
   DGorgoN
 
36 - 19.04.21 - 10:14
(35) Щас кину но в сети есть примеры. Там копирование с 1 области памяти в другую
   DGorgoN
 
37 - 19.04.21 - 10:18
ТаблицаДанных = Новый ТаблицаЗначений();
    чМаксКолонок = 30;
    Для чКол = 1 По чМаксКолонок Цикл
        ТаблицаДанных.Колонки.Добавить("Колонка"+СокрЛП(чКол));
    КонецЦикла;
    Область = Excel.Range(Excel.Cells(1,1), Excel.Cells(ФайлСтрок,ФайлКолонок));
    Данные = Область.Value.Выгрузить();

    Для Счетчик = 0 По ФайлКолонок-1 Цикл
        ТаблицаДанных.ЗагрузитьКолонку(Данные[Счетчик], Счетчик);        
    КонецЦикла;
   Kassern
 
38 - 19.04.21 - 10:40
(0) а долго это сколько? И чем не устроило типовое чтение через табдок?
   Alexandrovich
 
39 - 19.04.21 - 10:45
Кроме перехода на табличную часть, есть варианты как ускорить процесс загрузки?
   Irbis
 
40 - 19.04.21 - 10:46
(39) Почто про CSV прощёлкал?
   Kassern
 
41 - 19.04.21 - 10:48
(39) какая еще табличная часть? Вы точно программист? Табличная часть <> Табличный документ.
   Kassern
 
42 - 19.04.21 - 10:48
(39) и про "долго" тоже не отписались, может для вас 5сек это уже долго
   Alexandrovich
 
43 - 19.04.21 - 10:53
(42) 5 минут, вместо 1 минуты
   Dmitrii
 
44 - 19.04.21 - 10:58
(40) Автор разработки <> Автор этой ветки.
Автор разработки не хочет переписывать что-либо в части загрузки.
Автор ветки пытается найти волшебную кнопку "Сделать быстрее не изменяя подход к реализации".
Такой кнопки нет.
Разница в скорости, вероятнее всего, обусловлена причинами, не зависящими от платформы 1С. (Например, скорость процессора или какой-нибудь антивирус, сканирующий каждый чих с файлами excel).
Но точно это сказать невозможно, т.к. замер производительности автор ветки делать не хочет.
Ветку можно закрывать.
   Kassern
 
45 - 19.04.21 - 11:11
(44) не удивлюсь, если в там еще в цикле выполняется 4тыс запросов (по каждой позиции), а потом вопросы, "а че так долго то?!"
   Garykom
 
46 - 19.04.21 - 11:26
(45) меня больше удивляет что вайтишник с нулевыми почти знаниями еще не обзавелся синдромом самозванца
ну или скорее админ зачем то в 1С полез
причем админ херовый, который про как выжать максимум из железа не знает, особенно для 1С
   Alexandrovich
 
47 - 19.04.21 - 11:28
(46)  :)
   Garykom
 
48 - 19.04.21 - 11:31
(47) это не смешно
это страшно что в ИТ попали совершенно случайные люди, которые не обладают знаниями и опытом
но им зарплату платят и нехилую! только непонятно за что
   Kassern
 
49 - 19.04.21 - 11:32
(48) чаще бывает другая ситуация, программист свалил, остался только сисадмин, нового программиста полгода найти не могут, заставляют админа через клизму 1с учить)
   Garykom
 
50 - 19.04.21 - 11:32
(48)+ Хотя я и в медицине с подобным сталкивался
Когда хреновый терапевт перешел в УЗИсты - потому что там много платят
А как не умеет нихрена так и осталось. Ну да знает как аппарат включить и некие манипуляции провести а понять что происходит и что желчный камнями забит никак...
   Garykom
 
51 - 19.04.21 - 11:32
(49) Ну флаг им в жопу
   Kassern
 
52 - 19.04.21 - 11:33
(49) ведь для руководства, что тот компуторщик, что другой)
   Garykom
 
53 - 19.04.21 - 11:33
(52) Надо руководство спросить чем они отличаются от дирижера.
Что один руками водит что другой...
   Kassern
 
54 - 19.04.21 - 11:39
(0) В общем для ТС, дам подсказку, как ускорить загрузку. Для 4к позиций не особо важно чем ты читать будешь (оле, ком, табдок) важно как будешь обрабатывать данные. Львиную долю занимает соответствие строк экселя к данным 1ски, особенно при кривой реализации. Лучше 1 раз получить заполненную таблицу значений по данным экселя, чем по каждой строчке долбиться к базе. Получили ТЗ, запихнули ее во временную таблицу в запрос, далее соединили по ключевым полям с таблицами базы и одним запросом получили результирующую таблицу на выходе.
   Garykom
 
55 - 19.04.21 - 11:46
(54) Для ТС лучшая подсказка это нанять/обратиться к специалисту
И да вполне возможно что автор загрузки не хочет бесплатно переписывать ))
   NorthWind
 
56 - 19.04.21 - 11:53
(37) интересно, спасибо.
   GANR
 
57 - 19.04.21 - 12:01
(49) (51) Развеселили выражениями )))
(54) а здесь светлее )))
   Alexandrovich
 
58 - 19.04.21 - 18:25
(51) Мужик, за что тебя так жизнь наказала? Ты где то увидел где я представился? Программист, админ, или баба Галя уборщица - подбирай какое нравится. Вопрос не зависит от должности, пусть я буду бомжара с улицы которого что-то интересует поэтому он пришел на этот форум, пусть студент или школьник который хочет знать, научиться, но в результате такие гавн*ки как ты портят советы профессионалов, читаешь полезные советы и видишь впереди твои флаги в жопе. С твоих рекомендаций я увидел только антивирус и фоновые, а остальное всё твоё гов*но-возмущения.
   Alexandrovich
 
59 - 19.04.21 - 18:41
(54) Спасибо.
   Garikk
 
60 - 19.04.21 - 18:42
(58) Рунет - злое место, довольно известный факт в этихваших инторнетах
 
 Рекламное место пустует
   GANR
 
61 - 19.04.21 - 21:15
(58) Складывается впечатление, что Вы системный администратор или железчик некой фирмы, в которой ИТ не является основным производством. Уволился программист и сказал Вам "Вот тебе полцарства и денег на лекарства...". Угадал?
   ДедМорроз
 
62 - 19.04.21 - 21:50
Читайте весь лист сразу в массив ComSafeArray через Range.
И все,будет быстро и красиво.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.