Исправление ошибки при экспорте в Excel (патчинг Moxel.dll) #180421


#0 by romix
При попытке сохранить в Excel большой таблицы 1С "подвисает", нагружая процессор на 100%. Попытаемся исправить этот недостаток 1С 7.7.
#1 by Asmody
romix - неуемный хакер :)
#2 by romix
Да вот думаю может в 26 релизе парочка исправлений и появится? :-) Не знаешь куда надо в 1С письмо посылать? :-) Или они только с франчами разговаривают?
#3 by Advan
Им Уже на 7-ку наплевать
#4 by Asmody
hline@1c.ru
#5 by romix
Фенькс. Они там наверное лениво нажимают кнопку Delete. :-)
#6 by Иде я
Неа  - у них спамфильтры грамотно настроены :)
#7 by smaharbA
А вот с хтмл пожалуй луччий выход, открываться будет всюду и править программно даже без наличия екселя и прочего проще, да и при надобности в XML преобразовать несложно
#8 by romix
Ну да, HTML даже можно переименовать в XLS, и он откроется как будто это файл в формате Excel.
#9 by romix
Начал письмо писать - боюсь, не поймут, скажут: патч, кряк, ату его. :-) Короче если кому-то надо, то у меня аська и почта в карточке доступные. А самому обращаться в 1С че-то страшно. :-)
#10 by Самобан
а ты представься родственником президента. посмотрим, кому страшно будет ;)
#11 by Лямур
А Волшебник не поможет. Он же с Нуралиевым знаком. Правда не знаю в каких они отношениях.
#12 by Скользящий
+ Бери выше, родственником Нуралиева.
#13 by Лямур
Да, интересно, фирме 1С дело говорят и очень грамотно все по пальцем разжовано, а они никакой реакции. Совсем забили.
#14 by Самобан
зачем развивать семерку, когда даже с восьмеркой в свете стремлений майкрософта они чувствуют себя не очень уверенно?
#15 by romix
Там надо официально обратиться в hline@1c.ru и назвать код партнера или (для конечных пользователей) код продукта. У нас вроде бы легальная 1С-ка, но все равно че-то страшно. :-) Патч поставили - вроде стало работать лучше. :-)
#16 by romix
А патч - отчасти полуфабрикат, т.к. появляется проблема с отображением таблиц (т.е. надо в одной копии 1С работать, а в другой - патченной - формировать отчеты и сохранять их в Excel). :-)
#17 by Самобан
т.е. ты не имеешь права смотреть отладчиком что там происходит? про патч ведь говорить не обязательно.
#18 by romix
Могут еще "на всякий случай" поставить защиту от отладки. :-)
#19 by romix
В 8-ке тоже есть ошибка Таблицы не смотрел, щас кстати проверю :-)
#20 by Оупенсоурс
- А представьте только, что может сделать наш Хакер с 7-кой, если Нуралиев сподобится откыть ее исходные тексты...
#21 by АЛьФ
2 Молодец. Исследуя более подробно приведенное тобой место, можно сделать вывод, что с эим же место связаны тормоза в отрисовке таблицы на экране: при большом количестве строк чем ниже опускаешься, тем медленней листинг. Все из-за того, что они для получения координат ячейки считают от начала таблицы высоту всех предшедствующих строк. Сомневаюсь, что они будут это дело исправлять, т.к. там потребуется менять логику всего метода CSheetGDI::GetCellRect.
#22 by romix
В исходных текстах легче запутаться. :-) Вот думаю, если перехватить момент начала записи в Excel ?SaveAs@CSheetDoc@@QAEHPBDW4CSheetSaveAsType@@@Z и внутри этого вызова все вызовы Moxel!?GetRowHeight@CSheetGDI@@QAEHH@Z заменять на пустышку (которая возвращает, например, какое-то стандартное значение), то проблема таки будет решена..
#23 by romix
Сделал внешнюю компоненту для разруливания проблемы. Теперь 1С 7.7 сохраняет MXL->XLS за несколько секунд! Тестовая конфигурация и исходный код приведены в архиве.
#24 by romix
Сохранение 5000 строк в XLS - без ВК Начало: 13:25:08 Конец: 13:25:55 Сохранение 5000 строк в XLS - с ВК Начало: 13:26:55 Т.е. 50 секунд против 1 секунды. С ростом числа строк "торможение" растет по экспоненте. ВК решает эту проблему, и позволяет нормально сохранять в Excel.
#25 by skunk
Ромка перестал ерундой страдать...
#26 by syktyk
Чую: унесут его скоро черти в одну известную фирму :)
#27 by romix
(+24) Обновил статью в КЗ по ссылке .
#28 by skunk
ну, прямо таки молодец
#29 by romix
:-)
#30 by skunk
больше ерундой не занимайся... делай реальные вещи... а то всяких там зам мд... кстати за вот эту тебе реальный респект передают...
#31 by romix
Ничего не понял (про какую ерунду идет речь) но все равно спасибо... :-) А кто-нибудь подтверждает работоспособность?
#32 by Vippi
Подтверждаю. Круто. Молодец.
#33 by Злоп
Сейчас проверим... А как проверить работоспособность? главное - чтоб после правки ничего "не съелось" при сохранении... способ проверить только один - сохранить по старому, сохранить по новому - и сверить. Вопрос - сколько таких сверок сделать? будет ли правильно работать на объединенных ячейках? при "тяжелом форматировании" - много разных объединенных ячеек и их взаимное расположение... вот это, имхо, надо проверить.. соррии если бред - в настоящем прогораммировании не силен, но если в исправлении идет речь про "высоту ячейки" - то надо на них смотреть...
#34 by romix
Спасибо. Да просто что-нибудь сохранить. Там ничего по большому счету не изменилось - я только отключаю многократный (N факториал) подсчет высоты при сохранении в Excel. Я наверное завтра еще потестю на рабочих отчетах - результат доложу...
#35 by Злоп
Косячит... Ща попытаюсь отловить в какой ситуации
#36 by Злоп
Таблица порядка 8000 строк со "сложным" форматированием - объединенные ячейки по высоте (разное количество строк в одной ячейке) - запустил сохранение в эксель с применением патчинга - как началась третья минута - снял... саму таблицу послал на мыло.
#37 by romix
Посмотрел - если делать программное сохранение, то ВК срабатывает, и все ускоряет, а если через меню "Файл"-"Сохранить как", - то нет... Там идет другой вызов, который я сейчас затрудняюсь перехватить... ?OnFileSaveAs@CSheetDoc@@IAEXXZ
#38 by jbond
А теперь остается включить функционал этой ВК в 1С++
#39 by skunk
кстати не что подобное видал от Ковычек... только не надо было смотрел
#40 by АЛьФ
2 Боже упаси!!!
#41 by romix
Есть возможность регистрировать внешние компоненты без прописывания их в реестре.
#42 by romix
(+41) Т.е. нет необходимости создавать Одну Большую Компоненту.
#43 by jbond
- причины?
#44 by romix
Имхо - это явный баг, который лучше отправить в 1С.
#45 by jbond
- а они там отреагируют?
#46 by romix
Ну если 50 человек напишут, то отреагируют я думаю :-)
#47 by ATI
куда писать, огранизовывай флеш моб. :) я за, то есть, поддержу.
#48 by skunk
думаю, что нет
#49 by jbond
- тогда уж что-нибудь более существенное запросить.
#50 by romix
Письмо с описанием проблемы (долго сохраняется в Excel и т.п.) можно написать на линию тех. поддержки hline@1c.ru Надо только иметь купленную 1С-ку с регистрацией (желтая карточка). Интересно, сработает ли пробивной эффект бомбы флеш-моба..  :-)
#51 by Злоп
Спсб. жаль что по саве ас не перехватывает... а то я уже губу раскатал на красивую жизнь...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям