v7: Excel через OLE вылетает #693198


#0 by Aristo
Добрый день. Есть большой отчет, который на выходе заполняет книгу Excel из 7 листов, в последнюю очередь заполняется 1 лист с диаграммами. Данных много, до 1000 строк в каждом листе. Примерно в 50% случаев Excel вылетает с ошибкой и выбивает 1С. Вылетает на разных местах, на разных листах. На разных компьютерах и даже на разных копиях базы. В других 50% случаев отрабатывает до конца. В чем может быть проблема ? В какую сторону хотя бы смотреть ?
#1 by Aristo
... дальше идет заполнение листов, с 2 по 7, затем заполнение 1го листа.
#2 by dk
может ты в коде через activesheet, activecell, activebook .. а в это время пользователь играется тоже с excel
#3 by DJ Anthon
может, антивирь...
#4 by Aristo
Отрубал. Грешу что памяти не хватает, где то протечка. Потому что отрубается в основном на последних листах Пробую сейчас засейвить файл после каждого листа
#5 by Aristo
ActiveSheet,ActiveBook не используется, это можно увидеть по коду
#6 by Aristo
Сделал Книга.Save после каждого листа, теперь вылетает не в 50, а в 20% случаев. Видимо, несохраненные сделанные через OLE изменения жрут память.
#7 by aka AMIGO
а тебе обязательно весь отчет надо запихнуть в один Excel-файл?
#8 by dk
ну видимость то поставил не работает-то у тебя, когда по клаве и мышке не стучат, или у пользователя?
#9 by dk
да и Перейти ~Метка; как-то настораживает
#10 by Aristo
от видимости не зависит требование заказчика. Кроме того, ячейки связаны формулами с диаграммами, параметры которых тоже выставляются через OLE
#11 by Aristo
сорри, это последствия отладки в рабочей версии этого нет, что не мешает глючить
#12 by Aristo
и уж тем более что пугаться, если это закомментировано.
#13 by dk
хз, освобождай ненужные переменные приведи хоть текст ошибок-то --- есть рабочий отчет с 20-30 листами (правда там строк мало)
#14 by Aristo
да обычное окошко смерти (память не может быть read), excel при этом зависает
#15 by пипец
если во время заполнения листов работают какие то функции и вычисления - выкинь нафик их в предзаполнение ТЗ тоесь вычисляй и заполняй ТЗ и только потом наполняй ексель из уже имеющихся значений ЗЫ СделатьПаузу ??? это чоу /вайщефингня
#16 by dk
с DEP поиграться
#17 by Aristo
Парни, мне кажется я понял. На будущее напишу, возможно кому - то поможет. Save во временный файл несколько раз между заполнения листов и посередине большого листа в данный момент решил проблему. До этого сохранение было пустого шаблона перед началом заполнения и затем вывод на экран. Вылетало. После изменения -  при 20 запусках не вылетел. Похоже ошибка вызывается из-за переполнения кеша истории изменений. Каждое действие у нас запоминается и его можно стрелкой откатить. Видимо, построчное заполнение убивало этот буфер и выбивало 1С. Save этот буфер очищает.  Добрый, добрый майкрософт :)))
#18 by Aristo
СделатьПаузу это фича Formex, на глюки не влияет, как раз была попытка решить с помощью него. Ни холодно ни жарко. Уберу. С функциями и вычислениями так и делается. По каждому листу заполняется индексированная таблица значений (из 1С++), эта часть работает безукоризненно. Листы заполняются уже линейно из таблицы, без вычислений. Единственное что - лист при создании берется из шаблона, там есть еще ячейки которые не заполняются программно, а рассчитываются по формулам из текущих. Откуда идет глюк - уже есть гипотеза (промежуточный save спасает), она не связана с формулами ячеек и расчетом данных.
#19 by dk
странная теория тогда заполнение листа 4-8 тыс строк на 30-40 колонок вообще должно Excel в ступор вгонять, но этого не происходит кстати можно еще автокалькуляцию попробовать отключить и включить в конце, особенно если формулы сложные типа впр или другие по работе с массивами
#20 by Aristo
да это просто гипотеза, возможно это и автокалькуляция. Потому что как раз 3000 срок и 30 колонок, из которых навскидку 20 заполняется а 10 рассчитывается. Хоть там и просто сложение, но массовость может повлиять Попробую отключить.
#21 by Aristo
а как кстати отключить и включить ? если навскидку не помнишь - не отвечай, я погуглю
#22 by dk
Application.AutoCalculation = ... как-то так выключать после открытия книги
#23 by Aristo
а вот нет, поставил автокалькуляцию,  убрал save и все вылетать начало.
#24 by Torquader
Её выключить в начале, а потом в конце - включить. Тоже можно проделать и с обновлением (рисованием) - особенно печальна отработка рисования диаграмм, когда их отрисовывает отдельный процесс - он-то и теряет ссылки - просто Save вносит задержку при выполении, и кто-то успевает всё отрисовать.
#25 by DES
Попробуй отключить в реестре стек откатов
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С