Имя: Пароль:
1C
1C 7.7
v7: Сохраняем mxl в Excel 2007
0 MadDAD
 
05.03.19
14:09
Накидал тут компоненту для сохранения таблиц в xlsx, html и pdf

Работает немного медленнее чем Yoksel.
Сохраняет в xlsx с использованием OpenXML, т.е. без установленного офиса.
Понимает картинки, OLE-объекты конвертирует в рисунки. У картинок с установленным фоном "Авто" делает белый цвет прозрачным.
В PDF сохраняет пока что только в ландшафте, в скором времени доделаю настройки страницы.
В html так же с прозрачностью и сохранением пропорций и форматирования.

https://github.com/DmitryDreytser/v7Moxel/releases

Релиз по ссылке скачать, развернуть куда-нибудь, запустить Register.cmd с правами администратора.
Требуется установленный .Net 4.6.1
1 Ёпрст
 
05.03.19
14:11
Может, проще было компоненту Ужаста подшамани ь?
2 MadDAD
 
05.03.19
14:16
(1) Наверное, но мне на шарпе проще было с нуля сделать.

Ёксель чтобы только собрать нужно наизнанку вывернуться, ну или у меня руки не туда заточены.
3 Djelf
 
05.03.19
14:53
(2) Да, собрать Йоксель занятие не для слабонервных.
Если понадобится, могу дать комплект который собирается без проблем.
4 mistеr
 
05.03.19
14:58
А для восьмерки сгодится?
Несколько листов умеет?
5 mistеr
 
05.03.19
14:58
(3) Лучше собери да выложи.
6 MadDAD
 
05.03.19
15:00
(4) Восьмерку читать не умеет. пока что.
Если кто поможет с форматом восьмерошного мокселя, то добавлю.
7 MadDAD
 
05.03.19
15:01
(3) Пожалуй не помешало бы.

Может получится оформить как "плагин" к ёкселю.
8 Djelf
 
05.03.19
19:17
(5) А я выложил http://catalog.mista.ru/public/75881/
Еще вопросы есть?
9 Смотрящий
 
05.03.19
19:25
(8) Не туда выложил
10 trdm
 
05.03.19
19:26
(1) А ты пробовал найти 9-й интеловский компилятор?
Я не нашел.
11 Garykom
 
гуру
05.03.19
19:26
Было бы идеально если вместо работы с типовым СоздатьОбъект("Таблица") был реализован внутри ВК свой объект эмулирующий встроенные с теми же методами.

И реализующий правильный метод Записать(<ИмяФайла>,<ТипФайла>)
12 trdm
 
05.03.19
19:27
+(10) Да к тому же она собирается omake-ком, который самому собирать надо.
13 Djelf
 
05.03.19
19:33
(9) Почему и зачем не туда?
Куда выложил туда и выложил - дальше не моя проблема.
14 Попытка1С
 
05.03.19
19:48
(0) Красава, будем тестить.
15 trdm
 
05.03.19
20:08
(0) > Требуется установленный .Net 4.6.1

не люблю дотнет.
срет в реестр, на старых компах замедление реально чувствовалось при чтении реестра.
16 Garykom
 
гуру
05.03.19
20:14
(15) Сейчас даже часто драйвера (от видеокарты или ssd) .Net требуют установленный
17 Garykom
 
гуру
05.03.19
20:15
(16) ssd в смысле контроллер на мамке
18 Сияющий в темноте
 
05.03.19
20:34
во-первых,требует интерфейсная часть,так как без .net нормального интерфейса нет.
компонента же на .net требует запущенную байт машину,что не лучшим образом сказывается на занятой памяти,и опять же,вызовы функций идут не напрямую,а через посредников.
19 trdm
 
05.03.19
20:44
(16) да, мелкософт совсем опустился.
20 Garykom
 
гуру
05.03.19
20:45
(18) Да нынче любая типовая конфа 1С 8.3 сожрат в 100 раз больше памяти чем ВК на .net
21 Garykom
 
гуру
05.03.19
20:47
(19) Нет, просто на C# + .Net очень удобно писать, реально удобно.
С++ это отстой полнейший для задач которые не требуют выжимания все что можно из железа.

Я вот думал на C++ ВК свою наваять но уже передумал, банально сделаю вызов менеджед кода из унменеджед начинки NativeAPI ВК 1С
22 trdm
 
05.03.19
20:54
(21) C++ - отличный язык. А с фреймверками на нем писать - одно удовольствие.

а тебе лечиться надо. у тебя маркетинговая аллергия.
23 Garykom
 
