1с 77 сохранить в pdf

Обновлено: 05.07.2024

Внешняя компонента, умеет сохранять таблицы в формате xlsx, html и PDF.

При загрузке перехватывает штатное интерактивное и программное сохранение в Excel, HTML и TXT. В диалоге выбора файла заменяет вариант выбора ".xls" на ".xlsx" и ".txt" на "PDF"

Компонента подключается так:

Для добавления поддержки формата выгрузки в Excel 2007 и PDF этого достаточно.

Поддерживается сохранение рисунков, надписей и внедренных OLE объектов.

Белый фон картинок станет прозрачным при сохранении (как на первом скриншоте), если в свойствах узора картинки установить цвет "Авто".

Для выгрузки в html и PDF можно создать объект конвертера :

У объекта имеется метод для включения/отключения перехвата штатного сохранения:

В архиве находится обработка с примерами.

Для установки нужно распаковать архив на локальный диск, и запустить register.cmd с правами администратора. Два раза нажать Enter.

upd 08.04.2019 Новая версия

Добавлено чтение настроек страницы.

Для xlsx применяется масштаб и "вписать в страницу по ширине".

Добавлен перехват штатного сохранения в HTML

Теперь штатное сохранение таблицы в HTML перенаправляется в компоненту аналогично xlsx

upd 16.04.2019 Новая версия

Добавлены разрывы страниц при сохранении в Excel.

Для экономии памяти приложения 1С конвертация таблиц, занимающих больше 2 Мб вынесена во внешний процесс.

upd 24.05.2020 Новая версия

Если в ячейке есть символ переноса строки, то при экспорте в Excel устанавливается галка "Перенос по словам"

upd 21.06.2020 Новая версия

Исправлена ошибка GDI+ если в таблице есть объекты "Картинка".

Доработано отображение прогресса при длительных сохранениях

upd 23.06.2020 Новая версия

Доработано форматирование объединенных ячеек.

В варианты сохранения добавлен формат PDF вместо TXT

Для программного сохранения нужно вызвать:

При интерактивном сохранении пункт "Текстовый файл" заменен на "PDF"

upd 25.06.2020 новая версия

Форматирование в PDF доработано.

Исправлена ошибка с чтением параметров страницы.

Увеличилась скорость сохранения в Excel больших файлов.

Т.к. разработка судя по всему спросом не пользуется - исходники выложены на

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

(4) Отчет 23 000 строк. Файл xlsx с нулевым размером, появляется мгновенно. И, потом, задумывается на всегда. (более 10 минут ждал - надоело, снял задачу.) Может я что-то не так делаю? Не большие ПФ, сохраняет вообще без проблем. Комп - винда 7, 32 бита. Памяти по максимуму, что может эта система видеть. Физически 8 гигов.
По трем кнопкам, в диспетчере задач, виден процесс, который виснет:
По трем кнопкам, в диспетчере задач, виден процесс, который виснет:

Внизу в 1С в строке статуса прогресс конвертации виден?

Сейчас, прибью процесс, сохраню моксель и выложу.

+(28) Если прибить этот процесс, то управление в 1С возвращается, аварийно закрывать не приходится, но екселевский файл так и остается нулевого размера.

(30)
Могу посмотреть как и прошлый раз с тестовым файлом.

Какой объем у файла если сохранять в MXL?

У меня тестовый на 80 мб сохранялся порядка 6 минут на wun7 x64.

Проблема в объединенных ячейках в каждой строке.
Либа, отвечающая за формат xlsx очень медленно выполняет объединение ячеек. Пока не придумал как решить.
Гарантированно помогает если убрать объединение ячеек.

В последней версии поправил индикацию прогресса.

Будет ли нормально сохранятся картинки, помещенные в рамках ячеки мокселя? при штатном сохранении в эксель - при формировании печформы в 1С - все норм. При открытии сохранееной печформы в экселе - вставленные картинки имеют измененные визуальные размеры. (5) это хорошо, проверим.
" и запустить register.cmd с правами администратора."
- в сервер вин64 2008 - зарегистрируется без дополнительного шаманства? это хорошо, проверим.
" и запустить register.cmd с правами администратора."
- в сервер вин64 2008 - зарегистрируется без дополнительного шаманства?

