Как в 1с сохранить в пдф
Перейти к содержимому

Как в 1с сохранить в пдф

  • автор:

Как сохранить счет из 1С в pdf

Чтобы сохранить созданный и проведенный Счет на оплату покупателю необходимо зайти в журнал Счета покупателям (раздел ПродажиСчета покупателям) сохранить счет из 1с в pdf (1).png
Выбрать нужный счет и вывести печатную форму на экран с помощью кнопки Печать сохранить счет из 1с в pdf (2).png
При необходимости, в настройках организации можно загрузить подпись и печать, которые будут отображаться на счете (раздел ГлавноеОрганизации) сохранить счет из 1с в pdf (3).png
Для вывода подписи и печати необходимо установить галку в соответствующем поле сохранить счет из 1с в pdf (4).png
Для сохранения счета в формате pdf нажимаем на кнопку, показанную на рисунке и устанавливаем галку в поле Документ Adobe PDF (.pdf) сохранить счет из 1с в pdf (5).png
Завершаем кнопкой Сохранить.

Поделиться ответом

Комментарии

  • Вконтакте
  • Facebook

Ирина Дидушок

Автор ответа:

Ирина Дидушок

Бухгалтер-методолог

Не нашли ответа на свой вопрос?
Задайте его нам! Задать вопрос

Другие ответы

  • Внедрение 1С
  • Внедрение 1C:ERP
  • Внедрение БИТ.Финанс
  • Разработка на 1С
  • Внедрение 1С:Медицина
  • Внедрение 1С:Розница для сети
  • Переход ЗУП 2.5 — 3.1

Сопровождение

  • Аутсорсинг программистов 1С
  • Техподдержка 1С
  • Поддержка БИТ.Финанс
  • Аутсорсинг расчета зарплаты и кадрового учета

Как в 1с сохранить в пдф

записать табличный документ

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

ANSITXT (ANSITXT)
DOCX (DOCX)
HTML (HTML)
HTML3 (HTML3)
HTML4 (HTML4)
MXL (MXL)
MXL7 (MXL7)
ODS (ODS)
PDF (PDF)
TXT (TXT)
XLS (XLS)
XLS95 (XLS95)
XLS97 (XLS97)
XLSX (XLSX)

Содержит варианты форматов файлов для сохранения табличного документа. Используется для определения параметра метода Записать.

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Возможен обмен с сервером.
См. также:

ТабличныйДокумент, метод Записать

Если запускать как ВнешнееСоединение или Сервер, то сохраняет только в MXL и PDF.

ТабличныйДокумент (SpreadsheetDocument)
Записать (Write)
Синтаксис:

Тип: Строка.
Имя файла, в котором сохраняется табличный документ.
(необязательный)

Тип: ТипФайлаТабличногоДокумента.
Формат, в котором будет сохранен табличный документ.
Значение по умолчанию: MXL
Описание:

Записывает табличный документ в файл.

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание:

При работе на сервере, веб клиенте или через внешнее соединение нет возможности сохранять в формате XLS95.
Не поддерживается сохранение в PDF картинок типа Метафайл.
При работе на веб-клиенте вызов метода выполняет обращение к серверу.
Пример:

Как в 1с сохранить в пдф

Описание ошибки:
При выводе печатной формы для просмотра перед печатью она отображается в одном экземпляре на одной странице. Но при сохранении с помощью пункта меню «Файл» — «Сохранить» или «Сохранить как. » в формате pdf сохраняется в задублированном виде на двух страницах, т.е. повторяется дважды.

1С 8 при сохранении в pdf двоит, задваивается, троит, затраивает печатная форма

Т.к. эта проблема проявлялась лишь на одном рабочем месте, то сначала было предположено, что проблема содержится в пользовательских файлах, связанных с базой, т.е. есть ошибка появилась в них. Но удаление базы из списка баз и ее добавление для устранения ошибок кэшей пользователя базы не дало положительных результатов.

Можно поразмыслить и предположить, что 1С при конвертировании документа в pdf делает это не как-то напрямую, а использует возможный виртуальный принтер. При этом, т.к. принтер виртуальный, но все же используются параметры печати. Поэтому нужно проверить через меню «Файл » — «Печать. «, когда печатная форма сформирована и выведена для просмотра, параметры печати.

1C 8 при сохранении в pdf документ дублируется, задваивается в одном файле

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

Нажатие на изображении увеличит его
1С 8 задвоение при сохранении, криво сохраняет, в pdf печатную форму

При таком понимании возможно предположить, что настройки печати принтера могут влиять и на другие параметры при конвертации, сохранении документа в pdf. А так же не исключено, что и настройки в самом драйвере принтера.

Иначе, если это не поможет, то убедиться, что для печатной формы в коде не указывается значение для свойства табличного документа «КоличествоЭкземпляров» отличное от 1.

Выгрузка в PDF из 1С (Средствами OpenOffice)

