К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Вывод отчета в Эксель

Гость
0 - 13.05.2014 - 10:08
Нужно сделать так чтобы при выполнении отчета программно сохранялся как в таблицу так и в Эксель.


1 - 13.05.2014 - 10:09
Нужно сделать - делай!
Гость
2 - 13.05.2014 - 10:15
(0) - заплатить одноЭснику
3 - 13.05.2014 - 10:16
разрешаю...
Гость
4 - 13.05.2014 - 10:39
шутники :)
Гость
5 - 13.05.2014 - 10:54
(0) Разрешаю.
ТабличныйДокумент (SpreadsheetDocument)
Записать (Write)
Синтаксис:

Записать(<ИмяФайла>, <ТипФайлаТаблицы>)

ТипФайлаТабличногоДокумента (SpreadsheetDocumentFileType)
Значения

ANSITXT (ANSITXT)
DOCX (DOCX)
HTML (HTML)
HTML3 (HTML3)
HTML4 (HTML4)
MXL (MXL)
MXL7 (MXL7)
ODS (ODS)
PDF (PDF)
TXT (TXT)
XLS (XLS)
XLS95 (XLS95)
XLS97 (XLS97)
XLSX (XLSX)
6 - 13.05.2014 - 10:54
в 7-ке это делается одним способом
в 8-ке без СКД и Построителя отчета - другим
в 8-ке без СКД с Построителем отчета - третьим
в 8-ке с СКД - четвертым
а если бедет УФ, то еще пара способов есть...
Выбирай.
Гость
7 - 13.05.2014 - 15:06
убейте пятого - все одно он лох
Гость
8 - 13.05.2014 - 16:59
Убить всех: ТС пометил тему "v7" ;)
Поэтому;
1. Использовать метод Записать() со вторым параметром XLS, или HTM, или HTML.
2. Через запись файла екселя по OLE.
3. Через приблуды, называемые ВК
4. Через одноэсовскую приблуду "Работа с файлами": поддерживает командную строку, работает в любой винде, бесплатна (т.е. халява)
banned
9 - 14.05.2014 - 10:22
Обработка "Быстрое сохранение таблиц 1С (mxl) в формате Excel
================================================== ===========

Обработка создана для решения двух существующих проблем 1С:Предприятия:

* медленное сохранение табличных документов в формате Microsoft Excel.
* некачественное сохранение табличных документов в формате Microsoft Excel.

Проблема 1: Медленное сохранение.
=================================
Суть состоит в том, что время, которое нужно 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,
и нажмите на созданную в Конфигураторе кнопку. В открывшейся форме укажите,
куда следует сохранить табличный документ и нажмите кнопку "Сохранить".

О программе
===========
Для сохранения табличных документов 1С в формат Excel использована
внешняя компонента "Йоксель". Кроме сохранения таблиц в Excel Йоксель
обладает еще следующими возможностями:
- прямое (без наличия Excel) чтение файлов Excel и конвертирование их в формат
табличных документов 1С с сохранением форматирования;

- преобразование табличных документов в графические файлы форматов
JPEG, PNG, BMP;

- отображение табличных документов на диалоговых формах 1С:Предприятия
с возможностью построения таблиц в режиме ввода данных
нефиксированной структуры.

Сайт проекта: http://yoksel.net.ru

Для получения активного табличного документа в 1С:Предприятии использована
внешняя компонента FormEx. Компонента реализует ряд возможностей по управлению
интерфейсом 1С:Предприятия и ряд других сервисных функций.

Страница компоненты: http://dorex.ru/?projects&formex

Связаться с автором данной обработки можно по адресу: uzhast1c@gmail.com
Гость
10 - 21.05.2014 - 15:46
Еще вариант, для непрограммистов: в код отчета добавляете одну вот эту строку:

Записать("C:\1C_OUT\MyOtchet1", "TXT")

А затем открываете Excel, сохраняете чистую книгу в XLSM, запускаете запись макроса, далее ФАЙЛ-ОТКРЫТЬ, настраиваете плюшки и разделители и останавливаете запись макроса. Макрос назначаете на кнопку в XLSM-файле. И этой кнопкой каждый открываете свой отчет.

ПЛЮСЫ: работает быстро, быстрее OLE, COM, ВК и Йокселя в частности, быcтрее ADO, чтения в объект Range, чтения в массив итп.... Быстрее всего...

1 млн строк на 16 тыс. столбцов - ЛЕГКО. А форматирование можно повторить тем же макросом, просто дописав его.
Гость
11 - 21.05.2014 - 16:04
Еще в защиту своего TXT-метода реконструкции таблицы в Excel - все вышеперечисленные способы так или иначе некорректно корежат сложноформатированную табличную часть. Даже Йоксель. Для желающих - сохраните например Баланс Йокселем и удивитесь.

