Сохранение табличного документа в *.xlsb #725358


#0 by ixilimuse
Всем доброго времени суток! Имею дело с очень объемными отчетами. Приходится бить отчет на части с помощью отборов и выгружать по частям, а потом в экселе собирать в один файл. Все потому что 1С вылетает с ошибкой о нехватки памяти, при попытке сохранить полную версию отчета в эксель. Хотя физически на сервере для этого дела 32 Гб ОЗУ. Так вот. Почитал про бинарную книгу Excel. Что она и сохраняется быстрее и весит меньше и на открытие более шустрый файл получается. Нагуглил что типа файла этого имеет константу = 50 = XLSB. Попытался сохранить так: Что интересно - сохраняет. Причем в разы быстрее обычного ТипФайлаТабличногоДокумента.XLSX Но размер такого файла чуть ли не на 3 раза больше оказался чем обычный XLSX. А должен был быть меньше. Да и открываться экселем - отказывается. Говорит формат вообще не опознанный) Кто сталкивался с подобными методами? Как решить проблему? Есть у меня в запасе идея через COM открывать экземпляр экселя, в новую книгу забивать данные из ТабДока, и самим же экселем сохранять в нужном формате. Но подозреваю это будет очень ресурсоемким методом. Да и скорее всего долгим. Но если других вариантов - не останется - буду делать так)
#1 by aka AMIGO
может, не тем Excel"ем открываешь? в 2007-м есть вот такое сохранение:
#2 by dk
чего-то ты не то курил 50 - это если записывать из Excel по COMу, а 1с xlsb вроде не умеет записывать
#3 by dk
упс к
#4 by mehfk
Результат.Записать(ПутькФайлу, 50);  Нет такого
#5 by aka AMIGO
ладно :) кстати, размерчик сохраненного файла в 5 раз меньше исходного:
#6 by mehfk
Сохранит в формат по-умолчанию - MXL
#7 by mehfk
Значения Описание: Содержит варианты форматов файлов для сохранения табличного документа. Используется для определения параметра <ТипФайлаТаблицы> метода Записать. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Возможен обмен с сервером. См. также: ТабличныйДокумент, метод Записать
#8 by aka AMIGO
Извинямси, а в 8-ке не проходит методика подсмотра макросов в Excel при выполнении какой-либо операции?.. ну, как это существует в 7-ке.
#9 by aka AMIGO
+ естественно, подсмотр на предмет копирования правильных команд
#10 by АНДР
ИМХО Из 1С выгружать форматированный текст или XML, затем подсовывать этот файл Excel'ю для конвертации. Для очистки программистской совести можно Excel'ем управлять по COM.
#11 by aka AMIGO
памяти ему не хватает..
#12 by АНДР
...сконвертироваться в формат Excel.
#13 by ixilimuse
Да, теперь я убедился что такого нет, но в глубине души - надеялся что прокатит))) А то что предопределенного типа файла - нет я понял, потому и пытался цифру подсунуть искуственно, думая что внутри этот метод таки использует какие-то DLL ки МикрософтОфиса... И то что не произошло исключения - подкрепило мои надежды. Но видимо зря)) Зря надеялся) Подозреваю так что все дороги ведут меня к COM :) XML можно было бы использовать как промежуточный этап, но боюсь с ним тоже памяти не хватит)
#14 by ixilimuse
Да-да. Именно что должен быть меньше размер)) А эксель тот) 2010й офис, из самого экселя он позволяет сохранять бинарную книгу. Проблемка все таки в отсутствии поддержки данного формата в 1С платформе.
#15 by АНДР
Есть обоснованное предположение, что результата сохранения по COM - не дождётесь.
#16 by Ndochp
А эти отчеты потом люди читают или машины? Если машины, то может с ними договориться можно? АДО вместо COM например
#17 by ixilimuse
Тоже есть такие думки потому и пытаюсь найти какую-то альтернативу) Читают к сожалению люди. Отдел актуарных расчетов получает эти файлы, проверяет на валидность и отправляют эти же эксель файлы на дисках в нац.банк.
#18 by ixilimuse
Но спасибо за мыслишку! )) Чет некая бредовенькая идейка родилась сейчас.. Может в данной ситуации имеет смысл выгружать таблицу в какой-нибудь MS Access например, и тут же запускать какой-нить простенький exe, вся суть которого сведется к выгрузке данных и Access в Excel с определенным форматом )) Изврат конечно. Но все быстрее чем цикличная передача данных в книгу экселя через COM
#19 by b_ru
Зачем .exe? Достаточно в самом Access макрос написать. Но с выгрузкой в .txt из 1С с последующим автоматическим открытием этого .txt экселем через COM и сохранением в .xlsb(x) было бы правильнее.
#20 by ixilimuse
Спасибо за рационализацию мыслей. Надо будет поэксперементировать. На сколько легко удастся сохранить в txt. Ну и на счет макроса тоже уже передумал с эксешником. Даже если не макросы то через тот же Com реализовать выгрузку в Excel)
#21 by Ndochp
Врут они все. Если у сервера 1С не хватает памяти на то, чтобы сохранить эксель файл, то у человека не хватит внимания его проверить (если только там не картинки с котиками). Единственно, по опыту, часто бывает что формат включает в себя всякую хрень в шапке типа списка фильтров, кто утвердил и тд. А проверяют все равно программы на той стороне. Вот тогда, что пересохранение текстовика, что АДО идут лесом. Можно конечно сначала выгрузить табличные данные, а потом уже экселем(COM, макрос) вставить нужные данные в шапку и подвал.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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