Имя: Пароль:
1C
 
Исправление ошибки при экспорте в Excel (патчинг Moxel.dll)
0 romix
 
модератор
11.05.06
19:06
При попытке сохранить в Excel большой таблицы 1С "подвисает", нагружая процессор на 100%. Попытаемся исправить этот недостаток 1С 7.7.
Книга знаний: Исправление ошибки при экспорте в Excel (патчинг Moxel.dll)
1 Asmody
 
11.05.06
19:09
romix - неуемный хакер :)
2 romix
 
модератор
11.05.06
19:13
(1) Да вот думаю может в 26 релизе парочка исправлений и появится? :-)
Не знаешь куда надо в 1С письмо посылать? :-) Или они только с франчами разговаривают?
3 Advan
 
11.05.06
19:13
(2)Им Уже на 7-ку наплевать
4 Asmody
 
11.05.06
19:15
(2) hline@1c.ru
5 romix
 
модератор
11.05.06
19:18
(4) Фенькс. Они там наверное лениво нажимают кнопку Delete. :-)
6 Иде я
 
11.05.06
19:20
(5) Неа  - у них спамфильтры грамотно настроены :)
7 smaharbA
 
11.05.06
19:41
А вот с хтмл пожалуй луччий выход, открываться будет всюду и править программно даже без наличия екселя и прочего проще, да и при надобности в XML преобразовать несложно
8 romix
 
модератор
11.05.06
19:44
(7) Ну да, HTML даже можно переименовать в XLS, и он откроется как будто это файл в формате Excel.
9 romix
 
модератор
11.05.06
20:07
(4) Начал письмо писать - боюсь, не поймут, скажут: патч, кряк, ату его. :-)
Короче если кому-то надо, то у меня аська и почта в карточке доступные. А самому обращаться в 1С че-то страшно. :-)
10 Самобан
 
11.05.06
20:09
(9) а ты представься родственником президента. посмотрим, кому страшно будет ;)
11 Лямур
 
11.05.06
20:12
(9)А Волшебник не поможет. Он же с Нуралиевым знаком. Правда не знаю в каких они отношениях.
12 Скользящий
 
11.05.06
20:14
+(10) Бери выше, родственником Нуралиева.
13 Лямур
 
11.05.06
20:21
Да, интересно, фирме 1С дело говорят и очень грамотно все по пальцем разжовано, а они никакой реакции. Совсем забили.
14 Самобан
 
11.05.06
20:23
(13) зачем развивать семерку, когда даже с восьмеркой в свете стремлений майкрософта они чувствуют себя не очень уверенно?
15 romix
 
модератор
11.05.06
20:26
(11) Там надо официально обратиться в hline@1c.ru и назвать код партнера или (для конечных пользователей) код продукта. У нас вроде бы легальная 1С-ка, но все равно че-то страшно. :-) Патч поставили - вроде стало работать лучше. :-)
Книга знаний: Исправление ошибки 1С:Предприятие 7.7/8.0 - 100% загрузка процессора при ожидании блокировки
16 romix
 
модератор
11.05.06
20:28
А патч (0) - отчасти полуфабрикат, т.к. появляется проблема с отображением таблиц (т.е. надо в одной копии 1С работать, а в другой - патченной - формировать отчеты и сохранять их в Excel). :-)
17 Самобан
 
11.05.06
20:29
(15) т.е. ты не имеешь права смотреть отладчиком что там происходит? про патч ведь говорить не обязательно.
18 romix
 
модератор
11.05.06
20:30
(17) Могут еще "на всякий случай" поставить защиту от отладки. :-)
19 romix
 
модератор
11.05.06
20:31
20 Оупенсоурс
 
12.05.06
12:31
(1) - А представьте только, что может сделать наш Хакер с 7-кой, если Нуралиев сподобится откыть ее исходные тексты...
21 АЛьФ
 
модератор
12.05.06
12:55
2(0) Молодец.
Исследуя более подробно приведенное тобой место, можно сделать вывод, что с эим же место связаны тормоза в отрисовке таблицы на экране: при большом количестве строк чем ниже опускаешься, тем медленней листинг. Все из-за того, что они для получения координат ячейки считают от начала таблицы высоту всех предшедствующих строк. Сомневаюсь, что они будут это дело исправлять, т.к. там потребуется менять логику всего метода CSheetGDI::GetCellRect().
22 romix
 
модератор
21.05.06
03:38
(20) В исходных текстах легче запутаться. :-)
(21) Вот думаю, если перехватить момент начала записи в Excel
?SaveAs@CSheetDoc@@QAEHPBDW4CSheetSaveAsType@@@Z
и внутри этого вызова все вызовы Moxel!?GetRowHeight@CSheetGDI@@QAEHH@Z заменять на пустышку (которая возвращает, например, какое-то стандартное значение), то проблема таки будет решена..
23 romix
 
модератор
12.06.06
13:15
Сделал внешнюю компоненту для разруливания проблемы. Теперь 1С 7.7 сохраняет MXL->XLS за несколько секунд!
Тестовая конфигурация и исходный код приведены в архиве.

http://x-romix.narod.ru/MXL_DOCTOR.rar
24 romix
 
модератор
12.06.06
13:29
Сохранение 5000 строк в XLS - без ВК
Начало: 13:25:08
Конец: 13:25:55

Сохранение 5000 строк в XLS - с ВК
Начало: 13:26:55
Конец: 13:26:56

Т.е. 50 секунд против 1 секунды. С ростом числа строк "торможение" растет по экспоненте. ВК решает эту проблему, и позволяет нормально сохранять в Excel.
25 skunk
 
12.06.06
13:33
Ромка перестал ерундой страдать...
26 syktyk
 
12.06.06
13:40
Чую: унесут его скоро черти в одну известную фирму :)
27 romix
 
модератор
12.06.06
13:44
(+24) Обновил статью в КЗ по ссылке (0).
28 skunk
 
12.06.06
13:50
ну, прямо таки молодец
29 romix
 
модератор
12.06.06
13:53
:-)
30 skunk
 
12.06.06
13:54
больше ерундой не занимайся... делай реальные вещи... а то всяких там зам мд... кстати за вот эту тебе реальный респект передают...
31 romix
 
модератор
12.06.06
19:38
(30) Ничего не понял (про какую ерунду идет речь) но все равно спасибо... :-)
А кто-нибудь подтверждает работоспособность?
32 Vippi
 
12.06.06
19:51
(31) Подтверждаю.
Круто. Молодец.
33 Злоп
 
12.06.06
20:41
Сейчас проверим...
А как проверить работоспособность?
главное - чтоб после правки ничего "не съелось" при сохранении... способ проверить только один - сохранить по старому, сохранить по новому - и сверить.
Вопрос - сколько таких сверок сделать? будет ли правильно работать на объединенных ячейках? при "тяжелом форматировании" - много разных объединенных ячеек и их взаимное расположение... вот это, имхо, надо проверить..
соррии если бред - в настоящем прогораммировании не силен, но если в исправлении идет речь про "высоту ячейки" - то надо на них смотреть...
34 romix
 
модератор
12.06.06
20:48
(32) Спасибо.
(33) Да просто что-нибудь сохранить. Там ничего по большому счету не изменилось - я только отключаю многократный (N факториал) подсчет высоты при сохранении в Excel. Я наверное завтра еще потестю на рабочих отчетах - результат доложу...
35 Злоп
 
12.06.06
21:11
Косячит...
Ща попытаюсь отловить в какой ситуации
36 Злоп
 
12.06.06
21:25
Таблица порядка 8000 строк со "сложным" форматированием - объединенные ячейки по высоте (разное количество строк в одной ячейке) - запустил сохранение в эксель с применением патчинга - как началась третья минута - снял...
саму таблицу послал на мыло.
37 romix
 
модератор
13.06.06
08:42
(36) Посмотрел - если делать программное сохранение, то ВК срабатывает, и все ускоряет, а если через меню "Файл"-"Сохранить как", - то нет... Там идет другой вызов, который я сейчас затрудняюсь перехватить...

?OnFileSaveAs@CSheetDoc@@IAEXXZ
38 jbond
 
13.06.06
10:51
А теперь остается включить функционал этой ВК в 1С++
39 skunk
 
13.06.06
10:53
кстати не что подобное видал от Ковычек... только не надо было смотрел
40 АЛьФ
 
13.06.06
12:15
2(38) Боже упаси!!!
41 romix
 
модератор
13.06.06
12:17
Есть возможность регистрировать внешние компоненты без прописывания их в реестре.
Загрузка ВК без регистрации в реестре
42 romix
 
модератор
13.06.06
12:18
(+41) Т.е. нет необходимости создавать Одну Большую Компоненту.
43 jbond
 
13.06.06
12:19
(40) - причины?
44 romix
 
модератор
13.06.06
12:22
(43) Имхо (0) - это явный баг, который лучше отправить в 1С.
45 jbond
 
13.06.06
12:32
(44) - а они там отреагируют?
46 romix
 
модератор
13.06.06
12:35
(45) Ну если 50 человек напишут, то отреагируют я думаю :-)
47 ATI
 
13.06.06
12:37
(46)куда писать, огранизовывай флеш моб. :)
я за, то есть, поддержу.
48 skunk
 
13.06.06
12:42
(45)думаю, что нет
49 jbond
 
13.06.06
13:09
(47) - тогда уж что-нибудь более существенное запросить.
50 romix
 
модератор
13.06.06
13:30
(47) Письмо с описанием проблемы (долго сохраняется в Excel и т.п.) можно написать на линию тех. поддержки hline@1c.ru

Надо только иметь купленную 1С-ку с регистрацией (желтая карточка).

Интересно, сработает ли пробивной эффект бомбы флеш-моба..  :-)
51 Злоп
 
13.06.06
21:11
(37) Спсб.
жаль что по саве ас не перехватывает... а то я уже губу раскатал на красивую жизнь...
Программист всегда исправляет последнюю ошибку.