гуру
05.03.19
20:57
(22) Знаешь за что я люблю 1С ?
Потому что в отличие от реализации учетных систем на чем то еще не надо эти долбаные фреймворки искать и следить когда они сдохли и искать/кодить замену.

Вот .Net (можно писать и на C++ под .Net но C# намного лучше) это такая платформа 1С с кучей готовых фреймворков на борту, которая обновлялась планово в свое время (пока не уперлась что больше почти ничего не надо).
24 trdm
 
05.03.19
21:02
удобно/неудобно, я не доверяю мелкософту.
и продуктами его стараюсь не пользоваться.
25 Сияющий в темноте
 
05.03.19
21:10
на нравится .net берите джава,те же танцы вокруг байт машины.
просто на .net зависимости собираются в момент исполнения,а на плюсах все нужнл собрать самому.
хотя,та же технология Com не требует собирать все.

а на плюсах пишется,если хочется,чтобы работало быстро,и без косяков.

опять же,байт машина сьедает гораздо больше памяти,чем программа на плюсах. хотя,проецирование файлов в память,порты завершения и т.п.функционал,от которого только в плюсах польза,вопрос,он кому то нужен?
26 Бертыш
 
05.03.19
21:10
(11) На 7.7 то? На 7.7 никакая религия не мешает заюзать 1С++ и переопределить любой класс включая класс "Таблица" со всеми или с некоторыми любыми его методами
27 MadDAD
 
06.03.19
08:47
(26) Ну у меня давно таблица перегружена. В частности "Записать" умеет в эксель через Йоксель и в PDF через PDFCreator.

А (0) было написано в порядке тренировки, ну и возможно применения в дальнейшем.
28 MadDAD
 
06.03.19
08:49
(11) Есть такая мысль. Можно перехватить CSheetDoc::SaveAs(). Но как раз тут и проявляется C#
29 trdm
 
06.03.19
12:07
(4) Восьмерка умеет хорошо в pdf и xls.
так есть ли смысл?
30 ДенисЧ
 
06.03.19
12:40
(29) "Восьмерка умеет хорошо в pdf"
Я бы не сказал. Были случаи, когда 8шные пдф не читались клиентом. Пришлось внешнюю тулзу прикручивать
31 MadDAD
 
21.03.19
15:55
(11) Добавлен перехват штатной записи в XLS.

Работает при программной и интерактивной записи. В диалоге выбора файла для сохранения, в списке форматов "xls" заменяется на "xlsx".

Включается сразу после загрузки компоненты.

Добавлено автоматическое определение ориентации страницы при сохранении в PDF.

С 8.x пока не совместимо.

Добавлена обработка с примерами

https://github.com/DmitryDreytser/v7Moxel/releases/tag/0.2
32 Злопчинский
 
21.03.19
15:58
это хорошее дело.
33 Garykom
 
гуру
21.03.19
16:05
Плиз огромное можно сделать ВК для записи (и чтения желательно тоже) docx ?
34 Злопчинский
 
21.03.19
16:06
(33) хм я както невнятно представляю как моксель можно в ворд переложить...
35 Garykom
 
гуру
21.03.19
16:15
(34) В виде таблицы

Но речь не про моксель а про ФорматированныйДокумент или HTML.
36 MadDAD
 
21.03.19
16:40
(35) Каким образом это предполагается использовать? Моксель то можно в виде таблицы воткнуть в Word, но с форматированием при этом будут проблемы.
37 Garykom
 
гуру
21.03.19
16:54
(36) Документы по шаблонам/макетам с подстановками.

Тот же ТабДок на основе Макета, только макет в виде файлов docx.
38 MadDAD
 
21.03.19
16:58
(37) А в чем тогда будет принципиальное отличие от Word.Application и переменных документа/замены ключевых слов/т.п ?
39 Garykom
 
гуру
21.03.19
17:03
(38) Нету офиса и даже либре.
Суть в том что есть только docx файлы на входе и они же готовые на выходе.
40 Garykom
 
гуру
21.03.19
17:04
(39) Нужен конвертер в виде независимой ВК
docx > "визуальное html представление" > docx
41 Garykom
 
гуру
21.03.19
17:05
(40)+ Вместо визуального html можно ФорматированныйДокумент или нечто свое, с чем можно работать средствами 1С.
Создавать или прочитать и сформировать требуемый html.

Т.е. копаться в формате xml что там внутри docx это долго.
42 MadDAD
 
21.03.19
17:36
(41) Идею понял, но пока слабо представляю как это реализовать. В частности как должны выглядеть шаблоны, и каким образом они будут заполняться.

А в html можно и сейчас выгружать. Я реализовал в отличие от штатного сохранения мокселя довольно точное повторение форматирования.
43 MadDAD
 
21.03.19
17:40
(41) К стати, используя методику Sergino с использование .net объектов, из 1С можно пользоваться всей мощью ClosedXML. А вот там хоть Word хоть Excel. И все без установленного офиса. У меня, кстати, сохранение в Excel именно так и реализовано. Т.е. наличие офиса не обязательно.
44 MadDAD
 
21.03.19
17:41
45 Garykom
 
гуру
21.03.19
18:02
(43) Да про "Ъ" в курсе.
У меня мысля была немного даже расширить это дело, сделать некую универсальную ВК к которой можно подключать "плагины" написанные позже, отдельно.
Пусть не напрямую объекты из 1С создавать и использовать, а просто функции вызывать написанные на других языках.

Т.е. рядом с dll(1) по стандарту ВК 1С кладется обычная dll(2) по некоему своему очень простому стандарту.
И вот dll(1) умеет определять наличие рядом dll(2), читать из них методы, сообщать о них в 1С и получая вызов из 1С транслировать его в нужную dll рядом.
46 MadDAD
 
21.03.19
18:51
(45) Если Dll(2) не .net а обычная c экспортированными процедурами, то все решается при помощи DynamicWrapperX. Он умеет оборачивать экспортные функции библиотек. А остальное делается внутри 1С.
47 Garykom
 
гуру
21.03.19
18:59
(46) Мне надо не только .Net но еще и jar сборки на Java и возможно еще что типа Python и т.д.
48 Garykom
 
гуру
21.03.19
19:00
(47)+ Проблема что куча готового кода по разным языкам раскидана.
49 Garykom
 
гуру
21.03.19
19:04
(48)+ Думал уже про другой вариант типа готового http сервера к которому плагины и 1С по http обращается.
И наоборот ВК для 1С которая тоже свой http сервер поднимает (не надо публиковать из 1С) для ОбработкаВнешнегоСобытия от сторонних частей на чем то другом.
50 Djelf
 
21.03.19
19:20
А еще для конвертации можно использовать https://github.com/sbraconnier/jodconverter/
51 Garykom
 
гуру
21.03.19
19:21
(50) Осталось только LibreOffice оформить в виде ВК ))
52 Djelf
 
21.03.19
19:33
(51) Ты внимательно посмотрел? "Это" поднимается как сервис и пережевывает форматы туда сюда.
Но идея интегрировать ОО или ЛО хороша!
Осталось только найти того кто это сделает ;)
53 Garykom
 
гуру
21.03.19
19:47
(52) LibreOffice Portable ?
54 Злопчинский
 
22.03.19
00:06
(52) нафига этих полумертвых осликов, лучше WPS
55 mistеr
 
22.03.19
09:38
Есть еще https://github.com/sheetjs/js-xlsx - реализация на чистом JS, даже обещают совместимость с IE.

Может кто-то поженит ее с ПолеHTMLДокумента и не нужно никаких ВК?
56 MadDAD
 
08.04.19
09:25
Добавлено чтение параметров страницы.
параметры станицы - формат бумаги, оринетация, поля используются теперь при сохроанении в XLSX и PDF.

http://catalog.mista.ru/public/1026032/
57 trdm
 
08.04.19
09:53
(31) > Работает при программной и интерактивной записи. В диалоге выбора файла для сохранения, в списке форматов "xls" заменяется на "xlsx".

А надо бы наоборот, для расширения совместимости.
58 MWWRuza
 
гуру
08.04.19
10:28
(57)А надо бы наоборот, для расширения совместимости.

??? Оно-же штатно, без всяких компонент, в *.xls сохраняет...
59 MadDAD
 
08.04.19
10:54
(57) Наоборот это как, там штатно и есть xls - Excel 95?
60 MadDAD
 
16.04.19
12:33
Обновлена версия на гитхабе и инфостарте.

Конвератция больших фалов вынесена в отдельный процесс для экономии памяти 1С.

Переносы страниц теперь сохраняются при конвертации в Excel 2007.
61 MadDAD
 
22.04.19
15:15
Последние исходники в репозитарии - https://github.com/DmitryDreytser/v7Moxel

Из последних изменений
- исправлен пересчет ширины колонки из moxel в Excel.
- местами картинки выгружались сжатыми по вертикали. Исправлено.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.