-
14.01.2011, 08:58
#1
Ошибка экспорта табличного документа
Доброго времени суток!!!!
Проблема следующая, хочу сохранять счета в формате Excel, но в результате выдает ошибку «Ошибка экспорта табличного документа.Документ Excel 97 не может содержать более 256 колонок и более 65536 строк» Платформа 1С:Предприятие 8.2 (8.2.10.82).
Скрин ошибки 123.jpgПомогите пожалуйста, заранее спасибо!!!!
-
07.05.2020, 17:30
#2

Гость форума
Re: Ошибка экспорта табличного документа
Экспорт через excel 2007)
Лучше поздно чем никогда
Содержание
- Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download
- [MXL to XLS]
- Почему не получается использовать ТабличныйДокумент для работы с Excel?
- Проблема при сохранении табличного документа в файл xlsx
- Проблема при загрузке табличного документа из файла xlsx
- Ньюансы (различия) чтения методом OLE и ТабДок
- Проблема при выводе из 1С в Excel
- Почему не получается использовать ТабличныйДокумент для работы с Excel?
- Проблема при сохранении табличного документа в файл xlsx
- Проблема при загрузке табличного документа из файла xlsx
- Ньюансы (различия) чтения методом OLE и ТабДок
Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download

[MXL to XLS]
Решаем две существующие проблемы 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, и нажмите на созданную в Конфигураторе кнопку. В открывшейся форме укажите, куда следует сохранить табличный документ и нажмите кнопку «Сохранить».
Источник
Почему не получается использовать ТабличныйДокумент для работы с Excel?

Одним из полезных нововведений на платформе 8.3.6 стала возможность возможность импорта содержимого из файлов в форматах XLS (Microsoft Excel 97), Microsoft Office OpenXML (Microsoft Excel 2007- 2010) и ODS (OpenDocument) в табличный документ.
На платформе 8.3.10 появилась возможность считывания данных с отдельных листов книги EXCEL.
Данная возможность доступна как в интерактивном режиме, так и из встроенного языка.
Реализована поддержка вставки из буфера обмена областей, скопированных из Microsoft Excel и OpenOffice Calc.
Реализация импорта из EXCEL на встроенном языке стала возможна в результате нововведений в функционал объекта «ТабличныйДокумент»:
Для метода «Прочитать» объекта «ТабличныйДокумент» реализован параметр «СпособЧтенияЗначений» (Новое системное перечисление «СпособЧтенияЗначенийТабличногоДокумента»). (с) Загрузка из EXCEL
Тип: СпособЧтенияЗначенийТабличногоДокумента.
Определяет, каким образом нужно интерпретировать значения, считываемые из исходного документа XLS, XLSX или ODS.
При загрузке табличного документа из формата Excel 97 — 2010 и OpenOffice Calc, в случае если в ячейке исходного документа содержалось значение типа Дата или Число, то в ячейку результирующего табличного документа это значение попадает в зависимости от значения этого параметра.
Значение по умолчанию: Текст.
Так вот. И в excel и в mxl ячейка может содержать значение и иметь формат представления. Проблема в том, что СКД при выводе значений в табличный документ выводит только представление…
Проблема при сохранении табличного документа в файл xlsx
Если в ячейке будет код номенклатуры с лидирующими нулями — при экспорте в эксель значение ячейки их обрежет,
например было «00246100» стало «246100»:

При этом в представлении всё верно…
И да, если переименовать xlsx в zip и открыть архиватором sheet1.xml — то там будет именно «246100».
Конечно, есть ещё вариант ручной установки значения ячейки таб. документа, и он работает.
На клиенте…
Но #НаСервере установка свойства СодержитЗначение приводит к очистке. И в справке про это ничего нет… 
Для регламентных не годится.
Проблема при загрузке табличного документа из файла xlsx
При загрузке файла экселя, сформированного в других языках программирования, содержимое может вообще не прочитаться (если верить гуглу при поиске заголовков этого файла выдаёт Open XML SDK 2.5),
например:
В режиме предприятия (меню Файл — Открыть) это пустой таб. документ
с 1026 столбца… 
Хотя в экселе файл открывается прекрасно: 
Ньюансы (различия) чтения методом OLE и ТабДок
Часть кода для сравнения этих методов:
Я конечно буду рад ошибаться, но, по-моему, нативные средства платформы по работе с Excel совсем далекоооооо не всегда применимы на практике.
Источник
Проблема при выводе из 1С в Excel
Добрый день!
Предыстория: необходимо было сделать так, чтобы из 1С формировался отчет Excel на нескольких листах с сохранением форматирования (главным образом, группировок) табличного документа. Стандартный метод Записать табличного документа создает файл с 1 листом. Поэтому было сделано так: сначала командой Записать создавался файл Excel с необходимым листом, потом лист переносился в нужную книгу:
ПостроительОтчета.Вывести(ТабДок);
ТабДок.Записать(ИмяВременныхФайлов, ТипФайлаТабличногоДокумента.XLS97);
Ексель.Workbooks(ИмяКнигиБуфера).Sheets(ИмяЛистаБуфера).Copy(Ексель.Workbooks(ИмяКнигиОтчета).Sheets(ТекущееИмяЛистаШаблонаЭксель));
И это дело прекрасно работает до тех пор пока не появляется еще один процесс Excel: либо запущенный интерактивно, либо в случае одновременного формирования из 2-х сеансов 1С на одном компьютере отчетов в Excel.
Собственно проблема: при наличии 2-ух одновременно запущенных экселей стока
не выполняется, выводится ошибка:
Ошибка при вызове метода контекста (Workbooks): Произошла исключительная ситуация (0x8002000b)
Подскажите, что можно сделать
Есть правда другой вариант сохранения данных вместе с форматированием (группировками) — выделить все и скопировать. Но данный вариант реализовать не удалось — бала другая ошибка «Ошибка при вызове метода контекста (Select): Произошла исключительная ситуация (Microsoft Office Excel): Метод Select из класса Range завершен неверно» (подробнее могу описать при необходимости). Поэтому был применен метод копирования листа целиком.
А собственно суть задачи сводится к следующему: необходимо иметь возможность выводить из 1С многостраничные отчеты Excel с группировками, при том, делать это параллельно, чтобы можно было одновременно формировать 2 и более отчетов.
Источник
Почему не получается использовать ТабличныйДокумент для работы с Excel?
Одним из полезных нововведений на платформе 8.3.6 стала возможность возможность импорта содержимого из файлов в форматах XLS (Microsoft Excel 97), Microsoft Office OpenXML (Microsoft Excel 2007- 2010) и ODS (OpenDocument) в табличный документ.
На платформе 8.3.10 появилась возможность считывания данных с отдельных листов книги EXCEL.
Данная возможность доступна как в интерактивном режиме, так и из встроенного языка.
Реализована поддержка вставки из буфера обмена областей, скопированных из Microsoft Excel и OpenOffice Calc.
Реализация импорта из EXCEL на встроенном языке стала возможна в результате нововведений в функционал объекта «ТабличныйДокумент»:
Для метода «Прочитать» объекта «ТабличныйДокумент» реализован параметр «СпособЧтенияЗначений» (Новое системное перечисление «СпособЧтенияЗначенийТабличногоДокумента»). (с) Загрузка из EXCEL
Тип: СпособЧтенияЗначенийТабличногоДокумента.
Определяет, каким образом нужно интерпретировать значения, считываемые из исходного документа XLS, XLSX или ODS.
При загрузке табличного документа из формата Excel 97 — 2010 и OpenOffice Calc, в случае если в ячейке исходного документа содержалось значение типа Дата или Число, то в ячейку результирующего табличного документа это значение попадает в зависимости от значения этого параметра.
Значение по умолчанию: Текст.
Так вот. И в excel и в mxl ячейка может содержать значение и иметь формат представления. Проблема в том, что СКД при выводе значений в табличный документ выводит только представление.
Проблема при сохранении табличного документа в файл xlsx
Если в ячейке будет код номенклатуры с лидирующими нулями — при экспорте в эксель значение ячейки их обрежет,
например было «00246100» стало «246100»:

При этом в представлении всё верно.
И да, если переименовать xlsx в zip и открыть архиватором sheet1.xml — то там будет именно «246100».
Конечно, есть ещё вариант ручной установки значения ячейки таб. документа, и он работает.
На клиенте.
Но #НаСервере установка свойства СодержитЗначение приводит к очистке. И в справке про это ничего нет. 
Для регламентных не годится.
Проблема при загрузке табличного документа из файла xlsx
При загрузке файла экселя, сформированного в других языках программирования, содержимое может вообще не прочитаться (если верить гуглу при поиске заголовков этого файла выдаёт Open XML SDK 2.5),
например:
В режиме предприятия (меню Файл — Открыть) это пустой таб. документ
с 1026 столбца. 
Хотя в экселе файл открывается прекрасно: 
Ньюансы (различия) чтения методом OLE и ТабДок
Часть кода для сравнения этих методов:
Я конечно буду рад ошибаться, но, по-моему, нативные средства платформы по работе с Excel совсем далекоооооо не всегда применимы на практике.
Источник
Платформа 8.2.19.130, конф-ция УТ 10.3 в режиме совместимости. Наблюдается следующая проблема: Когда интерактивно (через «сохранить копию»), пытаемся экспортировать файл в формате Excel 97 (или лист excel), то файлы больше 3-4 mb сохраняется с потерей форматирования и открывается с ошибкой: «В книге …. обнаружено содержимое, которое не удалось прочитать….», далее ексель удаляет нечитаемое содержимое и пишет: «Формулы и значения ячеек были восстановлены, но некоторые данные могут быть потеряны.» Эта проблема возникла после перехода с 8.1 на 8.2 — платформу. При этом большие файлы експортируемые из БП 2.0 сохраняются и открываются нормально. Подскажите, как этом можно исправить, или в какую сторону копать. ЗЫ Офис на компах юзеров 2007-ой.
а в xlsx тоже криво сохраняется?
В xlsx сохраняется и открывается, но при этом сбивается форматирование ячеек, столбцы как бы сужаются, это неудобно так как выгружаются табличные документы с картинками, и их приходится править потом. Кроме того, не у всех клиентов установлен офис 2007 и выше, поэтому менеджерам, хотелось бы все-таки сохранять файлы совместимые с 97-2003. Пока предлагаем менеджерам такое решение: сохранять в xlsx, потом пересохранять в 97-2003, но они не в восторге, от лишних телодвижений. Нагуглить толком ничего не удалось, может сообщество подскажет какое-нибудь решение?
все таблицы так себя ведут? или только одна? зы может проблема тут?
Попробуйте поставить 8.2.17 (у нас стоит 1С:Предприятие 8.2 (8.2.17.153)). Пытались переходить на 8.2.19, так они что-то в moxel.dll навертели там и тяжелые прайсы с картинками также криво сохранялись. Оттого сидим и пока не переходим.
Все табличные документы себя так ведут, пробовали на прайс-листе, печати счета с картинками и etc. Как только размер файла превышает 3-4 mb, сразу начинаются проблемы с форматированием. На 17-ом релизе 97-2003 у вас нормально экспортируется?
да, есть прайсы, весящие до сжатия по 100 Мб
Ок, спасибо, будем пробовать этот вариант…
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
Сохранение в экселе табличного документа с длинным текстом |
Я |
05.08.09 — 17:02
Столкнулся с проблемкой. Ячейки в табличном документе содержат длинные строки. При сохранении в эксель содержимое этих ячеек просто обрезается. Релиз платформы старый. 8.0.18.2. Вопроса два.
1.Удастся ли это победить обновлением релиза (соответсвенно до какой версии).
2.Как еще это можно победить.
1 — 05.08.09 — 17:03
точно обрезается? А если границы ячейки раздвинуть?
2 — 05.08.09 — 17:05
(1) раздвигаю. Обрезано.
3 — 05.08.09 — 17:12
апп
4 — 05.08.09 — 17:16
дык — а в макете внутри 1С если показать (вывести баличный документ) все на месте?
5 — 05.08.09 — 17:21
(4) в 1С все нормально показывается. Мало того, если сохранить в mxl и открывать из 1С, тоже все хорошо. Обрезает почему-то при сохранении в формате xls
6 — 05.08.09 — 17:30
ау
7 — 05.08.09 — 17:32
где-то вроде сплывало, что режет до 256 символов
8 — 05.08.09 — 17:35
(7) да, именно так. Посчитал…
9 — 05.08.09 — 17:39
(8) может объединение ячеек поможет? Типа кидать длинный текст не в одну ячейку, а в объединение ячеек, как вариант.
10 — 05.08.09 — 17:39
mxl круче xls тут ограничения
11 — 05.08.09 — 17:40
хз, вроде перенос строк через каждые 255 символов должен помочь, хотя не помню
12 — 05.08.09 — 17:41
(9) у меня и так ячейка — объединение нескольких. Но в экселе должен быть уже готовый вариант (который сосбственно и сформирован в 1С)…
13 — 05.08.09 — 17:47
Звездец. Позвонил отцу проконсультирваться. Он говорит, что это обходится. Но для этого нужно формировать средствами языка экселевский документ через ОЛЕ-объект, при помощи бесиковских команд… о-О
14 — 05.08.09 — 17:48
(11) интересно, надо будет проверить…
15 — 05.08.09 — 18:08
(13) просто в Excel передаются строки до 255 символов, а уже макрос в Excel собирает их, как было нужно — у меня вообще Excel «кушала» текстовый файл, по которому формировался лист.
16 — 05.08.09 — 18:34
(11) не, перенос строк не помогает.
(15) надо будет подумать над этим, спасибо.
17 — 05.08.09 — 18:56
(16) на самом деле проблема в том, что окно передачи данных OLE — это 256 символов на строку, далее он её режет, причём даже из макросов Excel.
Вот только не помню, что будет, если использовать значение Value2, которое чем-то там отличается.
А формула в ячейке Excel никогда не может быть больше 256 символов — Microsoft никогда не умел и не научится работать с динамической памятью.
18 — 05.08.09 — 19:00
(17) свой примерчик работы через текстовый файл кинуть можешь?
19 — 05.08.09 — 20:44
Пишется шаблон Excel, то есть документ, который будет что-то делать.
В нём есть процедура Sub Workboon_OnOpen в которой просто ищем нужный нам текстовый файл, который открываем на чтение через Scripting.FileSystemObject
и читаем по строкам:
Не забываем, что нужно создать новую книгу (или лист) — чтобы не писать в наш шаблон — посылать макросы кому-то в подарок — бессмысленно.
В начале идут определения штрифта и цветов.
Font:Номер,ИмяШтрифта,Высота,Жирность
Color:Номер,R,G,B
Border:Номер,Верх,Низ,Лево,Право,Ширина
Потом идёт описание шаблона документа
Columns:Ширина колонки,…
Теперь описываем «строки»
Line:Высота строки.
Cells:НомерЯчейки,Штрифт,Цвет,Рамка,Тип,Данные
Тип=Т просто текст, N это число,F это формула в формате RC.
Штрифт, цвет и рамка — это ссылки на описание в заголовке.
Чтение файла While File.atEndOfStream=false s=File.ReadLine() d=InStr(1,s,":") n=Left(s,d-1) s=Mid(s,d+1) if n="Line" then ' читаем высоту строки i=CLng(s) ' здесь у меня была функция проверки формата, но для скорости можно и так CurrentRow=CurrentRow+1 ' сдвигаемся на следующий ряд (не забть занулить перед работой) InputSheet.Rows(CurrentRow).Height=i ' устанавливаем высоту строки elseif n="Cells" then d=InStr(1,s,",") n=Left(s,d-1) ' номер ячейки s=Mid(s,d+1) CurCol=CLng(n) ' преобразование, как получится d=InStr(1,s,",") n=Left(s,d-1) ' штрифт s=Mid(s,d+1) CurFont=CLng(n) d=InStr(1,s,",") n=Left(s,d-1) ' цвет s=Mid(s,d+1) if n<>"-" then CurColor=GlobalColorArray(CLng(n)) else CurColor=False ' и так далее для остальных параметров with InputSheet.Cells(CurrentRow,CurCol) if CurType="T" then .Value=s elseif CurType="N" then .Value2=CDec(s) elseif CurType="F" then .FormulaR1C1=s end if .Font=GlobalFontArray(CurFont)
if CurColor<>False then .Interrior.Color=CurColor
' с Border немного сложнее, так как там надо установить флаги чёрточек и их тип в разные места (как это было сделано я сейчас не помню) end with elseif n="Fonts" then wend ' ну и так далее
20 — 05.08.09 — 20:47
P.S. писал по памяти, но идея должна быть понятна.
Чтобы не было вопросов — Такой пример:
Sub test()
s = "??????"
For i = 1 To 1000
s = s & "," & CStr(i)
Next i
ThisWorkbook.Worksheets(1).Cells(1, 1).Value = s
End Sub
прекрасно "впихивает" в строку все 1000 чисел - явно более 256 символов.
21 — 05.08.09 — 20:49
может йоксель ?
22 — 05.08.09 — 21:22
(19,20) спасибо! Завтра буду разбираться…
(21) слышал про него краем уха, но не помню что за зверь…
23 — 05.08.09 — 21:28
обрезка — шалости экселя….
вроде в последнем (2007 или каком там) — это ограничение сняли….
(20) как все сложно то… Проще надо быть… проще…
24 — 05.08.09 — 22:24
(23) завтра проверю
26 — 06.08.09 — 10:56
(23) таки нет. И в 2007 то же самое….
27 — 06.08.09 — 11:22
+26 кроме того, если обыкновенным копи-пастом копируешь в ячейку текст, то ничего не обрезается, весь текст сохраняется в ячейке. Так что это не приколы экселя, это уродский механизм платформы 1С по сохранению данных в экселевском формате…
28 — 06.08.09 — 11:47
Так, еще вопросик. А рисунки при сохранении табличного документа в эксель почему теряются? Эксельный файл уже без факсимилье идет. Это как-то настраивается?
29 — 06.08.09 — 11:52
8.0 штатными средствами пишет в формате Эксел 95, который не поддерживает Юникод и есть ограничение на длину ячейки. В 8.1 использует более старшую версию Эксела, или можно, как было сказано ранее, исправить полученный xls файл через OLE Automation, достаточно изменить только ячейки с длинными строками.
30 — 06.08.09 — 11:53
(0) сохраняй в формате Excel97 и все будет ок
31 — 06.08.09 — 11:56
(29) а если точнее, 8.1 не будет обрезать текст?
32 — 06.08.09 — 11:58
(30) как это практически сделать? 8.1 использует этот формат для сохранения?
33 — 06.08.09 — 12:01
ТабличныйДокумент (SpreadsheetDocument) Записать (Write)
Синтаксис:
Записать(<Имя файла>, <Тип файла таблицы>)
Параметры:
<Имя файла> (обязательный)
Тип: Строка. Имя файла, в котором сохраняется табличный документ. <Тип файла таблицы> (необязательный) Тип: ТипФайлаТабличногоДокумента. Формат, в котором будет сохранен табличный документ.
Значение по умолчанию: MXL
Описание:
Записывает табличный документ в файл.
Примечание:
При работе на сервере или через com-соединение использует только файлы форматов mxl и txt.
Пример:
ТабДок.Записать(«C:My DocumentsТаблица2.mxl»);
34 — 06.08.09 — 12:01
(32) см. параметр <Тип файла таблицы>
35 — 06.08.09 — 12:03
(33) спасибо! Сейчас попробую.
36 — 06.08.09 — 12:05
(34) увидел. Но коллекция <Тип файла таблицы> не содержит Excel97. Похоже, надо перейти на 8.1…
37 — 06.08.09 — 12:11
Насчет сохранения рисунка подскажите. По поводу (28)…
38 — 06.08.09 — 12:25
Рисунки в эксель никто не сохраняет? Ау!
39 — 06.08.09 — 12:51
Рискунки… В эксель…
40 — 06.08.09 — 15:10
апп
41 — 06.08.09 — 16:07
Из 8.0 по ОЛЕ засылаю в ячейку столько, что помещается только на 2 экранах (19 дюймов). Одной строкой. Ехель2002.
42 — 06.08.09 — 16:15
+(41) Правда тоже не всё доходит, но обрезает после многих тысяч символов
selenat
43 — 06.08.09 — 16:48
(41) по ОЛЕ — да. Можно. Уже пример надыбал. Только трудоемко…
Про рисунок кто-нить скажет чего?
Автор magnifico61, 31 мая 2018, 16:55
0 Пользователей и 1 гость просматривают эту тему.
При сохранении табличного документа в Word вылетает ошибка
«Превышена допустимая ширина документа word 2007»
в одном макете есть Таблица шириной 49 колонок.
Как обойти данную ошибку?
Уменьшить ширину документа.
Руками. Клавиатурой, мышкой и прочими устройствами ввода. Добейся, чтобы док влазил при печати на лист А4 БЕЗ автомасштаба.
это невозможно сделать, так как очень большое количество макетов и они сохраняются в разные форматы (xlsx, pdf) и проблема только с word.
Нужно решить эту проблему другим способом, не прибегая к редактированию макета
Добавлено: 01 июн 2018, 13:44
Или как вариант вывести табличный документ в ворд через com.
Может кто знает как это сделать?
Плоские шутки для третьеклассников оставь при себе.
лучше бы помог, чем всякий мусор писал
magnifico61,
Без тебя разберусь, чем мне тут заниматься.
И я уже помог. Но тебе надо родить за 2 месяца.
Теги:
- Форум 1С
-
►
Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4 -
►
Конфигурирование, программирование в 1С Предприятие 8 -
►
Сохранение табличного документа в Word
Похожие темы (5)
![]()
Поиск
Трудности загрузки/выгрузки эксельных прайсов.
Одним из полезных нововведений на платформе 8.3.6 стала возможность возможность импорта содержимого из файлов в форматах XLS (Microsoft Excel 97), Microsoft Office OpenXML (Microsoft Excel 2007- 2010) и ODS (OpenDocument) в табличный документ.
На платформе 8.3.10 появилась возможность считывания данных с отдельных листов книги EXCEL.
Данная возможность доступна как в интерактивном режиме, так и из встроенного языка.
Реализована поддержка вставки из буфера обмена областей, скопированных из Microsoft Excel и OpenOffice Calc.
Реализация импорта из EXCEL на встроенном языке стала возможна в результате нововведений в функционал объекта «ТабличныйДокумент»:
Для метода «Прочитать» объекта «ТабличныйДокумент» реализован параметр «СпособЧтенияЗначений» (Новое системное перечисление «СпособЧтенияЗначенийТабличногоДокумента»). (с) Загрузка из EXCEL
<СпособЧтенияЗначений> (необязательный)
Тип: СпособЧтенияЗначенийТабличногоДокумента.
Определяет, каким образом нужно интерпретировать значения, считываемые из исходного документа XLS, XLSX или ODS.
При загрузке табличного документа из формата Excel 97 — 2010 и OpenOffice Calc, в случае если в ячейке исходного документа содержалось значение типа Дата или Число, то в ячейку результирующего табличного документа это значение попадает в зависимости от значения этого параметра.
Значение по умолчанию: Текст.
Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(тз);
Построитель.Выполнить();
Построитель.Вывести();
Так вот. И в excel и в mxl ячейка может содержать значение и иметь формат представления. Проблема в том, что СКД при выводе значений в табличный документ выводит только представление…
Проблема при сохранении табличного документа в файл xlsx
Если в ячейке будет код номенклатуры с лидирующими нулями — при экспорте в эксель значение ячейки их обрежет,
например было «00246100» стало «246100»:
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.Область(1,1).Текст = "Номенклатура";
ТабДокумент.Область(1,2).Текст = "Артикул";
ТабДокумент.Область(2,1).Текст = "NSIN0001130294";
ТабДокумент.Область(2,2).Текст = "00246100";
ИмяФайлаXLSX = ПолучитьИмяВременногоФайла("xlsx");
ТабДокумент.Записать(ИмяФайлаXLSX, ТипФайлаТабличногоДокумента.XLSX);
ЗапуститьПриложение(ИмяФайлаXLSX);
Выведет:

При этом в представлении всё верно…
И да, если переименовать xlsx в zip и открыть архиватором sheet1.xml — то там будет именно «246100».
Конечно, есть ещё вариант ручной установки значения ячейки таб. документа, и он работает.
На клиенте…
#Если ТолстыйКлиентОбычноеПриложение Тогда
// В экселе значение ячейки отличается от представления (обрезает лидирующие нули и т.п.)
Область = ТабДок.Область(1,1,ТабДок.ВысотаТаблицы, ТабДок.ШиринаТаблицы);
Область.Защита = Ложь;
Область.СодержитЗначение = Истина;
#КонецЕсли
Но #НаСервере установка свойства СодержитЗначение приводит к очистке. И в справке про это ничего нет…

Для регламентных не годится.
Проблема при загрузке табличного документа из файла xlsx
При загрузке файла экселя, сформированного в других языках программирования, содержимое может вообще не прочитаться (если верить гуглу при поиске заголовков этого файла выдаёт Open XML SDK 2.5),
например:
ИмяФайлаXLSX = ПолучитьИмяВременногоФайла("xlsx");
Ссылка = "https://raw.githubusercontent.com/kuzyara/ConvertCSV/master/priceberg.xlsx";
КопироватьФайл(Ссылка, ИмяФайлаXLSX);
//ЗапуститьПриложение(ИмяФайлаXLSX);
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.Прочитать(ИмяФайлаXLSX, СпособЧтенияЗначенийТабличногоДокумента.Значение);
ЗаполненоЯчеек = 0;
Для НомерСтроки = 1 По ТабДокумент.ВысотаТаблицы Цикл
Для НомерСтолбца = 1 По ТабДокумент.ШиринаТаблицы Цикл
ТекЗначение = ТабДокумент.Область(НомерСтроки,НомерСтолбца).Текст;
Если НЕ ПустаяСтрока(ТекЗначение) Тогда
ЗаполненоЯчеек = ЗаполненоЯчеек + 1;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Сообщить("Заполнено ячеек: " + ЗаполненоЯчеек);
// Выведет:
//
// Заполнено ячеек: 0
В режиме предприятия (меню Файл — Открыть) это пустой таб. документ
с 1026 столбца…

Хотя в экселе файл открывается прекрасно:

Ньюансы (различия) чтения методом OLE и ТабДок
//COM
Excel = Новый COMОбъект("Excel.Application");
Excel.Visible=0;
Excel.FileValidation = 1;
Excel.Workbooks.Open(ИмяФайла, , Истина);
Book = Excel.Workbooks(1);
Sheet = Book.Sheets(1);
МассивМассивовXLS = Sheet.UsedRange.Value.Выгрузить();
//ТАБ
ТабДокумент= Новый ТабличныйДокумент;
ТабДокумент.Прочитать(ИмяФайлаXLSX);
ПостроительОтчета = Новый ПостроительОтчета;
ПостроительОтчета.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДокумент.Область());
ПостроительОтчета.Выполнить();
// Результат выгружаем в таблицу значений.
ТабЗначений = ПостроительОтчета.Результат.Выгрузить();
Часть кода для сравнения этих методов:
ИначеЕсли СтрНайти(Стр, ",") > 0 Тогда
//СтрокаCOM[КиЗ.Ключ] "0,00002" Строка
//СтрокаТАБ[КиЗ.Значение] "0,000020" Строка
// ...
ДобавитьНьюанс(Ньюансы, "Ньюанс1", СтрокаCOM[КиЗ.Ключ], СтрокаТАБ[КиЗ.Значение]);
ИначеЕсли ТолькоЦифрыВСтроке(Стр) Тогда
//СтрокаCOM[КиЗ.Ключ] "58198119" Строка
//СтрокаТАБ[КиЗ.Значение] "058198119" Строка
// ...
ДобавитьНьюанс(Ньюансы, "Ньюанс2", СтрокаCOM[КиЗ.Ключ], СтрокаТАБ[КиЗ.Значение]);
ИначеЕсли КиЗ.Значение = "Колонка4" И СтрНайти(Стр, ".") > 0 Тогда
//СтрокаCOM[КиЗ.Ключ] "835,2" Строка
//СтрокаТАБ[КиЗ.Значение] "835.2000000000001" Строка
// ...
ДобавитьНьюанс(Ньюансы, "Ньюанс3", СтрокаCOM[КиЗ.Ключ], СтрокаТАБ[КиЗ.Значение]);
ИначеЕсли СодержимоеПервых100СтрокПусто(ТабДокумент) Тогда
// если платформа не смогла прочитать и выдала пустые строки
// ...
ДобавитьНьюанс(Ньюансы, "Ньюанс4", "Пустые строки: NativeXLSX", "", Истина);
ИначеЕсли СокрЛП(СтрокаОбразец[КиЗ.Ключ]) = СокрЛП(Стр) Тогда
//СтрокаCOM[КиЗ.Ключ] "уп.10" Строка
//СтрокаТАБ[КиЗ.Значение] "уп.10 " Строка
// ...
ДобавитьНьюанс(Ньюансы, "Ньюанс5", СтрокаCOM[КиЗ.Ключ], СтрокаТАБ[КиЗ.Значение]);
ИначеЕсли ТабДокумент.ШиринаТаблицы > 1024 Тогда
ДобавитьНьюанс(Ньюансы, "Ньюанс6", "ШиринаТаблицы > 1024", "");
// и т.д.
Я конечно буду рад ошибаться, но, по-моему, нативные средства платформы по работе с Excel совсем далекоооооо не всегда применимы на практике.