Возникла задача отправлять счета почтой. PDFcreator не подошёл поскольку не удалось вместить счёт на одну страницу по ширине. Решил попробовать OpenOffice. Как сохранять в PDF нашёл быстро, а вот как уместить счёт на одну страницу вширь искал долго.
В версии 1С 8.2.232 появилась возможность сохранять табличный документ в xls файл на сервера под линуксом. А вот работать с Опеном офисом из-под линукса пока не получается. Собственно комментари ненужны. Вот весь код. Самое интересное это бодание со стилями страниц в Опене Офисе. Жаль что этот фрагмент работает только на клиенте. На сервере вопрос не решается
Код 1C v 8.2 УП

 Процедура КнопкаВыполнитьНажатие(Кнопка) 
Если Письмо.Основание.Пустая() Тогда
Возврат
КонецЕсли;

// Открыть OpenOffice
Попытка
ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
Исключение
Возврат // опен офис не установлен :-(
КонецПопытки;

// получим печатную форму и запишем её во временный XLS файл
Заказ = Письмо.Основание.ПолучитьОбъект();

//Получим печатную форму
Расшифровка=Новый Структура;
Расшифровка.Вставить("СсылкаНаВнешнююОбработку",Константы.ПФСчетаДляКлиента.Получить());
Расшифровка.Вставить("ВидПечатнойФормы",Перечисления.ВидыДополнительныхВнешнихОбработок.ПечатнаяФорма);
Расшифровка.Вставить("НомерСтроки",1);
тд = УниверсальныеМеханизмы.НапечататьВнешнююФорму(Заказ, Расшифровка);

ВременныйФайл =ПолучитьИмяВременногоФайла();
ВременныйФайлXLS =ВременныйФайл + ".xls";
ВременныйФайлPDF =ВременныйФайл + ".pdf";
тд.Записать(ВременныйФайлXLS, ТипФайлаТабличногоДокумента.XLS97);

// Преобразовываем временный xls файл В PDF
Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");

НастройкиОткрытия = Новый COMSafeArray("VT_VARIANT", 1);
PropertyValue = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
PropertyValue.Name = "Hidden";
PropertyValue.Value = Истина;
НастройкиОткрытия.SetValue(0, PropertyValue);
ВременныйФайлXLS_какУРЛ = "file:///" + СтрЗаменить(ВременныйФайлXLS, "\", "/"); // приводим путь к файлу из виндового формата в опен офисный

// Откроем файл в опене офисе
ОпенОфис = Desktop.LoadComponentFromURL(ВременныйФайлXLS_какУРЛ, "_blank", 0, НастройкиОткрытия);

//ПараметрыСтраницы = ОпенОфис.createInstance("com.sun.star.style.PageStyle");
//ПараметрыСтраницы.ScaleToPagesX = 1;
//
// Установим масштаб, чтобы счёт помещался на одной странице вширь
// страниц почему-то много, поэтому устанавливаем масштаб для всех
Стили = ОпенОфис.StyleFamilies.getByName("PageStyles");
Для поз = 0 по Стили.count - 1 Цикл
МойСтиль = Стили.getByIndex(поз);
МойСтиль.ScaleToPagesX = 1; // уместить на одной странице вширь
//МойСтиль.PageScale = 50; // масштаб 50%
КонецЦикла;

НастройкиСохранения = Новый COMSafeArray("VT_VARIANT", 1);
PropertyValue = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
PropertyValue.Name = "FilterName";
PropertyValue.Value = "calc_pdf_Export";
НастройкиСохранения.SetValue(0, PropertyValue);

ВременныйФайлPDF_какУРЛ = "file:///" + СтрЗаменить(ВременныйФайлPDF, "\", "/"); // приводим путь к файлу из виндового формата в опен офисный
ОпенОфис.storeToURL(ВременныйФайлPDF_какУРЛ, НастройкиСохранения); // сохранили PDF файл
ОпенОфис.close(-1);
ОпенОфис = Неопределено;

// С опеном офисом разобрались. Прикрепляем вложение к письму и удаляем временные файлы.
//Файл = Новый Файл(ВременныйФайлPDF);
объектПисьмо = Письмо.ПолучитьОбъект();
стрВложение = объектПисьмо.Вложения.Добавить();
стрВложение.ИмяФайла = "Счёт " + Строка(Заказ.Номер) + ".pdf";
стрВложение.Файл = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ВременныйФайлPDF));
объектПисьмо.Записать();
Попытка
УдалитьФайлы(ВременныйФайлXLS);
УдалитьФайлы(ВременныйФайлPDF);
Исключение
КонецПопытки;

КонецПроцедуры

Автор: Трактор

Функция позволяющая выполнить выгрузку табличного документа в PDF средствами OpenOffice
Код 1C v 8.х

 // Функция превращает табличный документ в PDF документ 