Да, в TXT производства 1С - используется разделитель [Tab] - табуляция. Это очень верное решение. Парсится по этому разделителю всегда без проблем.
12 - 21.05.2014 - 17:52
самое главное - сохранять в тэхатэ сложное форматирование
13 - 21.05.2014 - 18:03
10-economist > Как-то не заморачивался с сохранением таких объёмов в xls(x)... ради интереса: а MS Office за сколько такую таблицу поднимает потом, не умирает?
Гость
14 - 21.05.2014 - 18:51
Если сохраняют в xls тысячи строк, то надо срочно наводить порядок в консерватории.
Бо БД (начиная с ДБФ) придуманы именно для того, чтобы не ползать по тысячам строк, отбирая нужные данные.
Использование таблиц xls в тысячи строк аналогично авиации на конной тяге.
15 - 21.05.2014 - 19:41
14-VZ > убедить в этом фискалов иногда туго. Легче дать чем отказать. Было дело- выливал напрямик в csv несколько миллионов поводок с текстовым представлением субконто в движениях, а вот что они, болезные, потом с этим счастьем делали ХЗ,- поднять полученный файл даже не пытался
Гость
16 - 21.05.2014 - 20:05
10-economist >записывать макрос вручную? фу. я для расстановки форматов в 1с формировал скрипт на vba, а затем excel его запускал
Гость
17 - 21.05.2014 - 20:07
15-roma n > Сие "продукт" имитационной экономики. Когда кормящиеся из бюджета "частные предприниматели" имеют возможность кормить некомпетентных "специалистов".
Гость
18 - 22.05.2014 - 10:23
Чучундер - сложное форматирование легче повторить макросом в Excel на голом TXT, чем тащить его через OLE. Плюс можно сделать массу разумных упрощений.

Вот например дятлам из компании 1С было недосуг посмотреть на то, что делают юзвери с их типовыми отчетами. Глядишь, они бы получше и попроще их сверстали. Есть масса грубейших эргономических просчетов, за которое ЗАО 1С нужно поставить двойку.

К примеру, почему во всех типовых отчетах отсутствуют обязательные к пониманию "размерности", такие как ед. измерения? Масло в литрах, бочках и тоннах выглядит абс. одинаково.

А цена? Где цена??? Почему 300 тыс. бухов в РФ каждый день десятки раз делят сумму на кол-во на калькуляторе?

Почему нет кол-го учета на 90-х счетах, ведь это жутко удобно, и все знают что группы спр-в Номенклатура и Виды Н. - все без исключения юзвери создают в рамках одной размерности (или хотя бы весовой, как наиболее универсальной)?

Почему нет банальнейшего контроля уникальности субконто? Я видел много баз, и скажу что на 10 тыс. контрагентов - всегда будет 100 двойников и 50 "однофамильцев".

Все это колоссальнейшие "драйверы" роста числа ошибок.

А форма отчетов? В 90% случаев типовые отчеты юзверя сохраняют в Excel и дорабатывают, включают фильтры, меняют параметры страницы для печати итп. Знаете как выглядит самый распространенный в РФ "черновик"??? - это лист карточки счета 1С, на котором есть лишь одна колонка - сальдо конечное. А за дефолтные поля по 20 мм всех 1-сников надо выгнать садить новые леса.

roma n - Excel 2007 таблицу на 300 тыс. строк и 10 полей из TXT открывает/парсит за 10-12 секунд. Вообще производительность Excel (с формулами, автофильтрами итп) - резко падает с >100k строк. У нового LibreOffice с поддержкой вычислений формул на GPU - этой ступеньки нет.

VZ - вы давно или просто не работали в новом Excel/Calc. Во-первых, объемы "тысячи строк" для табличных процессоров легки, поскольку внутреннее представление данных в файлах XLS/ODS - аналогично продвинутым СУБД. Там есть те же индексы, триггеры, хранимые процедуры, польз. функции, кэш, система транзакций, многопользовательский конкурентный доступ и даже язык автоматизации (это я про VBA). И все это вполне работает на разумных объемах до 100K строк до 200 полей.

А такие расширения как PowerPivot - делают Excel применимым на многомилионных базах. И неважно где лежат сами исходные данные - в TSV, в СУБД (потом десятки тысяч строк для анализа подтягиваются через упомянутый PP или через ODBC) - главное что Excel позволяет динамически манипулировать этими данными безо всяких UPDATE, просто включив Автофильтр и используя Автозаполнение отфильтрованных ячеек, и в этом плане Excel не заменит ни одна СУБД.

Управление торговлей - макрос легче записать, а затем вручную подсократить, чем высматривать по F2 в Object Browser каждые нужные метод/свойство. Я, например, не заморачиваюсь запоминать vb-константы, номера цветов, имена функций, если макрорекордер мне сам их поставит как надо. Вы за ради интереса попробуйте отобразить рядом два окна - Exel и VBA в режиме записи макроса и произведите необходимые действия в листе - будет приятно удивлены скоростью трансляции их в программный код (а также мыслями, как это все улучшить). По сравнению с сидением в пофигураторе и отладчике 1С с кодом VBA и OLE - это как елей на душу.


К списку вопросов
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск




Copyright ©, Все права защищены