Да на нем тестировалось

Есть клиент у него стоит 1С 7.7.
Жалоба при сохранении печатной формы в эксель обрезает текст до 255 символов.
Как я понял связано с тем что семерка сохраняет в 95 экселе.
Можете расписать в публикации по шагам, что нужно из окружения, компонент и кода сделать, чтобы появилось такое меню как у вас на картинке для экселя 2007?
Судя из описания нужно скачать компоненту, запустить рядом батник. И допилить в конфе при старте строку кода которую вы указали, или же внешней обработкой это запускать при надобности? (8) можно поставить йоксель и сохранять через него, он в варианте 2007 сохраняет.
плюс к этому плюшки в виде группировки стандартных отчетов с плюсиками слева как в экселе (9) сказать админам, чтобы поставили ПО и тогда семерка будет работать без проблем? Жалоба при сохранении печатной формы в эксель обрезает текст до 255 символов.
Как я понял связано с тем что семерка сохраняет в 95 экселе.
Можете расписать в публикации по шагам, что нужно из окружения, компонент и кода сделать, чтобы появилось такое меню как у вас на картинке для экселя 2007?

в данном случае сработает и

После этого в меню сохранения вариант "Excel" заменится на "Excel 2007"
И сохранение в html будет тоже делаться через компоненту. HTML сохраняется в виде аналогичном исходному документу а не так как это делает сама 1С.

Никакие внешние обработки не нужны.

Если же нужно сделать сохранение в pdf - тогда можно либо воспользоваться перехватом меню при помощи RWidjets и сделать свою программную реализацию выбора варианта сохранения, либо сделать дополнительную кнопочку на панели инструментов - как советует CheBurator в ( 13 )

это ВК для 77.
набери в яндексе "проект Йоксель". там в итоге ВК скопировать в папку с экзешника 77 (или в папку с базой) и загрузить ВК при старте системы.
здесь на портале тоже поищи - ставишь кнопку на тулбар и она делает группировки для типовых отчетов ТИС.
а если сам программишь, то возможности йокселя сам применишь тоже всякие. (11) так в итоге тоже самое. Что я поставлю ВК автора и надо будет строчку кода писать при старте или запускать внешнюю обработку ее активирующую, что Йоксель. Но Йоксель еще надо установить как ПО. А эксель 2007 уже стоит.
Сейчас проверил - сохранил текст более 255 символов в ячейке из 2013 экселя в 95. Открываю и текст отбрезан до 255 символов. (12) немножко иначе.
эта публикация требует Net 4.x
он не везде может быть установлен.
Йоксель в этом смысле проще - с ним при установке возни меньше. вдобавок Йоксель кроме сохранения в эксель имеет и другие возможности (чтение экселя 2-3 строками кода, работа с табличным документом и прочее всякое полезное).
установка Йокселя "как ПО" - проста, это может и сам разработчик 1С сделать?
- скопировать йоксель в папку с программой или в папку с базой (я предпочитаю в папку с программой, чтобы не плодить разные версии в разных базах)
- прописать строку загрузки йокселя (это можно сделать и в обработке которая формирует печформу, например) при старте 1С
- запустить 1С один раз с правами администратора и выполнить загрузку йоксела (предыдущий пункт). Вполне возможно что запуск под правами администратора и не понадобится.
.
затем уже, если возможностей йокселя не будет хватать\чтото не то - тогда пробовать эту разработку. (14) ага, сам йоксель найдешь в яндексе "проект йоксель"
всяких фич полезных потом здесь на портале
Без ВК получается сохраняем в mxl и открываем через ПО (установки не требует). Далее уже можно пересохранить в лист эксель 2003.
Для чего ВК тогда? (16) вот это внедри в конфу.
если все это сложно ;-) - ну тогда, да, ставь эту разработку. (17) 2 строка кода ничего не дает. Все равно сохраняет в 95 экселе.

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