// Возвращаемое значение: тип "Строка" - имя созданного PDF файла, 0 - в случае ошибки
// Параметры: ДанныеВыгрузки - Табличный или текстовый документ, который нужно выгрузить в PDF
// ПутьВыгрузки - тип "Строка", путь для сохраниения PDF файла (без имени и расширения файла)
// ИмяФайлаБезРасширения - тип "Строка", имя для вновь сформированного PDF файла
// Тестировалось на OpenOffice 3.x
Функция ВыгрузитьТабличныйДокументВPDF(ДанныеВыгрузки, ПутьВыгрузки, ИмяФайлаБезРасширения)
Если НЕ ЗначениеЗаполнено(ПутьВыгрузки) Тогда
ПутьВыгрузки = КаталогВременныхФайлов();
КонецЕсли;
ПутьВыгрузки = ?(Прав(ПутьВыгрузки, 1) = "\", ПутьВыгрузки, ПутьВыгрузки + "\");

РасширениеXSL = ".xls";
РасширениеPDF = ".pdf";
ПолноеИмяФайлаXLS = ПутьВыгрузки + ИмяФайлаБезРасширения + РасширениеXSL;
//Выгрузка данных печати в файл XLS
#Если Клиент Тогда
Состояние("Создание временного файла. ");
#КонецЕсли
Попытка
Если ТипЗнч(ДанныеВыгрузки) = Тип("ТабличныйДокумент") Тогда
ДанныеВыгрузки.Записать(ПолноеИмяФайлаXLS, "XLS");
ИначеЕсли ТипЗнч(ДанныеВыгрузки) = Тип("ТекстовыйДокумент") Тогда
ДанныеВыгрузки.Записать(ПолноеИмяФайлаXLS, "XLS");
Иначе
#Если Клиент Тогда
Сообщить("Данные для выгрузки переданы в неподдерживаемом формате. Дальнейшее выполнение невозможно." + Символы.ПС + ОписаниеОшибки());
#КонецЕсли
Возврат 0;
КонецЕсли;
Исключение
#Если Клиент Тогда
Сообщить("Произошла ошибка при выгрузке временного файла. Возможно ошибка доступа к папке, в которую происходит запись." + Символы.ПС + ОписаниеОшибки());
#КонецЕсли
Возврат 0;
КонецПопытки;

Попытка
#Если Клиент Тогда
Состояние("Открытие компоненты OpenOffice. ");
#КонецЕсли
ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");

Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl");
Скрипт.language = "javascript";
Скрипт.AddObject("OpenOffice", ServiceManager);

//Открытие временного файла без отображения его окна
#Если Клиент Тогда
Состояние("Открытие временного файла. ");
#КонецЕсли
Скрипт.eval("Массив=new Array()");
Массив = Скрипт.eval("Массив");
Скрипт.eval("Массив[0] = OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
Скрипт.eval("Массив[0].Name = 'Hidden'");
Скрипт.eval("Массив[0].Value = true");

Скрипт.AddCode("function SetItem(ind,val)");
Скрипт.AddObject("ServiceManager",ServiceManager);
Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");
Document = Desktop.LoadComponentFromURL("file:///" + ПолноеИмяФайлаXLS, "_blank", 0, Массив);

//Сохранение в PDF встроенными средствами OpenOffice
#Если Клиент Тогда
Состояние("Запись в PDF. ");
#КонецЕсли
Скрипт.eval("Массив2=new Array()");
Массив2 = Скрипт.eval("Массив2");
Скрипт.eval("Массив2[0] = OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
Скрипт.eval("Массив2[0].Name = 'FilterName'");
Скрипт.eval("Массив2[0].Value = 'writer_pdf_Export'");

ПолноеИмяФайлаPDF = "file:///" + СтрЗаменить(ПолноеИмяФайлаXLS, РасширениеXSL, РасширениеPDF);
ПолноеИмяФайлаPDF = СтрЗаменить(ПолноеИмяФайлаPDF, ВРег(РасширениеXSL), РасширениеPDF);
ПолноеИмяФайлаPDF = СтрЗаменить(ПолноеИмяФайлаPDF, "\", "/");

Document.storeToURL(ПолноеИмяФайлаPDF, Массив2);
Document.close(-1); //Закрыть документ

//Контрольная очистка переменных
Document = Неопределено;
Desktop = Неопределено;

//Удаление временного файла
#Если Клиент Тогда
Состояние("Удаление временного файла. ");
#КонецЕсли
Попытка
УдалитьФайлы(ПолноеИмяФайлаXLS);
Исключение
#Если Клиент Тогда
Сообщить("Произошла ошибка при удалении временного файла. Возможно, потребуется удалить его вручную." + Символы.ПС + ОписаниеОшибки());
#КонецЕсли
КонецПопытки;

ПолноеИмяФайлаPDF = СтрЗаменить(ПолноеИмяФайлаPDF, "file:///", "");
ПолноеИмяФайлаPDF = СтрЗаменить(ПолноеИмяФайлаPDF, "/", "\");
#Если Клиент Тогда
Состояние("Выгрузка выполнена.");
Предупреждение("Выгрузка выполнена." + Символы.ПС + ПолноеИмяФайлаPDF);
#КонецЕсли
Возврат ПолноеИмяФайлаPDF;
Исключение
Document.close(-1);
#Если Клиент Тогда
Предупреждение(ОписаниеОшибки());
#КонецЕсли
Возврат 0;
КонецПопытки
КонецФункции

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *