Поддержка выгрузки в Excel 2007 для 1С 7.7 в одну строку
Разработка - Разработка внешних компонент
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Внешняя компонента, умеет сохранять таблицы в формате xlsx, html и PDF.
При загрузке перехватывает штатное интерактивное и программное сохранение в Excel, HTML и TXT. В диалоге выбора файла заменяет вариант выбора ".xls" на ".xlsx" и ".txt" на "PDF"
Компонента подключается так:
ПодключитьВнешнююКомпоненту("AddIn.Moxel.Converter");
Для добавления поддержки формата выгрузки в Excel 2007 и PDF этого достаточно.
Поддерживается сохранение рисунков, надписей и внедренных OLE объектов.
Белый фон картинок станет прозрачным при сохранении (как на первом скриншоте), если в свойствах узора картинки установить цвет "Авто".
Для выгрузки в html и PDF можно создать объект конвертера :
Таб = СоздатьОбъект("Таблица");
Таб.Вывести();
Конвертер = СоздатьОбъект("AddIn.Moxel.Converter");
Конвертер.Присоединить(Таб);
ИмяФайла = Конвертер.Записать("Тест.html", 2); //Запись в html
ИмяФайла = Конвертер.Записать("Тест.pdf", 3); //Запись в pdf
У объекта имеется метод для включения/отключения перехвата штатного сохранения:
Конвертер = СоздатьОбъект("AddIn.Moxel.Converter");
Если Конвертер.ПерехватитьЗапись(1) = 1 Тогда
Сообщить("Перехват записи включен");
Иначе
Сообщить("Перехват записи не включен");
КонецЕсли;
Если Конвертер.ПерехватитьЗапись(0) = 1 Тогда
Сообщить("Перехват записи выключен");
Иначе
Сообщить("Перехват записи не выключен");
КонецЕсли;
В архиве находится обработка с примерами.
Для работы требуется .Net 4.6.2
Для установки нужно распаковать архив на локальный диск, и запустить register.cmd с правами администратора. Два раза нажать Enter.
upd 08.04.2019 Новая версия 0.4
Добавлено чтение настроек страницы.
Теперь при сохранении в xlsx и PDF к документу применяются настройки страницы, установленные через "Файл-Параметры страницы" и Таблица.ПараметрыСтраницы().
Применяются:
Размер бумаги
поля слева/справа/сверху/снизу
Ориентация страницы
Для xlsx применяется масштаб и "вписать в страницу по ширине".
Добавлен перехват штатного сохранения в HTML
Теперь штатное сохранение таблицы в HTML перенаправляется в компоненту аналогично xlsx
upd 16.04.2019 Новая версия 0.5
Добавлены разрывы страниц при сохранении в Excel.
Для экономии памяти приложения 1С конвертация таблиц, занимающих больше 2 Мб вынесена во внешний процесс.
upd 24.05.2020 Новая версия 0.6
Если в ячейке есть символ переноса строки, то при экспорте в Excel устанавливается галка "Перенос по словам"
upd 21.06.2020 Новая версия 0.7
Исправлена ошибка GDI+ если в таблице есть объекты "Картинка".
Доработано отображение прогресса при длительных сохранениях
upd 23.06.2020 Новая версия 0.8
Доработано форматирование объединенных ячеек.
В варианты сохранения добавлен формат PDF вместо TXT
Для программного сохранения нужно вызвать:
Таб.Записать(ИмяФайла, 0);// - MOXEL
Таб.Записать(ИмяФайла, 1);// - XLSX
Таб.Записать(ИмяФайла, 2);// - HTML
Таб.Записать(ИмяФайла, 3);// - PDF
При интерактивном сохранении пункт "Текстовый файл" заменен на "PDF"
Обновлено описание.
upd 25.06.2020 новая версия 0.9
Форматирование в PDF доработано.
Исправлена ошибка с чтением параметров страницы.
Увеличилась скорость сохранения в Excel больших файлов.
upd 22.03.2022 Новая версия 0.10
Исправлены некоторые баги.
Улучшена скорость работы.
Уменьшено потребление памяти.
Уменьшено количество файлов в составе компоненты.
upd 26.06.2024 Новая версия 0.11
Исправлена ошибка сохранения в Excel повторяющихся областей.
Добавлено сохранение в Excel области печати
Небольшие оптимизации
upd 08.07.2024 Новая версия 0.12
Исправлена ошибка форматирования чисел при экспорте в Excel. Теперь и запятая и точка в качестве разделителя обрабатывается корректно.
upd 14.11.2025 Новая версия 0.13
* Исправлено позиционирование картинок в html/pdf
* Доработан расчет высоты в секциях с автовысотой для html/pdf
upd 22.09.2026 Новая версия 0.14
*Исправлено чтение параметров страницы при подключении таблицы
*Исправлена вставка разрывов страницы при конвертации в PDF
Для работы требуется .Net Framework v4.6.2
Т.к. разработка судя по всему спросом не пользуется - исходники выложены на github.
Вступайте в нашу телеграмм-группу Инфостарт
См. также
Разработка внешних компонент Системный администратор Разработчик 1С:Предприятие 7.7 1С:Предприятие 8 Россия Платные (руб)
Аддон "Структура Обмена" (ExchangeStruc) - это компонента, которая обеспечивает доступ к разделяемым процессом структурам, аналогичным структурам 1С. Обеспечивает прозрачную передачу данных примитивных типов, в том числе Двоичных данных, в режиме Реального времени между разными контекстами (формами) или потоками одного процесса. В перспективе функционал будет расширен для обмена между процессами, даже разных версий платформ. Совместим с версиями Windows рабочих станций и серверов, с платформами 1С разных версий и релизов в режиме Native начиная с 8.2, и в режиме COM начиная с версий 7.7. По скорости чтения и записи лишь немногим уступает стандартной структуре 1С. НОВОЕ: Добавлен функционал регистрации компоненты COM в качестве OLE Auto (COMОбъект) для поддержки её работы в серверах старых версий 1С: 8.0 и 8.1, где работа с компонентами исключена. Теперь можно коммуникацию с Фоновыми заданиями на этих версиях проводить.
7320 руб.
19.04.2023 7310 1 0
Разработка внешних компонент WEB-интеграция Разработчик 1С:Предприятие 7.7 1C77 Платные (руб)
Компонента HttpSrv7 позволяет создавать веб-сервисы в среде 1С 7.7 и, используя файлы HTML, несложные веб-сайты. С помощью нее можно обеспечить доступ к данным 1С 7.7 из браузера. Дополнительно используя компоненту HTTP_Async можно наладить обмен данными между удаленными информационными базами по протоколам HTTP, HTTPS и WebSocket. С помощью компоненты HttpSrv7 используя протокол WebSocket можно создавать и поддерживать работу нескольких чатов. С помощью компоненты HTTP_Async можно асинхронно отправлять HTTP-запросы к сайтам, веб-сервисам (в т.ч. к HTTPSrv7) и обрабатывать ответы по мере их поступления. Компонента GISMT в дополнение к HTTP_Async имеет функцию цифровой подписи в формате Base64 и, таким образом, имеет все возможности для работы с API ГИС МТ "Честный знак" непосредственно из среды 1С 7.7.
6100 руб.
27.05.2022 13623 2 20
Разработка внешних компонент Разработчик 1С:Предприятие 7.7 Платные (руб)
Компонента для выбора значения из больших списков значений.
5084 руб.
02.12.2021 8337 3 19
Банковские операции Загрузка и выгрузка в Excel Бухгалтер Пользователь 1С:Предприятие 7.7 1C77 Россия Бухгалтерский учет Платные (руб)
Решение предоставляет комплексную загрузку банковской выписки из CSV, XLS, TXT файла в 1С 7.7 любой конфигурации. Позволяет создавать документы выбранного вида, например "Строка выписки банка (приход/расход)", или многострочный табличный документ, например Выписка, для каждой операции из загружаемого файла банковской выписки. Загружает реквизиты документа, а также создаёт контрагентов и другие необходимые элементы справочников.
5999 руб.
29.07.2021 28836 23 27
Загрузка и выгрузка в Excel ККМ Разработчик Бухгалтер Пользователь 1С:Предприятие 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Бухгалтерский учет Управленческий учет Абонемент ($m)
Выполняет выгрузку товаров (всех, только с признаком в прайсе, только из указанной папочки) с гибкой настройкой выгружаемых данных. Формируется файл в формате XLSX подходящий для прямой удаленной загрузки в кассовый аппарат АТОЛ 91Ф/92Ф и им подобных, имеющих управление через Личный кабинет АТОЛ (lk.atol.ru).
1 стартмани
31.01.2021 10331 4 &-rey 1
Разработка внешних компонент Защита ПО и шифрование Обмен с ГосИС Разработчик 1С:Предприятие 7.7 1C77 Абонемент ($m)
Цифровые подписи, шифрование, просмотр сертификатов ключей ЭЦП, работа с различными криптопровайдерами (в т.ч. КриптоПРО ГОСТ 2012) в 1С 7.7, получение ЭЦП в формате BASE64 для работы с API ГИС "Честный знак"
2 стартмани
08.06.2020 12010 33 mdbruyfn 10
Разработка внешних компонент WEB-интеграция Разработчик 1С:Предприятие 7.7 Абонемент ($m)
Компонента позволяет использовать различные веб-сервисы интернет-ресурсов, например работать с онлайн-кассой через API, предоставленное ее разработчиком. Тестировалась на платформе 1С релиза 7.70.027.
1 стартмани
14.11.2019 24644 138 mdbruyfn 110
Загрузка и выгрузка в Excel Перенос данных 1C Разработчик Пользователь 1С:Предприятие 7.7 1С:Предприятие 8 1C:Бухгалтерия 1C77 1С:ERP Управление предприятием 2 Абонемент ($m)
Описание технологии загрузки любых адресов из 1С 7.7 с разложением по ФИАС в современные конфигурации 1C 8.3 на примере ERP. Предлагаемый способ просто чудо, он гарантирует результат, он очень простой и качественный! Моя обработка является синтаксическим анализатором, который подставляет в строку грязного адреса выражение "Дом №" и "Корпус", благодаря чему грязные адреса 7.7 сами очень хорошо раскладываются по значимым полям ФИАС - заполняется область, город, улица, дом, корпус.. все раскладывается само с помощью встроенного механизма современных конфигураций 1С 8.3, который написали сами сотрудники фирмы 1С!
1 стартмани
16.08.2019 22275 22 ksnik 12
По трем кнопкам, в диспетчере задач, виден процесс, который виснет:
Проблема в объединенных ячейках в каждой строке.
Либа, отвечающая за формат xlsx очень медленно выполняет объединение ячеек. Пока не придумал как решить.
Гарантированно помогает если убрать объединение ячеек.
В последней версии поправил индикацию прогресса.
" и запустить register.cmd с правами администратора."
- в сервер вин64 2008 - зарегистрируется без дополнительного шаманства?
Жалоба при сохранении печатной формы в эксель обрезает текст до 255 символов.
Как я понял связано с тем что семерка сохраняет в 95 экселе.
Можете расписать в публикации по шагам, что нужно из окружения, компонент и кода сделать, чтобы появилось такое меню как у вас на картинке для экселя 2007?
Судя из описания нужно скачать компоненту, запустить рядом батник. И допилить в конфе при старте строку кода которую вы указали, или же внешней обработкой это запускать при надобности?
плюс к этому плюшки в виде группировки стандартных отчетов с плюсиками слева как в экселе
Как я понял связано с тем что семерка сохраняет в 95 экселе.
Можете расписать в публикации по шагам, что нужно из окружения, компонент и кода сделать, чтобы появилось такое меню как у вас на картинке для экселя 2007?
Именно так.
- Скачать,
- распковать,
- запустить батник с правами администратора.
- Добавить в "ПриНачалеРаботыСистемы()"
Процедура ПриНачалеРаботыСистемы()
ПодключитьВнешнююКомпоненту("AddIn.Moxel.Converter");
КонецПроцедуры
в данном случае сработает и
ЗагрузитьВнешнююКомпоненту("v7Moxel.dll");
После этого в меню сохранения вариант "Excel" заменится на "Excel 2007"
И сохранение в html будет тоже делаться через компоненту. HTML сохраняется в виде аналогичном исходному документу а не так как это делает сама 1С.
Для работы обязателен .Net 4.6.
Никакие внешние обработки не нужны.
Если же нужно сделать сохранение в pdf - тогда можно либо воспользоваться перехватом меню при помощи и сделать свою программную реализацию выбора варианта сохранения, либо сделать дополнительную кнопочку на панели инструментов - как советует в ()
набери в яндексе "проект Йоксель". там в итоге ВК скопировать в папку с экзешника 77 (или в папку с базой) и загрузить ВК при старте системы.
здесь на портале тоже поищи - ставишь кнопку на тулбар и она делает группировки для типовых отчетов ТИС.
а если сам программишь, то возможности йокселя сам применишь тоже всякие.
Сейчас проверил - сохранил текст более 255 символов в ячейке из 2013 экселя в 95. Открываю и текст отбрезан до 255 символов.
эта публикация требует Net 4.x
он не везде может быть установлен.
Йоксель в этом смысле проще - с ним при установке возни меньше. вдобавок Йоксель кроме сохранения в эксель имеет и другие возможности (чтение экселя 2-3 строками кода, работа с табличным документом и прочее всякое полезное).
установка Йокселя "как ПО" - проста, это может и сам разработчик 1С сделать?
- скопировать йоксель в папку с программой или в папку с базой (я предпочитаю в папку с программой, чтобы не плодить разные версии в разных базах)
- прописать строку загрузки йокселя (это можно сделать и в обработке которая формирует печформу, например) при старте 1С
- запустить 1С один раз с правами администратора и выполнить загрузку йоксела (предыдущий пункт). Вполне возможно что запуск под правами администратора и не понадобится.
.
затем уже, если возможностей йокселя не будет хватать\чтото не то - тогда пробовать эту разработку.
всяких фич полезных потом здесь на портале
//ПодключитьВнешнююКомпоненту("SpreadSheet.dll") ругается.
ЗагрузитьВнешнююКомпоненту("SpreadSheet.dll") //работаетБез ВК получается сохраняем в mxl и открываем через ПО (установки не требует). Далее уже можно пересохранить в лист эксель 2003.
Для чего ВК тогда?
если все это сложно ;-) - ну тогда, да, ставь эту разработку.
повторю
.
1. вешаешь на панель кнопку с вызовом обработки их этой публикации.
2. допустим сформирован обычный печформа.
3. жмакаешь кнопку из упомянутой публикации - получаешь "переделанный" отчет (плоский или с группировками если надо).
Меню-Файл-Сохранить - выбираешь нужный формат
В открытом экселе все норм
напиши в личку свое мыло - я тебе обработку дам, повесить ее на кнопку - оно удобнее сохранять будет сразу с лоп.плюшками
Вот:
Могу посмотреть что там происходит если пришлете MXL для теста.
Там и моксель исходный, и то, что на выходе получается.
Там в этих проблемных ячейках - свойство "Контроль" в положении "Авто" стоит:
Похоже, это не обрабатывается...
Доработал так. Если в ячейке есть символ переноса строки, то при экспорте в эксель устанавливается галка "Перенос по словам"
Проблема с чтением таблицы из памяти 1С. Йоксель для конвертации сериализует таблицу во временный буфер в памяти и оттуда заново читает. У меня реализовано похожим образом, но конвертация вынесена во внешний x64 процесс, чтобы не отжирать память у 1С.
. я вот не уверен что это изменение вошло в общий релиз который сейчас окончательный.
у меня сохранил Йокселем за 2-3 сек. (Сервак интел ксеон Е5530, 2.4ГГц)
формат в экселе - 1-в 1 как моксель (скрин не выкладываю поэтому)
И строка шапки, шестая, переносы не сработали.
Но, в этой разработке привлекает именно простота использования, как для пользователя - вообще ни о чем думать не надо, просто в штатном меню пункт подменен, так и для программиста - только ВК загрузить... С Йокселем так не получается, это по любому отдельная обработка, хоть и с бОльшими возможностями...
Может у меня проблема в том, что система 32 бита? Исходный файл значительно больше, чем ОЗУ... Свопит не корректно? С типовыми снеговиками постоянно проблемы, особенно при обновлениях... Может и здесь что-то "родственное"-?
Но, в этой разработке привлекает именно простота использования, как для пользователя - вообще ни о чем думать не надо, просто в штатном меню пункт подменен, так и для программиста - только ВК загрузить... С Йокселем так не получается, это по любому отдельная обработка, хоть и с бОльшими возможностями...
Может у меня проблема в том, что система 32 бита? Исходный файл значительно больше, чем ОЗУ... Свопит не корректно? С типовыми снеговиками постоянно проблемы, особенно при обновлениях... Может и здесь что-то "родственное"-?
Проблему с длительным сохранением пока решить не удалось.
Но сложность точно не в расчеты высоты. Библиотека, отвечающая за сохранение в Excel работает довольно медленно, пока замену ей не придумал, но переделал вывод прогресса сохранения, чтобы было видно что 1С не зависла.
Так же можно попробовать удалить taskrunner.exe. Новая версия компоненты тогда будет сохранять фйл без использования временного файла.
Почему-то не хочет сохранять в PDF, если в таблице есть картинки - "В GDI+ возникла ошибка общего вида."
При сохранении в xlsx то же самое. В описании вижу на примерах подпись в таблице, так что вопрос о том, работает ли с картинками вообще, снят. А в чем может быть причина? Не тот формат картинки?
Или дело в версии .NET Framework 4.8.3761.0 ?
Сообщение при регистрации
D:\1C\moxel>C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe "D:\1C\Moxel\v7Moxel.dll" /codebase
Microsoft .NET Framework Assembly Registration Utility 4.8.3761.0
для Microsoft .NET Framework 4.8.3761.0
© Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
RegAsm : warning RA0000 : Регистрация неподписанной сборки с использованием параметра /codebase может вызвать конфликт д
анной сборки с другими приложениями, которые могут быть установлены на том же компьютере. Параметр /codebase предназначе
н только для подписанных сборок. Присвойте сборке строгое имя и повторите регистрацию.
Типы зарегистрированы успешно
Из мелкого на скриншотах надпись "ПДВ:" - если ячейка маленькая и в ней текст выровнен по правому краю, то он выводится как будто выровнен по левому краю.
Картинка в таблице выведена стандартными средствами 1С или какой-то сторонней библиотекой?
По выравниванию - видимо так происходит из-за того что слишком маленькая ячейка. Это тоже в PDF или в Excel?
И еще особенность - если загрузить сохраненную таблицу в обработку ТестMoxel.ert "Загрузить таблицу", то в открывшейся таблице все рисунки продублированы, один над другим в два слоя. Если открыть стандартно, то все ок.
В табличных файлах верхнюю строку с рисунками-кнопками можно удалить. Пробовал и с ней и без - одинаково.
tmpD515.tmp.mxl - записанная после открытия обработкой с продублированными рисунками.
tmpD515.tmp.mxl
В первой строке таблицы рисунки-кнопки с "Расшифровкой" типа "Списокзначений". Так вот при загрузке из памяти, возникает ошибка
"<<?>>{"VL",{{{"S","0","0","0","0","0","СохранитьРисунок"},"Действие"},{{"N","0","0","0","0","0","1"},"УдалитьНачальнаяСтрока"},{{"N","0","0","0","0","0","2"},"УдалитьКоличествоСтрок"},{{"S","0","0","0","0","0","!Тестовый контрагент"},"КонтрагентНаименование"},{{"S","0","0","0","0","0","Счет на ЭЦП для"},"НазваниеДокумента"},{{"S","0","0","0","0","0","JPG"},"ФорматРисунка"}}}
Неопознанный оператор"
В принципе, строку с кнопками я удаляю перед сохранением, поэтому это не критично. И при чтении таблицы из памяти Конвертер.ЗагрузитьИзПамяти(Таб);, - открывается диалог выбора файла. Думал, что будет загружаться "Таб". созданная при открытии обработки, или это потому, что она пустая?
А дублирование рисунков - в Процедуре ВыбратьФайл() сначала таблица открывается, а потом поверх выводится
Таб = СоздатьОбъект("Table");
Таб.Открыть(ИмяКаталога + ИмяФайла);
//Таб.ИсходнаяТаблица(ИмяКаталога + ИмяФайла);
//Таб.Вывести();
таб.Показать();
Но проблему это не решило, все равно "В GDI+ возникла ошибка общего вида."
PS:
Поюзал таблицу в обработке - там картинки вставлены как OLE объект и сохраняется без проблем. А если вставить как картинку, возникает вышеуказанная ошибка.
Еще ошибка... То, что там долго сохраняет большие таблицы, это конечно плохо, но не смертельно, не так это и часто надо. Но, ломает формат ячеек с объединением по горизонтали - это вообще не порядок. Во вложении архив акта в мокселе и то, что получается в экселе...
Вот, следующая порция косячков... Выравнивание в ячейке по правому краю(в PDF, в эксель вроде нормально). И отсутствие линий, для "подписей"...
Все в архиве во вложении. На картинке, дополнительно, на что обратить внимание.(Без налога(НДС): уехало...)
Но хватит лирики. Больше технических подробностей богам технических подробностей:
PDF формируется при помощи движка WebKit из отрендеренного HTML, поэтому присутствуют ограничения связанные с форматированием таблиц в HTML. Именно поэтому текст из PDF тут можно копировать и сам файл занимает значительно меньше места чем в случае с Yoksel, который делает PDF из набора картинок.
По поводу уехавшей надписи - в данном случае текст "Без налога (НДС)." не влезает в соответствующую ячейку, у ячейки указано выравнивание по правому краю. 1С и Excel в таком случае отображают текст со смещением в соседнюю левую ячейку. При формировании таблицы в Html я пока не придумал как сымитировать такое же поведение. Если есть какие-нибудь мысли по этому поводу - буду рад услышать. Пока у меня в голове только один вариант - посчитать ширину текста, и если он не влезает - объединить текущую ячейку с левой. Не особо оптимально.
По поводу отсутствия подписей в Excel - да, это баг, подписи сделаны "картинками" - надписями, они вроде бы корректно обрабатываются в HTML и PDF. С этим постараюсь разобраться.
Из фишек последней версии - переделан перехват сохранения. Штатный формат TXT заменен на PDF. Т.е. поддержка PDF теперь так же делается в одну строку.
Да, это то, что надо. Уже оценил. Формат "текст", там даром не нужен, а вот PDF вместо него - самое то.
Форматирование в PDF поправлено, линии возвращены..
Так же увеличилась скорость сохранения в Excel больших файлов. TaskRunner удалять не нужно.
С надписями в Excel проблема пока не решена
Высота ячеек и в экселе, и в пдф. В Экселе еще рвет по высоте, строка сверху и снизу, между ними пустое место. На скриншоте видно.
По скорости - сильно большие файлы не проверял, но, этот(~6500 строк) в эксель сохраняется мгновенно, в ПДФ около минуты...
Если сохранять через меню файл, то ошибка прежняя, если через обработку, загрузка в память и сохранение, то выдало: Не удалось загрузить файл или сборку "System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" либо одну из их зависимостей. Недостаточно памяти для обработки команды. (Исключение из HRESULT: 0x80070008)
Если сохранять через меню файл, то ошибка прежняя, если через обработку, загрузка в память и сохранение, то выдало: Не удалось загрузить файл или сборку "System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" либо одну из их зависимостей. Недостаточно памяти для обработки команды. (Исключение из HRESULT: 0x80070008)
Есть еще такая версия. Пока в ней нет картинок, но памяти жрет меньше и работает чуть быстрее.
И нужно понимать, что до бесконечности увеличивать количество строк не получится - у 1С 7.7 ограничение по памяти примерно в 1.7 гиг.
Формат excel 2007 довольно прожорлив по памяти.
Как вариант - можно сделать обработку файла частями, это будет сильно медленней, но экономичней по памяти. Ну и не бесплатно.
использованная и до гига не дорастает, до 1.7 далеко.
Проблема одна, бухгалтера, которые забывают эту цепочку.
использованная и до гига не дорастает, до 1.7 далеко.
Проблема одна, бухгалтера, которые забывают эту цепочку.
Версию из (77) не проверяли?
С экселем такая же беда у нас, макросы запустят, сервер ложится, в 1с ошибки транзакции :) База и терминал, одна машина.
Ошибка |
|---|
| Имя сбойного приложения: TaskRunnner.exe, версия: 1.0.0.0, отметка времени: 0x5f732672
Имя сбойного модуля: KERNELBASE.dll, версия: 6.1.7601.24441, отметка времени 0x5cb935a7 Код исключения: 0xe0434352 Смещение ошибки: 0x000000000000bdfd Идентификатор сбойного процесса: 0x4b58 Время запуска сбойного приложения: 0x01d69886827ca48f Путь сбойного приложения: E:\1C\1SBDB\v7Moxel\TaskRunnner.exe Путь сбойного модуля: C:\Windows\system32\KERNELBASE.dll Код отчета: c11e5d0f-0479-11eb-bea8-000c29202bf3 Application: TaskRunnner.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: System.IO.EndOfStreamException at System.IO.BinaryReader.FillBuffer(Int32) at System.IO.BinaryReader.ReadInt16() at Moxel.Moxel.Load(System.IO.BinaryReader) at Moxel.Moxel.Load(System.IO.Stream) at Moxel.Moxel.Load(Byte[] ByRef) at Moxel.Moxel.Load(System.String) at Moxel.Moxel..ctor(System.String) at TaskRunnner.Program.Main(System.String[]) |
(если файл сохранять в ексель штратными методами тогда весит ~ 300мб, могут быть файлы и побольше)
Скиньте, пожалуйста сюда проблемный файл в формате 1С, разберусь.
И еще хорошо бы скрин/текст сообщений об ошибках
Попробовал вариант нового релиза. Содержание архива скопировал в папку, заменил старые файлы на новые, повторно запустил с правами администратора файл "Register.cmd". Теперь, после запуска обработки, появляется ошибка "Ошибка сохранения таблицы в PDF. Не удалось прочитать таблицу". Пример кода во вложении. До момента слияния файлов выгружалось по 50 листов (проблема описана в предыдущем посте). Тестовая обработка выдает такую же ошибку.
Попробуйте так - полностью удалите все из папки.
Лучше всего перед этим перезагрузить ПК.
Потом распакуйте туда версию из (100) и запустите register с правами администратора.
И еще вопрос - какая операционка и какая версия 1С 7,7
В приложении фото как съехали в многостраничном документе.
Могу ли я mxl прислать Вам в личку?
Спасибо Вам за оперативность!
Но есть нюансы. В случае, когда в таблицу вставлена картинка, но файл изображения не подгружен, то возникает ошибка чтения таблицы при сохранении в html и pdf. Предлагаю в случаях, когда что-то не удается прочитать (всякие внедренные объекты, например), то их просто пропускать, а не выбрасывать ошибку.
Соответственно, по вертикали картинка подгоняется под высоту строки, при сохранении в mxl. (А для конвертации сначала таблица выгружается в mxl)
По поводу ошибки сохранения - присылайте в личку моксель, на котором ошибка. Посмотрю.
Честно говоря с ходу не подскажу, давно 7-кой не занимаюсь.
Возможно в свойствах картинки есть настройки масштабирования?
Когда буду разбираться с ошибкой - может что-то выясню.
В последней версии все по максимум собрано в одной библиотеке.
Сделал такую версию:
У картинок сохраняются пропорции (из исходного bmp), если вертикальный размер превышает высоту строки - строка раздвигается.
Прайс.xlsx
<Режим> -:
1 - растягивать;
2 - рисовать по центру с оригинальным размером;
3 - рисовать, сохраняя оригинальное соотношение размеров.
Тогда можно было бы сами картинки выполнить в одном размере (высота = ширина) и высоту строк таблицы 1с формировать программно исходя из количество строк в самой большой колонке...
-:
1 - растягивать;
2 - рисовать по центру с оригинальным размером;
3 - рисовать, сохраняя оригинальное соотношение размеров.
Посмотрю как будет время.
Типа как то так:
ВысотаСтрокиПоОписанию = 10.5 * СтрКоличествоСтрок(Товар.Описание) + 0.75;
Секция = Т.ПолучитьСекцию(ИмяСекции + "|Наименование");
ВысотаСтроки = Секция.Область().ВысотаСтроки();
...
Секция = Т.ПолучитьСекцию(ИмяСекции + "|ПерваяКолонка");
Секция.Область().ВысотаСтроки(?(ВысотаСтрокиПоОписанию > ВысотаСтроки, ВысотаСтрокиПоОписанию, ВысотаСтроки));
Т.ВывестиСекцию(Секция);
ПоказатьРезультат - просто конфетка! :) Спасибо!!!
PS Жаль вот только нет индикатора прогресса - после "Сохранить как" управление почти сразу возвращается в 1с, но файл в папке появляется через несколько секунд, что поначалу пугает - Где файл, не сохранился что-ли? но потом он на глазах появляется.
Отлично!
Вот исправленная версия без "артефактов" из предыдущей.
Внизу есть "подобие" индикатора, бегут процентики... Это заметно на больших файлах, теоретически можно прикрутить прогресс бар в строку статуса.
Полноценный индикатор сделать пока руки не дошли, т.к. сохранение идет в несколько потоков для скорости.
Управление в 1С возвращается только после того как файл физически записан. Но возможно отображение запаздывает
Еще раз, спасибо, отличная вещь :)
Ошибка сохранения таблицы в XLSX: System.ArgumentException: Row number out of bounds
в OfficeOpenXml.ExcelWorksheet.Row(Int32 row)
в v7Moxel.Moxel.ExcelWriter.ExcelWriter.Save(Moxel moxel, String filename)
в Moxel.Moxel.SaveAs(String filename, SaveFormat format, Int32 PaperWidth, Int32 PaperHeight)
в Moxel.SaveWrapper.SaveToExcel(IntPtr pSheetDoc, String FileName)
в OfficeOpenXml.ExcelWorksheet.MergeCellsCollection.Clear(ExcelAddressBase Destination)
в OfficeOpenXml.ExcelRangeBase.set_Merge(Boolean value)
в v7Moxel.Moxel.ExcelWriter.ExcelWriter.Save(Moxel moxel, String filename)
в Moxel.Moxel.SaveAs(String filename, SaveFormat format, Int32 PaperWidth, Int32 PaperHeight)
в Moxel.SaveWrapper.SaveToExcel(IntPtr pSheetDoc, String FileName)
Причину нашел - начиная с 44 строки в последней колонке таблицы идет выравнивание "По выделенному" (Это когда ячейки на самом деле не объединены, но текст выравнивается внутри всей задействованной области как в одной ячейке), Эксель таких изысков не умеет, поэтому когда встречается такое - компонента просто объединяет все задействованные ячейки.
В данном случае там встретилось еще какое-то объединение, а ячейка не может быть в двух объединенных областях одновременно, поэтому - эксепшн.
Варианты решения:
1. Самое быстрое и простое - изменить макет. просто объединить ячейки в последней колонке таблицы вместо выравнивания по выделению.
2. Быстрое - я могу в компоненте игнорировать такие ошибки, но тогда последняя колонка будет выглядеть так себе.
3. Правильное, но самое долгое - мне в компоненте нужно анализировать пересечение областей с объединенными ячейками и областей где применено выравнивание "по выделенному".
Теперь все ОК, еще раз СПАСИБО!
Ну вот и отлично :)
при сохранении в xslx числа выведенные с помощью Формат(Число,"Ч.2. ") - т.е. с точкой в качестве разделителя целой и дробной и пробел как разделитель разрядов - сохраняются как текст
А если выводить как Формат(Число,".2, "), т.е. с запятой - то почему то запятая сдвигается на два разряда вправо и число 123,45 становится 12345,00
А если выводить как Формат(Число,".2, "), т.е. с запятой - то почему то запятая сдвигается на два разряда вправо и число 123,45 становится 12345,00
Вообще при разборе чисел используется разделитель установленный в системе в настройках...
Можете прислать пример mxl и получившийся xlsx?
Прайс с точкой.mxl
Прайс с запятой.mxl
Прайс с запятой.xlsx
Здравствуйте.
Параметры страницы установлены каким образом?
Компонента читает параметры из памяти, т.е. они буду установлены после программной установки или после установки через Файл -> Параметры печати.
Можете оформить формирование примерной таблицы и установку параметров в виде обработки?
Посмотрю на выходных.
В обработке нужно поменять пути
Давно и успешно пользовался обработкой, по начау, много обсуждал, помогал отловить баги...
Потом, где-то с 63 сообщения темы, стало все устраивать и я благополучно забыл об этой компоненте - типа, работает, все устраивает(использовал почти каждый день), и ладно! :-)
Но, тут сегодня Инфостарт в рассылке напомнил. Зашел, посмотрел - релизов куча появилась... Ну, решил обновить... Как говорится - нашел на ж**у приключений... Лучшее, как известно враг хорошего :-(
Вообще все поломал. Стала ошибка появляться как тут:
(104) "Ошибка сохранения таблицы в PDF. Не удалось прочитать таблицу"
При попытке сохранить в XLSX, ошибки не возникает, просто молча все как-бы отрабатывает, но файл в целевой папке не появляется...
При попытке сохранить в HTML, тоже ошибка:
Ошибка сохранения таблицы в HTML :One or more errors occurred.
Нормально сохраняет только в моксель.
Использую без какого-либа кода, только подключение компоненты при старте, просто интерактивно из меню.
Пробовал разные версии(в том числе и из сообщения (100), которая помогла митчел в (104)), перерегистрировал неоднократно, чистил реестр вручную, опять регистрировал... Пепеустанавливал 1С и фреймворк - безрезультатно...
Система Win732-bit, 1с7.7 27 релиз, сетевая... В принципе, какая разница - до сегодняшнего дня, все тут-же и работало. От мокселя не зависит - любой, первая попавшаяся платежка...
Какую таблицу он прочитать не может? Может, что-то с темпами, или еще каким-то системным окружением не то?
Куда еще можно покопать?
И все-таки, я был не прав... Посыпаю голову пеплом...
Это именно моксель виноват... Чего ему не нравится, не могу понять - первое попавшееся в базе типовой УСН платежное поручение...
Взял соседний, первый попавшийся счет - и оказывается, все работает...
Просто так сложилось, что после обновления, для теста на платежку ткнул, и попал на гиморой :-(
Во вложении, моксель платежки, если будет возможность, посмотрите пожалуйста, что ему там не нравится...
Подскажите пож v7moxel.dll нужно через ЗагрузитьВнешнююКомпоненту или через файл register.cmd и потом уже использовать ПодключитьВнешнююКомпоненту("AddIn.Moxel.Converter") ?
Вроде зарегил через register но при включенном перехвате и сохранении в Excel 2007 выдает ошибку о нехватки памяти. Позиций в каталоге порядка 300 с фотками.
Если фотки не отмасштабированы физически, то вполне вероятно что памяти не хватает.
есть версия () в которой сделан своп картинок на диск. Попробуйте её.
Отключение компонент на C# к сожалению с ходу не реализуется, я пока не нашел решения.
Вообще не должно зависать. Перед выходом снимаете перехват сохранения?
Перехват не снимал принудительно. Еще потестировал - вроде пока не зависала 1С. Посмотрю тогда как будет у пользователей работать.
Единственная проблема не поддерживается в таком режиме кодировка фонтов Arial (Cyrillic), Arial (Baltic). Сохраняет только в Cyrillic - под той в которой кодировка уже.
Не совсем понятно в чем ошибка... Шрифты берутся те которые указаны в исходном MXL. Если там не указаны ни какие шрифты, тогда по умолчанию - Arial (Cyrillic), т.к. взять не где.
Ну вот в данном примере в диалоге можно выбрать язык - раскладку Windows с кодировкой. Это аналог 1251 (Cyrillic) и 1257 (Baltic). Но в самом Excel ее уже нет. Она была еще в старой версии 5.0/95 и через штатный метод сохранения получается нормально потом сохранить в новой версии.
Через данную компоненту или тот же Yoksel это уже не работает. Вот и думаю есть ли какие обходные пути. :-)
Распаковал содержимое архива в папку с базой.
Запустил register.
В процедуре "При начале работы системы" (в самом начале) :
ПодключитьВнешнююКомпоненту("AddIn.Moxel.Converter");
При запуске выдает:
Ошибка при инициализации объекта из компоненты <Неизвестная компонента>
Если написать:
ПодключитьВнешнююКомпоненту("v7Moxel.dll");
При запуске выдает:
Ошибка при создании объекта из компоненты <Неизвестная компонента> (отсутствует CLSID)
Если написать:
ЗагрузитьВнешнююКомпоненту("v7Moxel.dll");
При запуске выдает:
Ошибка при инициализации объекта из компоненты D:\Tega\Губин\БАЗЫ\Торговля+склад2007\v7Moxel.dll
Если запустить тестовую обработку, то пишет
Загружена компонента AddIn.Moxel.Converter
Создан объект "AddIn.Moxel.Converter"
Но файл через Файл - сохранить как в xlsx не сохраняет, пишет:
Не удалось загрузить файл или сборку "ClosedXML".
Прошу автора помочь.
Я видел, что есть обновления, но был уверен, что в публикации архив тоже обновляется.
Скажите, для всех пользователей теперь это будет работать, останется только в рабочей базе при начале работы инициацию прописать?
Есть вероятность что в макете большое количество пустых строк, которые в итоге не перенеслись в Excel.
Постараюсь поправить сегодня.
Идеально для анализа будет - если пришлете исходный MXL
Всячески пытался воспроизвести проблему, но мой конвертер выдает на выходе совершенно другой файл (приложил). В котором нет именованных диапазонов на другом листе. И он даже размером меньше.
Вы точно ни чем после сохранения не обрабатываете файл дополнительно? Подозрительно похоже на то что лист был скопирован из другого файла.
Как обычно формирую печатную форму, жму файл - сохранить.
Можете сделать простую обработку/отчет с фиктивными данными, которая будет формировать таблицу, на которой воспроизводится проблема?
Возможно проявляется при каких-то установленных параметрах макета...
Я имею в виду, что воспроизводится ошибка именно при программном формировании таблицы и не воспроизводится на готовом MXL файле.
Это то же решается.
Компонента написана на C#
На github - лежат исходники полностью в открытом доступе (актуальная ветка - epplus). Если заинтересуетесь - могу проконсультировать по доработкам, либо если доработки небольшие - могу сам сделать, безвозмездно
Работает пока хорошо, но обнаружил такую проблему. Когда картинка не подгружается в 1С - пишет что Общая файловая ошибка при доступе к *.jpg и на печатной форме остается пустая картинка. Так вот в таком варианте он не сохраняется ни в какую. Если же я удаляю вручную объект картинки то сохранение происходит нормально.
Я еще посмотрю можно ли что-то сделать в самом 1С если он выдает эту ошибку.
Можешь пож проверить почему так может быть что если 1С не загрузил картинку то он не сохраняет.
Ошибку не выдает - если в обычной ситуации при сохранении курсор нельзя нажать и нужно ждать и потом слевы внизу появятся проценты - 94-96% и потом уже можно. Это например займет какое-то время. То в этом случае все очень быстро - проценты не появляются и курсор становится доступным очень быстро.
(216)
Вчера обнаружил что такая ошибка связана с тем, что JPG файл имеет 32 bit глубину цвета и 1С его не может открыть.
Сегодня в одной печатной форме было 232 позиции и когда нажал сохранить - он начал что-то делать. Видно по загрузке CPU, но спустя какое-то время перестал сохранять и файл не сохранился. Ошибку никакую не выдал. Печально получилось.
Удалось глянуть? Я уже начал делать через прямой вывод в Excel - Excel.Application. Единственно проблема с Unicode. :-)
Внутри файлов которые не открываются что в итоге? Похоже на pdf?
(Внутри файлов которые не открываются что в итоге? Похоже на pdf?)
Внутри вообще не похоже на PDF, мусор какой-то.
Пример это начало фийла:
PK {?aVy#эd6 Ю [Content_Types].xml™™ µ“ЛNГ0E%тХnY „љvБc •(0Ш“ДЉ_тёЇїЗIК«
HteЏЇgо‰u3_о)¶I{WІџІќфJ»єd/л‡Й5+(ЃS`јГ’ђШr1_R‘{•¬I)ЬAІAД}@—•КG)—±d5ЉЛйфJHпє4IЭ¶�Яa“ЉЫбј]2Бh )c‰<Њчы,”]-~С·uкfrбM‡ивФ «Ф9<凉Zбџ,|Ui‰КЛЌН-њBDPФ &kxїrЪ
¦+€йlћ*цFм|l_ЅoyЇќ іич?щч"‰~™ќ„ТБ ЌQКїZ«»њи1·ЈDп›ПoН—¶]Ћѓ«їf•л3е"Єз;ДСЗъzб]фязв
PK {?aV�Ъл‹® ' _rels/.rels™™ ЌПБ‚0аWYz—Ѓcѓ‹1бjржVЦe›
oпЋb<xlъчыУІ^ж‰=С‡Ѓ¬Ђ"ЛЃЎU¤kЬЪЛо,DiµњИўЂФUyЕIЖtъБ–ф1єзAх8Лђ‘C›6щYЖ4zГќTЈ4Ичy~аюУЂЙ-А7є Ц®я±©л…gRЏmьQс•HІфЈЂeв/тгќhМ
ј*щжБк
PK {?aV%uiг U xl/workbook.xml™™
Случилось в один момент, тестил тестил, бился над проблемой, при программной выгрузки PDF почему-то не реагирует на ПараметрыСтраницы, ставит постоянно ориентацию Альбом, хотя и в оригинале таблицы Портрет и в ПараметрыСтраницы перед выгрузкой принудительно ставлю Портрет.
И в друг в какой-то момент не открывается PDF. Пробовал а разных таблицах, чтобы исключить глюк таблицы (таблицы с картинками, без и тд.).
Да? не вникал, но я пробовал открывать его через Exel не открыл, он не ругался на него, что не тот формат, формат ему нравился, но только долгого думал и вис мертво. Поэтому я и подумал что скорее всего какой-то не до эксель.
Разобрался, наверное мой косяк.
Я почему то решил что
"Конвертер.Записать(Каталог + "Тест.pdf", 3)" и "Таб.Записать(КаталогВременныхФайлов() + "Тест.PDF", 3)"
должны работать тождественно. Но Конвертер.Записать не смотрит на ПараметрыСтраницы, никак. Ни установленные через меню в конфигураторе, ни переданные программно непосредственно перед командой Конвертер.Записать. У него всегда Альбомная ориентация и маштаб 100%.
"Таб.Записать(КаталогВременныхФайлов() + "Тест.PDF", 3)" - Работает все ок, ну это в принципе понятно.
Вылечил, чисткой HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\НазваниеБазы\V7\ИмяПользователя\Moxel
не знаю как это связано, но после того как почистил эту ветку все заработало.
Осталось только победить ПараметрыСтраницы чтобы при программной выгрузке работали и все :)
Вот уж не думал, что придется обратиться с "дилетантским вопросом", но, никакие "танцы с бубном" не помогают...
По порядку:
Компонента давно и успешно работает на моем компе, наверное с самого момента ее публикации... Пережила кучу обновлений, сейчас функционал вполне устраивает.
Но, "мой комп" где она работает - винда 7 32 бита... А иногда приходится работать с 8-рочными базами клиентов, и адресуемой памяти 3.5 гб из имеющихся 8-ми, для этих задач катастрофически не хватает... Намучившись с одной из баз, после очередного вылета по нехватке памяти, решил, что пора завести 64 битную систему.
Принял решение, что пока, сносить то что успешно работает - не буду. Взял еще одну SSD-шку, подключил, и поставил на нее Win-10 64 бита. При включении компа, выбираю через горячую клавишу биоса с какого диска грузиться. Для восьмерки, стало хватать памяти, и проблема в принципе, можно сказать решилась.
Но, решил все-таки настроить на этой, по сути "новой машине", привычную для себя среду - что-бы можно было работать, без особой необходимости не перегружая комп с другого диска...
Получилось все - кроме этой компоненты. 7.7 работает, все остальные компоненты(а их у меня много используется - и ScanOpos, и FormEx, и 1С++, и еще несколько) - тоже зарегистрировал и работают.
Кроме этой. Тут - ни в какую... Что только не делал - register.cmd файл регистрации запускал, естественно от имени администратора, DEP включал/выключал, пробовал разные версии, и из поста (100), и (108), и из поста (174), и из самой публикации... Ставил и в каталог "BIN" 7.7(на том компе, где работает - именно так стоит), и в обдельный, "короткий" каталог - "C:\2007"(уж куда короче)... Результат один - ошибка при подключении ВК, выводится "0" в результат, и соответственно не работает...
При подклоючении в табло выводит: "Ошибка при создании объекта из компоненты <Неизвестная компонента> (отсутствует интерфейс IInitDone)"...
Скриншот прикреплен.
Первая строка ошибки - это при начале работы системы попытка подключения компооненты, вторая, точно такая-же, при старте Вашей тестовой обработки. Третья строка - тоже обработка выводит, но, там в обработке ошибка, должно быть написано, что "Компонента не загружена", так, как подключить - 0 возвращает. Править просто лень было, и так понятно... Ну, а последняя строка, само собой ошибка, так, как не удается создать объект :-(
Что-то с регистрацией в новой системе не то, что - понять не могу... Подскажете, куда копать?
PS Единственное - в новой системе ФреймВорк стоит, по умолчанию, это-же десятка(будь она не ладна :-( ), но, пока не ставил никакого MS Office - не успел пока до этого добраться, насколько он нужен для работы ВК - ? Может какие-то библиотеки из него используются?
Для PDF тоже ничего не ставил, может что-то нужно? (По сути, я в PDF только и сохраняю печатные формы из 1С)...
PSS Первый раз, несколько лет назад, когда только Вы ее выложили - проблем с регистрацией не было никаких, кмд запустил от админа, и все сразу заработало. Тут десятка 64 ни в какую ее принимать не хочет.
Добрый день.
1. Нужно посмотреть что выводится при регистрации.
2. Для последних версий нужен .Net 4.8 Возможно дело в этом.
Из офиса точно ничего не используется... Попробую воспроизвести на виртуалке.
ОС: Win10-x64, 1с 7.7, компоненты 1С++, Formex. Офис не установлен.
Условия верные?
1sqlite.dll
OpenFileDialogsManager.dll
VBCCR16.OCX
KeyState.dll
Но, они все есть и в старой системе, Win-7 32 бита, вроде никогда не конфликтовали, там все работает, в том числе и Ваша.
Сейчас скину.
Я хочу воспроизвести окружение,
А я Вашу применяю и в другой конфе, своей почти типовой УСН(клиентам счета в PDF-ки из нее сохраняю)...
Там, только штатные грузятся, ну и пытается грузиться Ваша.
Ее попробовал на новой системе - ошибка та-же.
Ее работоспособность я проверяю по своей форме алкогольной декларации, если все с ней нормально, то она красиво открывается, если она не работает или не найдена, то на форме бардак из реквизитов с разных слоев формы :-) специально убирать этот баг не стал, использую как фичу - индикатор, что ВК работает:-)
Чистая Win 10x64 с оригинального образа Microsoft
Ничего не установлено.
Папка bin 1С скопирована без установки.
Запущена 1С без прав администратора
1 попытка - запуск обработки без регистрации компоненты
Регистрация через cmd с правами администратора
2 попытка - запуск успешный. Из 1С при этом не выходил...
Возможно, версия винды косячная, я, честно говоря, даже не знаю, откуда ее взял... Возможно, какая-то сборка покоцанная, мне, когда понадобилось с проблемами в базе снеговика разобраться, время глубокая ночь была... Поставил быстренько, первое, что под руку подвернулось. Странно только, что все остальное работает нормально.
В общем, забью пока, а на выходных винду переставлю, поставлю с оригинального образа Майкрософт...
Вот, что в свойствах винды показывает:
И все-таки, это действительно винда кривая была...
Переставил сегодня с официального образа, созданного их родной утилитой на флэшку, и все завелось сразу :-)
Видать, чего-то в той сборке не хватало, или какие-то политики настроены косячно. Ну, да ладно. Вопрос решен.
Спасибо! :-)
Если разделитель целой и дробной части - точка, то всё ок, если запятая, то баг. Ниже картинка, где одно число было с запятой, а другое с точкой.
В версии Бета 0.9 (binary_0.9.zip) сохраняет правильно, но эта версия не работает на сервере 2022, а те что работают - сохраняет в неправильном формате. Плюс есть проблемы с центрированием строки в таблице, где эта строка объединена с несколькими столбцами.
В PDF сохраняет правильно!
В PDF сохраняет правильно!
Что за проблема с сервером 2022 ?
Компонента ведет себя нестабильно. Плюс к этому "ломает" что-то "внутрях"...
Вот скрин оригинальной печформы
Открыл на пустой конфигурации через тестовую обработку - моксель соответствует скрину.
Сохранил в ПДФ, вот скрин - съехала верхняя надпись, разлиновка шапки, ширина/шрифт строк ТЧ
.
вот так вот.. пок ане прижилось...
тоже не все гладко у этой компоненты... Йокселем гораздо правильнее, сравнивать можно со скрином оригинальной печформы (первое сообщение в этом пакете сообщений)
На гитхабе - более свежая, чем на ИС? по версиям файлов (сведения) - вроде одно и то же, хотя размеры и даты отличаются, причем с ИС дата изменения более свежая...
Ошибка сохранения таблицы в XLSX: System.ArgumentOutOfRangeException: Заданный аргумент находится вне диапазона допустимых значений.
Имя параметра: MaxDegreeOfParallelism
в System.Threading.Tasks.ParallelOptions.set_MaxDegreeOfParallelism(Int32 value)
в v7Moxel.Moxel.ExcelWriter.ExcelWriter.Save(Moxel moxel, String filename)
в Moxel.Moxel.SaveAs(String filename, SaveFormat format, Int32 PaperWidth, Int32 PaperHeight)
в Moxel.SaveWrapper.SaveToExcel(IntPtr pSheetDoc, String FileName)
Перехваченная запись в .xls 324
И еще. Есть файл XLSM я его открываю, открытые поля программно заполняю потом через ОЛЕ пытаюсь сохранить в этот формат с макросами (XLSM). Но те кому мы его отправляем пишут что ломается файл хотя я его открываю без проблем в Эксель потом и вроде как он с макросами
taskRunner - только если в процессе падает с нехваткой памяти. Просто зависло и никаких ошибок не выдало?
(297)
Сохраняете же через OLE? Компонента никаким образом не вмешивается в работу OLE-сервера офиса...
А большую многостраничную таблицу для чего в пдф сохранять? Чтобы глазками посмотреть? Отправляй в HTML или в мокселе чистом или в экселе - откроют и посмотрят. Смысл в ПДФ гнать?
Запись в PDF происходит через сохранение в HTML, а потом через wkhtmltopdf.dll.
Все это в один поток из-за особенностей при сохранении стилей css. Поэтому большие документы с автовысотой строки будут сохраняться долго.
Возможно в будущем сделаю получение уже вычисленной высоты.
Картинок не оч много но дело в них. Если убрать логотип, то не вылетает, хотя тоже криво выгружается
Картинки меняют пропорцию еще при сохранении в mxl, ну или при его открытии. Если напечатать таблицу через bullzip pdf printer с картинками все норм, но нет прозрачности, а надо печать наложить
Либо сделать единую картинку факсимиль+печать.
Если все же планируете использовать эту компоненту - тогда пришлите пример на почту - я посмотрю вечеро.
Имя журнала: Application
Источник: .NET Runtime
Дата: 15.11.2025 13:38:30
Код события: 1026
Категория задачи:Отсутствует
Уровень: Ошибка
Ключевые слова:Классический
Пользователь: Н/Д
Компьютер: 1CSM
Описание:
Приложение: 1cv7s.exe
Версия платформы: v4.0.30319
Описание. Процесс был завершен из-за необработанного исключения.
Сведения об исключении: System.AccessViolationException
в Pechkin.PechkinBindings.wkhtmltopdf_convert(IntPtr)
в Pechkin.PechkinStatic.PerformConversion(IntPtr)
в Pechkin.SimplePechkin.Convert(Pechkin.ObjectConfig, Byte[])
в Pechkin.Synchronized.SynchronizedPechkin.<Convert>b__4(Pechkin.IPechkin, Pechkin.ObjectConfig, Byte[])
Сведения об исключении: System.Reflection.TargetInvocationException
в System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)
в System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[])
в System.Delegate.DynamicInvokeImpl(System.Object[])
в Pechkin.Synchronized.Util.SynchronizedDispatcherThread.Run()
в System.Threading.ThreadHelper.ThreadStart_Context(System.Object)
в System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
в System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
в System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
в System.Threading.ThreadHelper.ThreadStart()
Xml события:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name=".NET Runtime" />
<EventID Qualifiers="0">1026</EventID>
<Level>2</Level>
<Task>0</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2025-11-15T10:38:30.000000000Z" />
<EventRecordID>276516</EventRecordID>
<Channel>Application</Channel>
<Computer>1CSM</Computer>
<Security />
</System>
<EventData>
<Data>Приложение: 1cv7s.exe
Версия платформы: v4.0.30319
Описание. Процесс был завершен из-за необработанного исключения.
Сведения об исключении: System.AccessViolationException
в Pechkin.PechkinBindings.wkhtmltopdf_convert(IntPtr)
в Pechkin.PechkinStatic.PerformConversion(IntPtr)
в Pechkin.SimplePechkin.Convert(Pechkin.ObjectConfig, Byte[])
в Pechkin.Synchronized.SynchronizedPechkin.<Convert>b__4(Pechkin.IPechkin, Pechkin.ObjectConfig, Byte[])
Сведения об исключении: System.Reflection.TargetInvocationException
в System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)
в System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[])
в System.Delegate.DynamicInvokeImpl(System.Object[])
в Pechkin.Synchronized.Util.SynchronizedDispatcherThread.Run()
в System.Threading.ThreadHelper.ThreadStart_Context(System.Object)
в System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
в System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
в System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
в System.Threading.ThreadHelper.ThreadStart()
</Data>
</EventData>
</Event>
Понизил версию либы. Пробуйте эту версию. Можно просто распаковать поверх старой без перерегистрации.
Дополнительно поставлен .net 3.5, .net 4.6.2
Сделана пустая файловая база.
1. Воспроизвести падение на оригинальной сборке v13 не удалось. Все сохраняется нормально
2. Старая версия wkhtmltox0.dll действительно делает PDF в увеличенном масштабе и через раз. Не нужно ей пользоваться.
Почему у вас падает - не ясно.
И если оно запускается - значит установленной версии .net достаточно.
Может какое-то защитное ПО что-нибудь ломает?
Еще можно попробовать перебрать разные версии библиотеки wkhtmltopdf (
Нужно скачать 32x-версию. Из архива вытащить "wkhtmltox.dll" и скложить в папку с компонентой, переименовав в wkhtmltox0.dll поверх той что в комплекте. Регистрировать заново не нужно. Нужно чтобы 1С в момент замены не была запущена.
Начать можно с этих:
-
-
Процедура ПриОткрытии()
вк = ПодключитьВнешнююКомпоненту("AddIn.Moxel.Converter");
Если вк = 1 Тогда
Сообщить("Загружена компонента AddIn.Moxel.Converter", "i");
Иначе
Сообщить("Не загружена компонента AddIn.Moxel.Converter", "!");
КонецЕсли;
Конвертер = СоздатьОбъект("AddIn.Moxel.Converter");
Сообщить("Создан объект ""AddIn.Moxel.Converter""", "i");
Сообщить("Количество потокв конвертации :" + Конвертер.КоличествоПотоковКонвертации, "i");
Каталог = КаталогВременныхФайлов();
Таб = СоздатьОбъект("Table");
Таб.Вывести();
Таб.Показать();
КонецПроцедуры ПоказатьЕсли таблица читается через перехват - то все параметры вычитываются из установленных параметров страницы.
Вообще "НоваяСтраница()" должно работать корректно.
В коде на сколько я помню - обрабатываются разрывы страниц.
Но в процессе обнаружил еще один косяк - при подключении Таблицы не вычитываются параметры страницы, что приводит к автомасштабированию и автоотступам. Пока в процессе починки т.к. там не просто добраться до самого объекта в памяти.
Буду дома - обновлю версию компоненты, пока с автомасштабом. В качестве временного решения добавлю метод установки параметров аналогично штатному.
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 1026032
Создание 21.03.19 23:10
Обновление 22.09.26 03:21
Просмотры 35377
Загрузки 88
Рейтинг
21
Комментарии 347
Код открыт Да
Рубрики Разработка внешних компонент Загрузка и выгрузка в Excel
Кому Разработчик
Тип файла Компонента, плагин (dll, vbs,..)
Платформа 1С:Предприятие 7.7
Конфигурация 1C77
Операционная система Windows
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)