Сохранение больших таблиц 1C в XLS — проблема известная: 1С задумывается надолго, и если таблицу в 5000 строк еще реально дождаться, то больше — уже »Изя — все!». Данная обработка представляет собой »обертку» для подмены МЕДЛЕННОГО интерактивного сохранения MXL в XLS БЫСТРЫМ программным сохранением.
Решений по сохранению больших таблиц 1С в XLS разной эффективности существует достаточно. Вашему вниманию предлагается «программная обертка» для еще одного решения (не моего!), которым я с успехом пользуюсь. и вам рекомендую!
Для оценки эффективности решения дам такие цифры:
* плоские таблицы (без излишних наворотов, объединений ячеек и пр.) сохраняются очень быстро. Если взять такую таблицу порядка на 50 000 строк — то, действуя типовым образом »Файл -Сохранить как — XLS», окончания процесса вы, скорее всего, и не дождетесь. С применением предложенного решения — сохранение осуществляется порядка за 3 секунды.
* »неплоские» таблицы, с тяжелым форматированием, пересекающимися объединениями ячеек — сохраняются не так быстро — подождать все-таки придется — но вполне за приемлемое время. В качестве такой »тяжелой таблицы» возьмем отчет по партиям из типовой ТиС с большим количеством включенных группировок и разверткой по документам движения на 22 000 строк (для сравнения попробовал решение, предложенное на http://www.infostart.ru/projects/259/ — минут через сорок задачу снял), текущая обработка позволила сохранить эту »тяжелую» таблицу за 9 минут.
Тесты проводились на ПК с Атлон-1800+, 512 RAM/
Обязательно хочу отметить следующее: сохранение в XLS таблиц с тяжелым форматированием я считаю нецелесообразным — что потом в EXCELe с этой таблицей делать? К какому-либо анализу такие таблицы, как правило, непригодны — приходится их переформатировать и затраты на эту работу сопоставимы с программированием нового отчета нужного формата в 1С.
А плоские таблицы, которые удобно в EXCELe »вертеть» — сохраняются быстро — что и требовалось.
Быстрое сохранение в XLS обеспечивается решением, реализованным здесь: http://www.kb.mista.ru/article.php?id=219 — внизу страницы приведена ссылка на внешнюю компоненту, которая необходима для работы обработки.
Переписка с разработчиком позволила уточнить — данное решение не работает, если сохранение таблицы 1С осуществляется через стандартный диалог сохранения файла, т.е. сохранение таблицы следует производить программным методом Таблица.Записать(…) — что данная обработка и производит: 1. перехватывает с экрана таблицу с данными, спрашивает у пользователя папку для сохранения файла и производит программную запись файла.
Выложить данную »программулину» сподвигло обсуждение на //infostart.ru/forum/read.php?25,873 — не все еще знают про замечательную разработку romix»a
Для использования программулины необходимо наличие ВК FormEX, которую можно взять здесь: http://www.dorex.pro/?projects&formex&download
Порядок установки и работы:
- установить необходимые ВК;
- установить данную обработку;
- повесить на панель инструментов кнопку типа »Сохранить в XLS»
Все готово. Теперь, когда в 1С открыта таблица — жмем эту кнопку и ОК!
Иллюстрация — см.картинки.
Обработка — бесплатная, полностью функциональная.
Данная обработка эксплуатирует идею доступа к содержимому любой печ.формы извне (без изменения программного кода формирования таблицы), изложенную здесь: http://www.infostart.ru/projects/316/
Вторым файлом выложена ВК MXL_DOCTOR.DLL, необходимая для работы программы. Инструкции — внутри архива.
Как всегда: если понравилось/пригодилось — плюсуем рейтинги и оставляем комменты!!!
Проблема известная и весьма неприятная, особенно когда срочно прайс клиенту нужен, а в нем позиций тысяч 5 -10.
Долбался тоже. Просто в код функции Сформировать после ИсхТаблица.Показать добавляю, например
/b/ ИсхТаблица.Записать(«C:price.xls», 1); /b/
Есть отчет и постоянно обновляемый прайс. На 5-10 тыс. наименований прайса работает влет..
Если просто написать ИсхТаблица.Записать(«C:price.xls», 1); — это проблемы не решит, простой плоский прайс позиций на тысч 5 будет сохраняться несколько минут, согласен?
Сейчас проверю на большом прайсе — канцтовары около 25 тыс. строк.
Формируется долго — минут 5.
Пытаемся сохранить. Упс, попадос! Загруз процессора 100%. Висяк!!!
Да, проблема есть.
Пробуем MXLtoXLS — рулит однако. Молодца Che. На тебе плюсик к рейтингу.
Я думаю, что 25000 строк ты бы дождался в лучшем случае к утру 😉 … и то не факт…
У меня например так:
— прайс порядка 5000 строк
* родное 1С сохранение — 27 сек
* romix сохранение — 1.2 сек
— прайс порядка 9000 строк
* родное 1С сохранение — 12 мин (беспредел)
* romix сохранение — 1.8 сек
Комментарии излишни.
Наши аплодисменты romixу!
Используем MXLtoXLS — прайс 25 тыс строк , сохранение 9 сек., объем файла 3,5 Mb. — круто!
Наши аплодисменты romixу!!!
И тебе Che — спасибо!
Спасибо Che!!!!!!
«…..(для сравнения попробовал решение, предложенное наhttp://www.infostart.ru/projects/?id=259 — минут через сорок задачу снял),…..»
==========
Не может такого быть. Только что проверил — 25000 строк — 2 минуты максимум. И без ВК.
Шаман, однако?
Я, конечно, еще разок вечером дома запущу для очистки совести… (мож я там клавой че-нить сделал — он в аут и ушло..?)
А ты на какой тренировался? На «плоской» — возьми ведомость по партиям — поврубай фирма, поставщик,номенклатура, партия, документы движения — сформируй порядка 20000 строк и попробуй. Результат тож интересен…
Именно на ведомости по партиям и тренировался. Да и значения это особого для моей обработки не имеет. У меня есть доработанная версия, которая может сохранять более 65536 строк (переносит на другой лист). Пож сообщи результат — на каком именно этапе тормозит? Там сперва идет удаление расшифровки (внизу бежит счетчик), затем разбивка таблицы на куски с использованием SendKeys (это когда все мелькает) и затем сборка исходного XLS.
Вот как раз интересно — как у тебя реализована разбивка на куски в случае «тяжелого» объединения ячеек?
При регистрации FormEX «Неверная попытка доступа к адресу памяти».
Какого рожна ей надо?
Винда 2003, 1С 7,7 релиз 25.
1. Возьми свежий формекс
2. админные права
3. прочее…??
У меня на парке из 20 машин — все ок.
В принципе моно связаться с автором — он отвечает и реагирует оперативно, есои это косяк формекса — думаю поправит…
Взял две версии formex.zip версия 2.0.2.0 и formex_t.zip версия 2.0.5.0#7 (в разработке). Обе ведут себя одинаково. На своем компе я естественно админ.
По-моему это я начинаю притормаживать. По regsvr32 ее как оказалось не надо регить. Формирую отчет, вызывается форма обработки (естественно по кнопке, как книга пишет), а раб. каталоге пусто…
Не знаю из каких хыров (пробовал туеву хучу вариантов), но ЗАРАБОТАЛО!
Работает действительно весьма шустренько.
Спасибо автору.
Ну вот, по-моему, я эту игрушку сламал…
Довольно сложная таблица исходная в формате 1С — 8,9МБайт. Сохранение около 11 минут. Но это фиг с ним — ведь раньше комп вообще провисал и осохранении этого отчета пришлось забыть. А вот при открытии в экселе выдает «Невозможно добавить еще один формат» (бред какой-то !!!) ну и естественно не открыват сволочь (размер в экселе 2,85 МБайт). вот такие пироги…
Ошибочка: в предыдущем сообщении размер выходного файла в формате экселя 3.87 МБайт. 2.85 то как раз все нормально (кстати тоже не детский отчетик).
Для тех, у кого возникнет подобная ситуация. При выдаче сообщения «Невозможно добавить еще один формат» (эксель приоткрытии конвернутого файла) придави углом системного блока клаву <Enter> до исчезновения этого матюка. После чего файл загрузился как миленький, а при сохранении в формате экселя от офиса ХР даже на 1 МБайт уменьшился.
Вывод: обработка ОТЛИЧНАЯ. Выламать ей руки так и не удалось, хотя, видит бог, я старался. Более сложного отчета, чем тот которым издевался на обработкой придумать не могу.
А че там она гутарит относительно платной версии, дополнительных возможностях? И зачем над текстом так поиздевался? Дело в том, что пришлось маненько его подправить — у меня ДЛЛки сидят по пути КаталогИБ()+»dllFormex.dll», а в обработке этот путь неизвестен.
Ну если путь сумел поправить, то и доп.возможности в виде
> отключено открытие Excel»я после сохранения файла и возможность задания произвольного имени файла
для тебя не проблема будет.
А платная версия — нормальный код и эти доп.возможности.
Цена — минимальная.
Кстати, сколько строк у тебя в отчете — все вошло в эксель? типа 65535 строк…?
Возможно это было это
> Невозможно добавить пользовательский числовой формат. Количество пользовательских числовых форматов превышает допустимое количество. Следует удалить один или несколько существующих пользовательских числовых форматов, чтобы добавить новые.
???
Если так — м.б. имеет смысл попробовать в 1С числа выводить безо всякого форматирования (разделители разрядов)…???
Не зря же выдает сообщение — где-то в результате м.б. не так затянуто…???
Строк в отчете не так и много в — чуть более 15000, но таблица очень разляпана в ширину (много столбцов). А относительно форматов, то действительно их дофига — строк 4 вида, из 23 столбцов более половины числовые и естественно для каждого свой формат. Пожалуй ты прав — все дело в большом количестве форматирований, но ничего главное, что она вертится в смысле работает.
Пока писал, закончилась обработка по твоим подсказкам. Усе нормалек. Что сделал: вместо форматирования ЧтоТо #N012.3 применил Окр(ЧтоТо, 3,1) без форматирования — все заработало аки зверь.
Чувствую, ты просто ташшшишшшсяяяяяяяяяяяя…………
Не то слово — я просто в шорохе от обработки! Вещь рулезная. Щас добавлю выбор имени файла и будет вообще все песцово.
Я фигею… Чувак написал примитивную оболочку под две готовые внешние компоненты (бесплатные, причем) и трясет за нее бабки. А больше всего поражают средства защиты от модификации кода!
Я с тебя бабки стряс? Обработка бесплатная.
Не устраивает — не пользуй.
Что не нравится?
Я фигею… Видимо таких именно примитивных оболочек по сети валяется штук двадцать? Еще ссылку кто бы дал?
>ssp_
>Я фигею… Чувак написал примитивную оболочку под две готовые внешние компоненты (бесплатные, причем) и трясет за нее бабки. А больше всего поражают средства защиты от модификации кода!
Начну с конца. Это в смысле «шока» от средства защиты. Да если бы автор всеръез захотел срубить бабки будь спок — защита была б куда серъезней. А относительно готовых компонентов… Так ведь до него почему-то никому эта идея не шибанула в голову. И между прочим, мы платим строителю за постройку курятника и не обвинчем его в том, что кирпич не он сам сделал.
Бесплатная раздача «коммерческой» версии: только сегодня!
http://infostart.ru/forum/read.php?31,1164,ref=174
Подробности — здесь:
Спасибо!
Одной проблемой стало меньше.
Однако хотелось бы снять ограничение в 65535 строк.
Про 65535 — это наверное в вопосы по Экселю, а не по 1С… 😉
25000 просмотров в партнерской программе.
http://infostart.ru/forum/read.php?31,1675,ref=174
Обработка выложена в свободный доступ, подробности здесь:
Выслал запрос, пока не увижу как сделана — нечего комментить, вдруг сохранение без картинок или без оформления (типа через ADO или посредством csv). Если же сохраняется все — тогда хочу увидеть и большой респект автору.
В описании разработки читай — там ссылки даны, где можно первоисточник получить/изучить
Здравствуйте! Очень заинтересовала ваша програмка по выгрузке отчетов в эксель. Вопрос собственно не по ней. при попытке запустить обработку выдает ошибку
Ошибка при создании объекта из компоненты D:игорьсайтКитmxl_doctor.dll (отсутствует CLSID)
Ошибка при создании объекта из компоненты D:игорьсайтКитExtFormsmxl_doctor.dll (отсутствует CLSID)
Хотя сама компонента присутствует.. Чего я не сделал??
Все разобрался1 Прикраснейшая програ! Прайс который сам создавался 7 минут на 20280 строк выгрузился за 12,7 секунды!!!!! Обалдеть!!! Стандартным способом Сохранить как.. на это уходило часов 10-11!!! Класс! Тест проходил на машине — 2 x Intel Xeon 3,2 Ггц DDR2 4 Гига….
IgorB: Спасибо за приведенные данные.
За программу — основаные спасибы автору ВК — romix’у — живет на Мисте и еще распространяет ряд полезных фич…
Забавная вещь.
Единственная, которая убедила с формэкса 1.7.чего-то там от 2003 года перейти на более современную версию…
+1, однозначно!
Спасибо, коллеха!
Спасиб! Как раз в случае с моментальным формированием и сохранением прайса (нынче — 28 тыщ) пригодилось прям не сказать как! Менеджеры тащщаться, коммерс — прется!
+1, стопудово!
+1 Вот и мы выросли и отчеты стали большими 😉
на глаз 14 000 строк сохранило за секнд 15
новая версия ВК позволяет без всяких ухищрений делать сохранение больших файлов интерактивно через стандартный пункт меню.
Да, действительно 10.10.2006 «компонента перехватывает и случай записи из меню «Сохранить как».»
Так что, Che, теперь твоя обработка неактуальна…
угум… свое дело сделала…
посмотрим, будут ли ее качать после 10.10.06… 😉
Я недавно дополнил разработку (научился как поставить перехват).
http://kb.mista.ru/article.php?id=219
Теперь перехватывает случай и программного, и ручного сохранения.
И еще позволяет HTML чистить/снабжать заголовком CSS (при желании).
2 romix:
У меня падает 1С при инициализации глобального модуля:
//—————
Если ЗагрузитьВнешнююКомпоненту(«1CRtInf.dll») = 1 Тогда
Норм_Компонента = СоздатьОбъект(«AddIn.DBExtension»);
КонецЕсли;
Если ЗагрузитьВнешнююКомпоненту(«videoAdd.dll») = 1 Тогда
Видео_Компонента = СоздатьОбъект(«AddIn.1C:VideoCourse»);
КонецЕсли;
Если ЗагрузитьВнешнююКомпоненту(КаталогИБ()+»1cpp.dll»)<>1 Тогда
Сообщить(«1cpp Не загружена!»,»!»);
КонецЕсли;
Если ЗагрузитьВнешнююКомпоненту(КаталогИБ()+»mxl_doctor.dll»)=1 Тогда
mxl_doctor=СоздатьОбъект(«AddIn.mxl_doctor»);
mxl_doctor.ВылечитьMXL();
КонецЕсли;
Я что-то не так делаю?
P.S. Может свою ветку здесь сделаешь?
Пройдись отладчиком — на чем именно падает — возможно на 1С++ — тогда смотри формекс и 1с++
Может падать если не 25 релиз (т.к. у меня жестко прописан адрес). Там написано.
Я у себя на работе поставил вот этот вариант:
http://kb.mista.ru/article.php?id=277
Он не требует ВК (работает как патч), и удобен при административной установке 1с (когда папка BIN расшарена по сети).
Сорри забыл зарегиться.
Релиз 25-й
Тут вот какая штука: падает только в том случае, если терминальный пользователь-НЕадмин загружается!
А если это терминальный админ — то всё ОК и если пользователи просто (не терминально) загружаются, то всё тоже пучком! Что за хрень такая?
Убираю строки, где грузится компонента — всё нормально, так что дело не в 1с++ и формекс
На мисте завёл топик на эту тему:http://www.forum.mista.ru/topic.php?id=221326
поставил обработку, но вот беда — только 1 раз выгрузку делает, если повторно нажимаю выгрузку, то после выбора каталога 1С вылетает полностью.1С релиз 25, dll-ка от 10.10. В чем фишка?
У меня тоже dll-rf от 10.10 вылетает…
так что
1. взять старую версию ВК (у меня есть, пока ее юзаю)
2. по ссылке — выйти на историю и там есть вроде от 13.10 версия — она вроде ок…
3. потормошить автора romix’a
Меня что-то никто не тормошит. Если что стучитесь 217-099-805
У меня на работе все ОК.
А на мое имя никаких ссылок 🙁
Я конечно не претендую, но всеже…
Ковычки — это вы про что?
А все про тоже…
Идею ромиксу кто дал ?
А вот не знаю.
Что знал (откула сам ВК взял) — туда ссылку в ридми привел.
Если в ВК есть ваша заслуга: озвучьтесь… 😉
Че, вот какая фигня: при повторном вызове обработки путь к каталогу сохранения появляется из последнего выбора и если просто жму «Выбрать» — вылет 1С, если же щелкну по окошку выбора папки — все ОК. (Правда, перед этим я ввожу имя файла. Но это простой ввод строкового значения и не должон влиять).
> (Правда, перед этим я ввожу имя файла. Но это простой ввод строкового значения и не должон влиять)
ниче не понял.. куда ты там можешь вводить имя файла? у тебя окно (режим) выбора паки или сохранения файла?
Перед выводом окна выбора папки я вывожу диалог ввода имени файла.
хм… т.е. ты переделал — там можно стандартно спросить выбор папки с вводом имени файла…
у меня все ок. не падает.. погонял по всякому.
Может у меня не та версия. А давай я тебе свой вариант скину в личку. Попробуй так: когда появится окно выбора каталога, ничего не делай, а сразу жми клаву «Выбрать».
Ок. проверю
Че, все ОК. Это я перемудрил с библиотеками — дома на копии как не изголялся, не смог ей (обработке) выкрутить руки. Вот, действительно, дай дураку хрустальный х, так он и х разобъет и руки порежет. Обращение ко всем людям доброй воли: не увлекайтесь подключением ВК, будет бодяга как у меня.
Спасибо, Че.
Зы: у АЛьФа действительно в тестовой ВК уже есть контроль на повторную загрузку — он мне ее выслал. АЛьФу тоже большой сэнкс.
в терминале 1с вылетает на 21 релизе, локально с 25 работает, вечером накачу 25 на терминал, проверю в релизе ли дело..
Ошибка приложения 1cv7s.exe, версия 7.70.0.21, модуль mxl_doctor.dll, версия 0.0.0.0, адрес 0x00012ee4.
и главный вопрос — что делать с сообщением в екселе «добавить еще один формат невозможно»?
по поводу «добавить формат невозможно» — иными словами как научить 1с сохранять экселевский файл не версией 5.0/7.0 а сразу в текущую версию офиса, хр или 2003. как?!
При заполнении таблицы избегай форматирования <Что-То #Ч12.2>, замени на Окр(Что-То, 2.1).
Ошибочка, надо Окр(Что-То, 2, 1).
А сохранение в текущую версию офиса — это наверное к Нуралиеву.
переписал все на Окр(..), не спасло, все равно ругается, и ок жать утомительно, хотя пересохранение потом в текущую версию офиса устраняет проблему..
В описании разработки вроде есть ссылки…
Патчинг сохранения работает (сделан) для 25 ядра (на 26 тоже нормально).
По невозможно добавить еще один формат — вынести все форматирование из таблицы в код — это эксель ругается, не хватает ему «ресурсов».
По остальное — уже ответили.
Обработка — Супер, сильно упращает жизнь! Правда по началу пришлось помучаться с ВК, но автор обр-ки в очередной раз меня выручил! Огромное спасибо !!!!!
Пригодилось.
+1
Жаль только, что обработка не ищет внешние компонеты в своём каталоге
я думаю, для такого спеца как ты — это труда не составит дописать…
😉
Плохо, то, что зачем так мутить-то с кодом! 🙂
Минимальная защита реализованной идеи.
спасибо.
штука хорошая экномит кучку времени
и заметьте — безвазмезна!!!!!!
использую plugin_mxl_doctor.dll 46080 16.10.2006
первый раз сохранил записалось ок
2 попытка записи вывалило 1С в аут без вопросов.
нужен все таки mxl_doctor.dll?
Восстановил индексы.
Снова проверяю: Удалил сформированный файл t-20070406-163452.XLS
Открываю файл на 4900 строк жму кнопку. Опять 1С закрылась без вопросов.
щас проверю с mxl_doctor.dll
Ответы на 2 нижних поста даны в личной переписке.
Вероятнее всего — конфликт разных версий между 1С++ (скорее всего установленной у вопрошающего) и ВК Formex (используемой в данной разработке).
пытался сохранить отчет в 47000 строк сохранял 37 минут а потом при попытке открыть ексель ругнулся на то что неправильный формат файла 🙁 -1
сохранил отчет по партиям со сложным форматированием на 47480 строк.
сохранял порядка 40 м.
открыл успешно.
если эксель ругнулся на неправильный формат — что сказал дословно?
дословно сказал «Неправильный формат файла» версия екселя — 2003
На рис.5 специально написано «сохренен за » ? 🙂
нет, не специально.
живые данные.
Испортить что ли Чебуратору рейтинг? 😉
Есть у меня 100 лет назад писанная (не мной), спокойно сохраняет в любые ёксели, только сейчас на 2003-ем проверил
давай, давай! Затестим!
Конверотор Натальн не подсовывать!
>давай, давай! Затестим!
http://infostart.ru/forum/read.php?25,4076,7957,page=8,ref=1329#msg-7957
тестите на здоровье! В копилке опыта, прикрепленный файл
При попытке использовать обработку второй раз 1С вываливается безо всяких предупреждений.
ОБИДНО!!!
Было похожее у одного из пробовавших:
— проверяйте версии 1С++ и FORMEX — возьмите свежие версии.
— если используете набор плагинов от romix’а — смотрите внимательно, использовать подгрузку ВК MX_Doctor.dll нет необходимости.
..возьмите чистую любую конфигурацию, в которой не используются ВК, возьмитте «чистое» ядро 1С и попробуйте — все должно сработать…
..не получится — стучитесь мне на почту.
1С: Предприятие (сетевая) — версия 7.70.025
Конфигурация: Бухгалтерский учет, редакция 4,5 — версия 7.70.484
Версия FORMEX 2.0.2.0
плагины romix’a не используются
На чистом ядре и чистой конфигурации история та же
Обновите версию Formex с сайта http://www.dorex.ru
У вас — старая версия, с новой версией будет все ОК.
С версией Formex 2.0.5.0 результат тот же