Привлекло то, что одной строчкой загрузки компоненты, просто подменяется устаревший формат на новый. В Йокселе конечно возможностей больше, но, тут простота встраивания. Работает, в принципе - хорошо. Но. что не так с переносом текста в ячейках-? Такое ощущение, что не корректно понимает объединенные по вертикали ячейки, с выравниванием "по центру", и по вертикали, и по горизонтали.
Вот:
+(21) Думаю, если в самом мокселе убрать объединенные две строки в заголовках колонок, и просто сделать одну строку двойной высоты, то все будет работать. Но, это в этом примере так можно, а бывает, когда без объединенных по вертикали ячеек не обойтись.


+(21)(22) Нет, тут дело в другом - не переносится свойство ячейки "Переносить по словам". Если в екселе зайти в свойство ячейки, и поставить эту "галочку", то все становится красиво. И в то-же время, в самой таблице документа, переносы отрабатывают, галка туда попадает автоматом. Но, там строки одиночные, без объединения по вертикали.
+(21)(22) Нет, тут дело в другом - не переносится свойство ячейки "Переносить по словам". Если в екселе зайти в свойство ячейки, и поставить эту "галочку", то все становится красиво. И в то-же время, в самой таблице документа, переносы отрабатывают, галка туда попадает автоматом. Но, там строки одиночные, без объединения по вертикали.

Могу посмотреть что там происходит если пришлете MXL для теста.

Вот, во вложении.
Там и моксель исходный, и то, что на выходе получается.
Там в этих проблемных ячейках - свойство "Контроль" в положении "Авто" стоит:


Похоже, это не обрабатывается.

Там и моксель исходный, и то, что на выходе получается.

Доработал так. Если в ячейке есть символ переноса строки, то при экспорте в эксель устанавливается галка "Перенос по словам"

Ага. Так вроде все отлично!

Вот, моксель в архиве. Может, по тому, что цвет фона ячеек отличный от стандартного, белого? +(33) Не, выделил лист перед сохранением, убрал желтый фон - ни на что не повлияло, все равно висит. (34)Фон тут ни при чем.
На скорость может существенно влиять автовысота, т.к. для каждой строки тогда считается высота. Это затратно.
Посмотрю как будет время.

(38) Здесь по скорости тоже все нормально с автовысотой. Проблема в чем-то другом.

Проблема с чтением таблицы из памяти 1С. Йоксель для конвертации сериализует таблицу во временный буфер в памяти и оттуда заново читает. У меня реализовано похожим образом, но конвертация вынесена во внешний x64 процесс, чтобы не отжирать память у 1С.

(39) йоксель еще Ужос по моей просьбе дорабатывал был глючок когда много одинаковых картинок в таблице (падал/проблемы в йокселе были когда отчет "универсальный журнал документов" сохранял, там пиктограммки по строке в виде папочек были)
. я вот не уверен что это изменение вошло в общий релиз который сейчас окончательный. (33) проверил у себя.
у меня сохранил Йокселем за 2-3 сек. (Сервак интел ксеон Е5530, 2.4ГГц)
формат в экселе - 1-в 1 как моксель (скрин не выкладываю поэтому) Ради эксперимента, я все-таки дождался. Чуть меньше часа(

52 минуты), она все-таки сохранилась.

И строка шапки, шестая, переносы не сработали.

Ну, да, через Йоксель сохраняется быстро, вообще без проблем.
Но, в этой разработке привлекает именно простота использования, как для пользователя - вообще ни о чем думать не надо, просто в штатном меню пункт подменен, так и для программиста - только ВК загрузить. С Йокселем так не получается, это по любому отдельная обработка, хоть и с бОльшими возможностями.

Может у меня проблема в том, что система 32 бита? Исходный файл значительно больше, чем ОЗУ. Свопит не корректно? С типовыми снеговиками постоянно проблемы, особенно при обновлениях. Может и здесь что-то "родственное"-?

