* медленное сохранение табличных документов в формате Microsoft Excel.
* некачественное сохранение табличных документов в формате Microsoft Excel.
=================================
Суть состоит в том, что время, которое нужно 1С для сохранения, резко возрастает при увеличении объема сохраняемого документа. Если небольшие документы объемом до 1-2 тыс. строк 1С сохраняет еще за приемлемое время, то документы объемом выше 10 тыс. строк могут сохраняться несколько часов (или даже суток).
Проблема 2: Некачественное сохранение.
======================================
Штатный конвертер 1С не отличается высоким качеством. Например, конвертер не поддерживает текст в ячейках длиной более 255 символов: при сохранении более длинный текст будет усекаться. Также не поддерживаются ячейки с поворотом текста, часто ячейки с многострочным текстом имеют высоту в одну строку, часто не переносятся многострочные объединения ячеек и другое. Подробнее можно посмотреть на этой странице: http://yoksel.net.ru/ProblemyStandartnogoMxl2Xls
Данная обработка решает эти проблемы.
Скоростные характеристики.
==========================
Отчет «Анализ продаж», 18 тыс. строк: 4,46 сек.
Отчет «Анализ продаж», 78 тыс. строк: 17,23 сек.
Отчет «Анализ продаж», 184 тыс. строк: 24,44 сек.
(Для таблиц объемом больше 65536 строк сохраняется только 65536 строк — поэтому разница между временем 78 тыс. и 184 тыс. строк невелика)
Тестовая таблица 10 тыс. строк x 256 столбцов (2,5 млн. ячеек): 57,32 сек.
Преимущества программы по сравнению с другими решениями
=======================================================
Для ускорения сохранения часто используется решение, известное под названием «патч Ромикса». Решение связано с модификацией кода 1С (патчем).
Отсюда вытекают основные проблемы решения:
— Проблемы при смене релиза 1С — при изменении релиза патч может перестать работать или вообще приведет к нестабильной работе 1С (аварийные завершения и возможность потери данных).
— Потенциальная ненадежность: т.к. исходных кодов 1С в открытом доступе нет, то и нет стопроцентной уверенности в корректности произведенной модификации.
Используемая в данной обработке внешняя компонента Йоксель не производит каких-либо модификаций исполняемого кода 1С, поэтому в ней отсутствуют указанные выше проблемы.
Другая проблема патча — «все равно медленно». В случае использования табличных документов со сложным форматирование сохранение все равно производится достаточно медленно. Компонента Йоксель сохраняет таблицы со сложным форматирование быстро.
Для решения проблем некачественного сохранения табличных документов в Excel часто применяют различные обработки, которые работает с Excel по технологии OLE-Automation и либо выполняют конвертирование документов полностью самостоятельно, либо сначала конвертируют документ стандартным конвертером, а потом исправляют допущенные конвертером ошибки.
Основной недостаток подобного решения: медленно. Обработки написаны на встроенном языке 1С:Предприятия и, значит, работают медленно, т.к. программный код интерпретируется. Далее, тормоза вносит использование OLE-Automation — данная технология никогда не предназначалась для обмена большими объемами данных.
Другой недостаток: необходимость наличия Excel. В связи с ужесточением ситуации с нелицензионным ПО, предприятия часто отказываются от использования Microsoft Office и переходят на свободное программное обеспечение (OpenOffice). Поэтому Excel может и отсутствовать. Также бывают ситуации, когда наличие Excel на компьютере нежелательно — например, в случае терминального сервера.
Компонента Йоксель не требует наличия Excel, поэтому может использоваться там, где Excel отсутствует. Также Йоксель написан на компилируемом языке — поэтому работает быстро.
Установка
=========
Для установки нужно следующее:
1) Если у вас еще не установлена FormEx или 1С++ версии 2.0, скопируйте компоненту FormEx (файл FormEx.dll) в каталог с программными файлами 1С (например, в каталог C:/Program Files/1Cv77/BIN).
2) Если у вас еще не установлена компонента Йоксель, скопируйте файл «SpreadSheet.dll» в каталог с программными файлами 1С (например, в каталог C:/Program Files/1Cv77/BIN).
(если нет возможности разместить внешние компоненты в каталоге программных файлов, то можно поместить компоненты в каталог информационной базы)
3) Скопируйте файл «Быстрое сохранение mxl в xls.ert» в подкаталог «ExtForms» каталога информационной базы.
4) В «Конфигураторе» добавьте на какую-нибудь панель инструментов кнопку следующего вида:
— Объект: «Задача».
— Команда: «Задача.Выполнить».
— Подсказка и короткая подсказка: «Сохранение таблицы в Excel»
— Параметры — Формула: «ОткрытьФорму («Отчет»,,КаталогИБ () + «ExtForms/Быстрое сохранение mxl в xls.ert»)»
Использование
=============
Переключитесь на табличный документ 1С, который требуется сохранить в Excel, и нажмите на созданную в Конфигураторе кнопку. В открывшейся форме укажите, куда следует сохранить табличный документ и нажмите кнопку «Сохранить».
Вроде работает!
Но 2 вопроса
1) есть ли проверка на доступность таблицы отчета (Таб.Защита(1))?
2) не работает, когда ПФ используется с формой самого отчета
(1)
1. Проверки нет. Исправлю
2. Понятно, исправлю.
Исправлено:
1) Если таблица защищена, то сохранение в XLS отключается.
2) Добавлено сохранение таблицы, присоединенной к форме отчета. При этом контроль защиты таблицы производится аналогично пункту 1.
Скачавшим обработку до 17 марта 2008 г. 20:37 по московскому времени рекомендуется загрузить обработку повторно или взять обновленную компоненту Йоксель со страницы хотфиксов:http://yoksel.net.ru/Hotfixes
Исправлена серьезная ошибка: некоторые числовые значения могли сохраняться некорректно. Например, число “131540.75” сохранялось как “272630697.”.
Баг (фича): текст, являющийся формулой Excel при конвертировании не опознается как формула. По крайней мере OpenOffice-ом. При конвертации через OLE используется свойство Ячейка.FormulaR1C1, если текст начинается с «=», и все работает. Хочу, чтоб в Йокселе тоже работало!!! 🙂
Хотя это все-таки проблема скорее OpenOffice. Просто конвертация через мелкомягкое OLE автоматически приводит текст с ссылками в стиле R1C1 к виду A1 при необходимости, а у опена с этим проблемы…. 🙁
Скажите подалуйста, а работает ли эта программка с 1С.8?
Спасибо.
(7) Здесь:http://yoksel.net.ru/Hotfixes
можно скачать Йоксель в виде самостоятельного прилоежния (exe), которое умеет читать файлы Excel и сохранять листы из них в виде файлов mxl.
thank’s — пригодилось
Очуметь!
Реально помогла вещица.
Вещь!
Глючит. Говорит не обнаружено таблицы, хотя она есть — сформирована отчетом.
а ее регить не нужно regsvr32?
Всем заинтересовавшимся данной обработкой советую также обратить внимание на эту:http://infostart.ru/projects/3387/
Она, в принципе, тоже может использоваться для преобразования MXL->XLS, однако дополнительно еще может добавить группы строк и колонок к отчету.
Также не забывайте обновлять SpreadSheet.dll. Обновленные версии выкладываются здесь:http://yoksel.net.ru/Hotfixes
Супер! То, что надо!
Да, уж! Валялась у меня одна dll`ка, все руки не доходили полазить по интернету, разобраться как ее подключить. Хотя частенько появлялась потребность именно в таком функционале. А тут — нате вам, все готовенькое.
Спасибо !!!
Натолкнулся на проблему — сохраненную как штатными средствами 1с, так и с использованием Йокселя, таблицу, в которой более 256 колонок Excel не открывает. Пишет «Невозможно прочитать файл» и далее «В книге ххх обнаружено содержимое, которое не удалось прочитать», затем предлагает восстановить, но результат никакой (Office 2003, 2007) — в сохраненной таблице присутствует 256 колонок, а за ними — пустота.
(17) Йоксель сохраняет в формате Excel 97. Там поддерживается только 256 колонок. Чтобы Excel не ругался на файлы, созданные Йокселем из документов, содержащих больше 256 колонок, нужно взять более новую версию. В новой версии проверяется количество колонок и сохраняется только 256.
(18) Ясно. Спасибо.
А может, есть возможность добавить в Йоксель поддержку Excel 2007 (в части большего количества колонок)?
(19) Возможность-то есть, но временнЫх ресурсов нет. 🙂 Когда-нибудь, может быть.
Пока можно сохранять в mxl и с ним посылать Yoksel stand-alone, например.
(20) Такой вариант я пробовал (Yoksel stand-alone 1.1.2.0) — Excel 2007 так же сообщает «В книге ххх обнаружено содержимое, которое не удалось прочитать»…
Пока что проходит единственный вариант — это сохранение в HTML и переименование файла в xls. Excel 2007 файл принимает, но нужно перенастраивать разделители, что добавляет в схему еще один минус (первый — собственно Excel 2007, но без него уж никак в этой ситуации не обойтись)…
Будем как-то извращаться.. и ждать появления временнЫх ресурсов..)
(21) Это старая версия. Новая здесь:http://yoksel.net.ru/Hotfixes
Я имел в виду не поддержку количества столбцов. А просто отсылку контрагенту обычного mxl-файла вместе с Yoksel.exe в качестве вьюера. У mxl уже нет таких ограничений на количество колонок.
Работает! Только проблемка с сохранением на сетевые ресурсы, ( база на сервере, а на раб станцию не сохраняет)
очень помогла эта обработка при выгрузки в excel отчетов с програмно объединенными ячеками. Спасибо
Сделал на её основе отправку по почте печатной формы документа в экселевском формате, спасибо!
Работает отлично, но если сохранять на сетевые ресурсы время сохранения увеличивается с нескольких секунд до нескольких минут.
Долгое время пользовались этой обработкой, пока не появились диаграммы — она с диаграммами не работает.. Я попробовал 1cv8fv.exe от 1С, но там сетку не выводит, плюс другие ошибки формата.. Какие-то есть обходные варианты? Сохранить внешними компонентами график в файл, вставить как картинку?…
Посмотри обработку Маляева по расширению возможности графики