Ну, да, через Йоксель сохраняется быстро, вообще без проблем.
Но, в этой разработке привлекает именно простота использования, как для пользователя - вообще ни о чем думать не надо, просто в штатном меню пункт подменен, так и для программиста - только ВК загрузить. С Йокселем так не получается, это по любому отдельная обработка, хоть и с бОльшими возможностями.

Может у меня проблема в том, что система 32 бита? Исходный файл значительно больше, чем ОЗУ. Свопит не корректно? С типовыми снеговиками постоянно проблемы, особенно при обновлениях. Может и здесь что-то "родственное"-?

Проблему с длительным сохранением пока решить не удалось.
Но сложность точно не в расчеты высоты. Библиотека, отвечающая за сохранение в Excel работает довольно медленно, пока замену ей не придумал, но переделал вывод прогресса сохранения, чтобы было видно что 1С не зависла.

Так же можно попробовать удалить taskrunner.exe. Новая версия компоненты тогда будет сохранять фйл без использования временного файла.

Из мелкого на скриншотах надпись "ПДВ:" - если ячейка маленькая и в ней текст выровнен по правому краю, то он выводится как будто выровнен по левому краю.

(44) Добрый день! С картинками проблем быть не должно. При сохранении в Эксель тоже выдает ошибку? Можете прикерпить исходную таблицу в формате 1С -mxl, чтобы я мог повторить ошибку?

Картинка в таблице выведена стандартными средствами 1С или какой-то сторонней библиотекой?

По выравниванию - видимо так происходит из-за того что слишком маленькая ячейка. Это тоже в PDF или в Excel?

на скриншотах надпись "ПДВ:" - если ячейка маленькая и в ней текст выровнен по правому краю, то он выводится как будто выровнен по левому краю.

Доработано в последней версии.

Выравнивание в PDF. Вывод стандартно средствами 1С.
И еще особенность - если загрузить сохраненную таблицу в обработку ТестMoxel.ert "Загрузить таблицу", то в открывшейся таблице все рисунки продублированы, один над другим в два слоя. Если открыть стандартно, то все ок.
В табличных файлах верхнюю строку с рисунками-кнопками можно удалить. Пробовал и с ней и без - одинаково.
tmpD515.tmp.mxl - записанная после открытия обработкой с продублированными рисунками. Дополнение
В первой строке таблицы рисунки-кнопки с "Расшифровкой" типа "Списокзначений". Так вот при загрузке из памяти, возникает ошибка
"<<?>>,"Действие">,,"УдалитьНачальнаяСтрока">,,"УдалитьКоличествоСтрок">,,"КонтрагентНаименование">,,"НазваниеДокумента">,,"ФорматРисунка">>>
Неопознанный оператор"
В принципе, строку с кнопками я удаляю перед сохранением, поэтому это не критично. И при чтении таблицы из памяти Конвертер.ЗагрузитьИзПамяти(Таб);, - открывается диалог выбора файла. Думал, что будет загружаться "Таб". созданная при открытии обработки, или это потому, что она пустая? По поводу диалога открития файла - тупо не заметил в Процедуре ИзПамяти() строчку - ВЫбратьФайл(); :)
А дублирование рисунков - в Процедуре ВыбратьФайл() сначала таблица открывается, а потом поверх выводится

Но проблему это не решило, все равно "В GDI+ возникла ошибка общего вида."
PS:
Поюзал таблицу в обработке - там картинки вставлены как OLE объект и сохраняется без проблем. А если вставить как картинку, возникает вышеуказанная ошибка.

(48) Пока не было времени посмотреть. Постараюсь на выходных.

Если интересно - исходники выложены на гитхабе, в статье есть ссылка на репозитарий.

Благодарю! Установил обновленную версию - работает!

Добрый день!
Еще ошибка. То, что там долго сохраняет большие таблицы, это конечно плохо, но не смертельно, не так это и часто надо. Но, ломает формат ячеек с объединением по горизонтали - это вообще не порядок. Во вложении архив акта в мокселе и то, что получается в экселе. Да, скачал из поста №50, удалил taskrunner.exe из папки бин и скопировал все из архива туда, с заменой. (57) Я конечно уже надоел своими придирками. Но, ИМХО в Ваших интересах "вылизать" продукт до максимально-идеального состояния.
Вот, следующая порция косячков. Выравнивание в ячейке по правому краю(в PDF, в эксель вроде нормально). И отсутствие линий, для "подписей".
Все в архиве во вложении. На картинке, дополнительно, на что обратить внимание.(Без налога(НДС): уехало. ) Ваших интересах "вылизать" продукт до максимально-идеального состояния

Честно говоря, нет. Т.к. продукт узкоспециализированный, предназначен для отмирающей платформы, я не продаю его за деньги, а исходники лежат в общем доступе. Но, все же, я как автор заинтересован в завершенности разработки. Именно поэтому я не бросаю проект и продолжаю его по мере возможности дорабатывать, хотя от 1С я уже год как отошел. И я очень благодарен за тестирование и обратную связь , потому как у меня самого нет возможности все протестировать в т.н. "боевых" условиях с разнообразными вариантами применения.

Но хватит лирики. Больше технических подробностей богам технических подробностей:
PDF формируется при помощи движка WebKit из отрендеренного HTML, поэтому присутствуют ограничения связанные с форматированием таблиц в HTML. Именно поэтому текст из PDF тут можно копировать и сам файл занимает значительно меньше места чем в случае с Yoksel, который делает PDF из набора картинок.

По поводу уехавшей надписи - в данном случае текст "Без налога (НДС)." не влезает в соответствующую ячейку, у ячейки указано выравнивание по правому краю. 1С и Excel в таком случае отображают текст со смещением в соседнюю левую ячейку. При формировании таблицы в Html я пока не придумал как сымитировать такое же поведение. Если есть какие-нибудь мысли по этому поводу - буду рад услышать. Пока у меня в голове только один вариант - посчитать ширину текста, и если он не влезает - объединить текущую ячейку с левой. Не особо оптимально.

По поводу отсутствия подписей в Excel - да, это баг, подписи сделаны "картинками" - надписями, они вроде бы корректно обрабатываются в HTML и PDF. С этим постараюсь разобраться.

Из фишек последней версии - переделан перехват сохранения. Штатный формат TXT заменен на PDF. Т.е. поддержка PDF теперь так же делается в одну строку.

Все платформы 1С, начиная с версии 8.2, а следовательно 8.3 и 8.4 могут сохранять табличные документы, печатные формы и отчеты в формате PDF, причем для этого не нужно устанавливать другие программы.

Как сохранить из 1С 8.2 в PDF

Для этого нужно подготовить документ к печати и перейти в меню «Файл — Сохранить как…» и в поле «Тип файла» выберите Документ PDF (*.pdf). Для примера сохраним в программе 1С Управление торговлей, редакция 10.3 печатную форму «Приходный кассовый ордер (ПКО)»:

Сохранить из 1С в Pdf

Как сохранить документ из 1С 8.3 в файл PDF

В платформе 8.3 сохранение происходит аналогично, только здесь меню «Файл — Сохранить как…» находится под кнопочкой со стрелкой внизи в поле «Тип файла» выберите Документ PDF (*.pdf). Дальше, аналогично – в поле «Тип файла» выбрать «Документ PDF.

Если пункт меню «Сохранить как…» недоступен в 1С, то сначала нажмите левой кнопкой мыши в любом месте документа, который хотите сохранить и после этого пункт меню должен стать доступным:

Сохранить из 1с 8.3 в Pdf

Куда пропало меню «Сохранить» в 1С 8.3.15

После обновления платформы на версию 8.3.15 изменилось расположение пунктов «Сохранить как…», теперь для его вызова нужно нажать на кнопку с тремя вертикальными точками, в правом верхнем углу формы:

Пропал пункт Сохранить в 1С 8.3.15

Как программно сохранить табличный документ в PDF?

Часто программистам нужно программно сохранить табличный документ 1С в формате PDF. Для этого нужно использовать метод Записать() и в качестве второго параметра указать ТипФайлаТабличногоДокумента.PDF

Читайте также: