Конвертация в ПДФ из 1С 7.7 через 1С 8.х

01.06.16

Интеграция - Перенос данных 1C

Инет пестрит вариантами конвертаций из 1С7.7 в PDF, но устраивающего варианта так и не нашел.
Сел, подумал и  написал свой конвертер на 1С 8.х

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Конфигурация 1С 8: "Конвертер ПДФ"
.1CD 1,13Mb
6
6 Скачать (1 SM) Купить за 1 850 руб.

Собственно решение на поверхности:

1. Сохраняем табллицу 1С 7.7 в mxl

2. При помощи 1C 8.х конвертируем mxl в pdf (вызов через командную строку)

 

код для 1С 7.7 (взято из рабочей внешней формы):

		Если Вопрос("Конвертировать в ПДФ для отправки по email?","Да+Нет")="Да" Тогда  
			ТекИмя = ВосстановитьЗначение("ИмяФайлаСчетаДляEmail");
			Если СокрЛП(ТекИмя) = "" Тогда
			    ТекИмя = "Счет.pdf";
			КонецЕсли;
		    ТекКаталог = ВосстановитьЗначение("КаталогФайловДляEmail");
			Если ФС.ВыбратьФайл(1,ТекИмя,ТекКаталог,"Укажите имя файла для email","PDF (*.pdf) |*.pdf","pdf")=1 Тогда
			    СохранитьЗначение("ИмяФайлаСчетаДляEmail",ТекИмя);   
			    СохранитьЗначение("КаталогФайловДляEmail",ТекКаталог);   
				ПолноеИмя = ""+ТекКаталог+"\"+СтрЗаменить(ТекИмя,".pdf",".mxl");
				ИсхТабл.Записать(ПолноеИмя);
				ЗапуститьПриложение("""C:\Program Files (x86)\1cv8\8.3.8.1652\bin\1cv8.exe"" enterprise /f""E:\1C_Base_v8\КонверторПДФ"" /c"""+ПолноеИмя+"""");
			КонецЕсли;
		КонецЕсли;

Код для 1С 8.х (в Модуль Обычного Приложения):

Процедура ПриНачалеРаботыСистемы()
	
	ИмяФайла = СокрЛП(ПараметрЗапуска);
	
	ТекФайл = Новый Файл(ИмяФайла);
	Если ТекФайл.Существует() Тогда
	
		ИмяНовогоФайла = СтрЗаменить(ТекФайл.ПолноеИмя,".mxl",".pdf");
		НовыйФайл  = Новый Файл(ИмяНовогоФайла);
		
		ТабДок = Новый ТабличныйДокумент;
		ТабДок.Прочитать(ТекФайл.ПолноеИмя);
		ТабДок.АвтоМасштаб = Истина;
		
		ПереместитьФайл(ТекФайл.ПолноеИмя,ИмяНовогоФайла); //трём mxl
		ТабДок.Записать(ИмяНовогоФайла,ТипФайлаТабличногоДокумента.PDF);
			
	КонецЕсли; 
	
	ЗавершитьРаботуСистемы();
	
	
КонецПроцедуры

Всё!

1C 7.7 PDF

См. также

SALE! 10%

Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист Платформа 1С v7.7 Платформа 1С v8.3 1С:Бухгалтерия 7.7 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Бухгалтерия 7.7 в БП 3.0 | Продукт является развитием и исправлением ошибок стандартной обработки для выгрузки данных из 1С Бухгалтерии 7.7 в Бухгалтерию 3.0 | Перенос из 7.7 является сложным, и на рынке сложно найти специалистов 1С по "семерке" - сотрудники помогут вам выполнить переход в рамках техподдержки предлагаемого переноса данных!

55778 50200 руб.

26.05.2020    35943    11    78    

17

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Оперативный учет 7.7 1С:Торговля и склад 7.7 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Управленческий учет Платные (руб)

Переносится из типовой конфигурации «Торговля и Склад», реакции 9.2 платформы «1С:Предприятие 7.7» в типовую конфигурацию «Бухгалтерия предприятия», редакции 3.0 платформы «1С: Предприятие 8.3» следующие документы и их операции (с соблюдением всех соответствующих проводок): Поступления товаров и услуг (в т.ч. комиссия), Реализации товаров и услуг (в т.ч. комиссия), ПКО и РКО, выписки банка, счета фактуры (выданные и полученный), Возвраты от покупателей и поставщику, Заявка Покупателя, Инвентаризация и другие (всего 28 видов документов, смотрите описание, приложенное к обработке)

13188 руб.

30.06.2014    66791    108    112    

118

Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист Платформа 1С v8.3 Оперативный учет 7.7 1С:Торговля и склад 7.7 1С:Бухгалтерия 3.0 Бухгалтерский учет Управленческий учет Абонемент ($m)

Обработка и правила обмена данными для выгрузки документов и всех связанных с ними справочников из 1С7.7 ТиС 9.2 в 1С8.3 БП 3.0 через файл XML. В типовых конфигурациях уже есть такое решение. Это немного доработанные правила и сама обработка выгрузки, добавлена возможность устанавливать отбор по выгружаемым документам по Фирме, Контрагенту, Складу, Проекту, Автору, ЮрЛицу. А также это внешняя обработка, что даёт возможность адаптировать её под нетиповую ТиС. Обработка и правила тестировались на платформах: 1С: Предприятие 7.7 и 1С: Предприятие 8.3.18.1334. На типовых конфигурациях: «Торговля + склад», редакция 9.2 (7.70 1004) и «Бухгалтерия предприятия» редакция 3.0 (3.0.96.30).

1 стартмани

13.08.2021    9939    73    Kuzya_brаtsk    8    

11

Перенос данных 1C Программист Платформа 1С v7.7 Платформа 1С v8.3 Платформа 1C v8.2 1С:Управление торговлей 10 1С:Комплексная 7.7 Россия Управленческий учет Платные (руб)

Начните вести учет в УТ 10.3! Перенесите все свои данные в УТ 10.3 в любом месяце года и продолжите вести учет! Программа перенесёт любое количество баз с документами и остатками в больших количествах. Обработка выгрузки выполнит проверку исходных данных и сформирует отчет о найденных ошибках в справочниках и документах. Партии переносятся с себестоимостью. Штрихкоды номенклатуры загружаются. Цена переносится. Автор консультирует.

8400 руб.

17.03.2021    16325    5    13    

6

Зарплата Перенос данных 1C Программист Бухгалтер Бухгалтерский учет 7.7 Сложные периодические расчеты 1С:Бухгалтерия 7.7 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Как известно, Бухгалтерия 7.7 не имеет штатной возможности для обмена с ЗУП 3.1. Данная разработка пригодится тем, кто перешел с ЗиК 2.3 на ЗУП 3.1, но вынужден по каким-то своим причинам оставаться на Бухгалтерии 7.7.

18000 руб.

29.09.2020    14090    2    0    

5

Перенос данных 1C Программист Платформа 1С v7.7 Платформа 1С v8.3 1С:Торговля и склад 7.7 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Обработка позволяет выгружать данные из ТиС 7.7 в конфигурации 8.3 для сдачи отчетности, для переноса данных при переходе на 8.3, для организации обмена внутри компании при использовании разных версий 1С в структурных подразделениях или формирования отгрузочных накладных для клиентов.

6000 руб.

18.05.2020    24513    70    39    

43

Перенос данных 1C Программист Платформа 1С v7.7 Платформа 1С v8.3 1С:Конвертация данных Бесплатно (free)

При переходе на новую версию 1С в период параллельной эксплуатации может возникнуть необходимость обратной конвертации данных (по правилам КД версии 2.1) из 1С:Предприятие 8.3 в 1С:Предприятие 7.7 для переноса данных из 1С:Предприятие 8.3 в 7.7. Сделать это поможет следующая инструкция по КД2 о том, как создать новую конвертацию из 8.3 в 7.7, сохранить модуль и правила загрузки данных, сделать загрузку данных. КД2.

17.10.2019    16280    ksnik    0    

16

Загрузка и выгрузка в Excel Перенос данных 1C Программист Пользователь Платформа 1С v7.7 Платформа 1С v8.3 1C:Бухгалтерия 1C77 1С:ERP Управление предприятием 2 Абонемент ($m)

Описание технологии загрузки любых адресов из 1С 7.7 с разложением по ФИАС в современные конфигурации 1C 8.3 на примере ERP. Предлагаемый способ просто чудо, он гарантирует результат, он очень простой и качественный! Моя обработка является синтаксическим анализатором, который подставляет в строку грязного адреса выражение "Дом №" и "Корпус", благодаря чему грязные адреса 7.7 сами очень хорошо раскладываются по значимым полям ФИАС - заполняется область, город, улица, дом, корпус.. все раскладывается само с помощью встроенного механизма современных конфигураций 1С 8.3, который написали сами сотрудники фирмы 1С!

1 стартмани

16.08.2019    19987    19    ksnik    12    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. CheBurator 3140 01.06.16 21:02 Сейчас в теме
осталось вместо любого бесплатного ПДФ принтера взять платную восьмерку...
2. transt 1 08.06.16 06:50 Сейчас в теме
(1) CheBurator, Сейчас почти все официальную бухгалтерию на 8ке ведут...
Из-за горстки клиентов у которых 7ки остались приходится иногда голову греть.
3. transt 1 08.06.16 06:53 Сейчас в теме
На сейчас выяснены следующие неудобства: разделитель страниц игнорируется, т.е. в ПДФе получается всё слитно независимо от исходника
4. Ветер в поле 3 12.06.16 08:52 Сейчас в теме
Так чем не устроил Йоксель? Работает быстро, корректно. Есть только пара нареканий: в этих PDF не работает поиск и качество заточено для просмотра на экране - для распечатки на принтере видна зернистость.
Вот мой вариант сохранения в PDF. Он интересен тем, что есть автоподбор ширины для A4.
Функция глПолучитьСтандартныеМетаданныеPDF(Заголовок="", Тема="", Автор=0, КлючевыеСлова=0, ГенераторОригинальногоДокумента=0, ГенераторДокументаPDF=0) Экспорт
	
	спМД = СоздатьОбъект("СписокЗначений");
	спМД.ДобавитьЗначение(СокрЛП(глОсновнаяФирма.ПолнНаименование), "Автор");
	спМД.ДобавитьЗначение("1С:Предприятие 7.7", "ГенераторОригинальногоДокумента");
	спМД.ДобавитьЗначение("Йоксель", "ГенераторДокументаPDF");
	спМД.ДобавитьЗначение("", "КлючевыеСлова");
	
	спМД.ДобавитьЗначение(Заголовок, "Заголовок");
	спМД.ДобавитьЗначение(Тема, "Тема");
	
	Если ТипЗначенияСтр(Автор) = "Строка" Тогда
		спМД.Установить("Автор", Автор);
	КонецЕсли;
	
	Если ТипЗначенияСтр(КлючевыеСлова) = "Строка" Тогда
		спМД.Установить("КлючевыеСлова", КлючевыеСлова);
	КонецЕсли;
	
	Если ТипЗначенияСтр(ГенераторОригинальногоДокумента) = "Строка" Тогда
		спМД.Установить("ГенераторОригинальногоДокумента", ГенераторОригинальногоДокумента);
	КонецЕсли;
	
	Если ТипЗначенияСтр(ГенераторДокументаPDF) = "Строка" Тогда
		спМД.Установить("ГенераторДокументаPDF", ГенераторДокументаPDF);
	КонецЕсли;
	
	спМД.ДобавитьЗначение(Заголовок, "Заголовок");
	
	Возврат спМД;
	
КонецФункции //глПолучитьСтандартныеМетаданныеPDF

//*****************************************************************************
Функция глКонвертироватьPDF(Таб, ИмяФайла, Знач спМетаданных="") Экспорт
	Перем ЧЧ, ММ, СС;
	
	ТабДокумент = СоздатьОбъект("ТабличныйДокумент");
	ТабДокумент.ЗагрузитьИзТаблицы(Таб);
	
	//автоопределение ширины PDF-файла
	ШиринаТаблицыВСимволах = 0;
	Для К = 1 По ТабДокумент.ШиринаТаблицы() Цикл
		ШиринаТаблицыВСимволах = ШиринаТаблицыВСимволах + ТабДокумент.Область(1, К).ШиринаСтолбца();
	КонецЦикла;
	
	//масштабируем исходя из 567 твипов в 1 см. Коэф. 116.2 в одном символе определен экспериментально
	ШиринаСтраницыВТвипах = Макс(11907, Окр(ШиринаТаблицыВСимволах * 116.2));
	Отступы = Окр(567 * ШиринаСтраницыВТвипах / 11907);
	
	Конвертер = СоздатьОбъект("Йоксель.ГрафическийКонвертер.PDF");
	Конвертер.ВысотаСтраницы = Окр(ШиринаСтраницыВТвипах * 297 / 210);
	Конвертер.ШиринаСтраницы = ШиринаСтраницыВТвипах;
	Конвертер.КоличествоБитНаПиксел = 24;
	Конвертер.Документ = ТабДокумент;
	Конвертер.ПолеСлева = Отступы;
	Конвертер.ПолеСверху = Отступы;
	Конвертер.ПолеСправа = Отступы;
	Конвертер.ПолеСнизу = Отступы;
	
	Если ПустоеЗначение(спМетаданных) = 1 Тогда
		спМетаданных = глПолучитьСтандартныеМетаданныеPDF();
	КонецЕсли;
	
	Данные = Конвертер.СтандартныеМетаданные;
	Данные.Автор = спМетаданных.Получить("Автор");
	Данные.Заголовок = спМетаданных.Получить("Заголовок");
	Данные.Тема = спМетаданных.Получить("Тема");
	Данные.КлючевыеСлова = спМетаданных.Получить("КлючевыеСлова");
	Данные.ГенераторОригинальногоДокумента = спМетаданных.Получить("ГенераторОригинальногоДокумента");
	Данные.ГенераторДокументаPDF = спМетаданных.Получить("ГенераторДокументаPDF");
	
	ДатаСоздания = ТекущаяДата();
	ВремяСоздания = ТекущееВремя(ЧЧ, ММ, СС);
	Данные.УстановитьДатуСоздания(ДатаГод(ДатаСоздания), ДатаМесяц(ДатаСоздания), ДатаЧисло(ДатаСоздания), ЧЧ, ММ, СС);
	
	Конвертер.ЗаписатьВФайл(ИмяФайла);
	
	Возврат 1;
	
КонецФункции //глКонвертироватьPDF
Показать
Slypower; +1 Ответить
5. transt 1 12.06.16 14:05 Сейчас в теме
(4) Ветер в поле, подозреваю, что есть ещё вариантов 20 "приготовления подобного супа".

Личное отношение к Йокселю: проект давно не поддерживается, пожелания про зернистость не исправили, авторов не найти, что там ещё может быть в этой "шкатулке" неизвестно, откуда скачать оригинальный Йоксель в данных реалиях - загадка.

Данная статья просто идея таким же 1Сникам как я сам. Каков будет конечный "рецепт" - пусть решает каждый сам.
6. Nickmssm 25.06.21 16:14 Сейчас в теме
Спасибо, воспользовались вашим вариантом, плюс склеили с другим, вопрос стоят, как 3 документа положить в два файла pdf(первый документ в 1 файл и два документа во второй файл):

Процедура ПриНачалеРаботыСистемы()
    ИмяФайла = СокрЛП(ПараметрЗапуска);
	
	Если СтрНайти(ИмяФайла, "mxl") > 0 тогда
	
		ТекФайл = Новый Файл(ИмяФайла);
	    Если ТекФайл.Существует() Тогда
	    
	        ИмяНовогоФайла = СтрЗаменить(ТекФайл.ПолноеИмя,".mxl",".pdf");
	        НовыйФайл  = Новый Файл(ИмяНовогоФайла);
	        
	        ТабДок = Новый ТабличныйДокумент;
	        ТабДок.Прочитать(ТекФайл.ПолноеИмя);
	        ТабДок.АвтоМасштаб = Истина;
	        
	        ПереместитьФайл(ТекФайл.ПолноеИмя,ИмяНовогоФайла); //трём mxl
	        ТабДок.Записать(ИмяНовогоФайла,ТипФайлаТабличногоДокумента.PDF);
	            
	    КонецЕсли; 
	
	Иначе
		ИмяФайлаИстина = ИмяФайла + "АКТ_Заказ_.pdf";
		ИмяФайла1 	= ИмяФайла + "Заказ_.mxl";
		ИмяФайла2 	= ИмяФайла;
		
		ИмяФайла 	= ИмяФайла + "АКТ_.mxl";
		ТекФайл 	= Новый Файл(ИмяФайла);
		ТекФайл1 	= Новый Файл(ИмяФайла1);
		
         Пакет = Новый ПакетОтображаемыхДокументов;

         Пакет.КоличествоЭкземпляров = 1;
         Пакет.РазборПоКопиям = Истина;
		 Если ТекФайл.Существует() Тогда
	    
	        ИмяНовогоФайла = СтрЗаменить(ТекФайл.ПолноеИмя,".mxl",".pdf");
	        НовыйФайл  = Новый Файл(ИмяНовогоФайла);
	        
	        ТабДок = Новый ТабличныйДокумент;
	        ТабДок.Прочитать(ТекФайл.ПолноеИмя);
	        ТабДок.АвтоМасштаб = Истина;
	        
	        ПереместитьФайл(ТекФайл.ПолноеИмя,ИмяНовогоФайла); //трём mxl
	        ЭлементПакета = Пакет.Состав.Добавить();
	        ЭлементПакета.Данные = ПоместитьВоВременноеХранилище(ТабДок,Новый  УникальныйИдентификатор());
	    КонецЕсли; 
		
		Если ТекФайл1.Существует() Тогда
	    
	        ИмяНовогоФайла1 = СтрЗаменить(ТекФайл1.ПолноеИмя,".mxl",".pdf");
	        НовыйФайл1  = Новый Файл(ИмяНовогоФайла1);
	        
	        ТабДок1 = Новый ТабличныйДокумент;
	        ТабДок1.Прочитать(ТекФайл1.ПолноеИмя);
	        ТабДок1.АвтоМасштаб = Истина;
	        
	        ПереместитьФайл(ТекФайл1.ПолноеИмя,ИмяНовогоФайла1); //трём mxl
	        ЭлементПакета = Пакет.Состав.Добавить();
	        ЭлементПакета.Данные = ПоместитьВоВременноеХранилище(ТабДок1,Новый  УникальныйИдентификатор());
	    КонецЕсли; 
		
		ИмяФайла21 	= ИмяФайла2 + "Заказ_.pdf";
		ТекФайл2 	= Новый Файл(ИмяФайла21);
		
		
		Если ТекФайл2.Существует() Тогда
		    УдалитьФайлы(ТекФайл2.ПолноеИмя); //трём 2
		КонецЕсли; 
			
		ИмяФайла3 	= ИмяФайла2 + "АКТ_.pdf";
		ТекФайл3 	= Новый Файл(ИмяФайла3);
		
		
		Если ТекФайл3.Существует() Тогда
		    УдалитьФайлы(ТекФайл3.ПолноеИмя); //трём 3
		КонецЕсли; 
			
         Пакет.ЗаписатьФайлДляПечати(ИмяФайлаИстина);		
	КонецЕсли;
	
 ЗавершитьРаботуСистемы();
КонецПроцедуры
Показать
7. transt 1 23.07.21 02:59 Сейчас в теме
(6)Вместо 1го mxl (что предполагалось изначально) можно подсунуть ему текстовый файл который будет как набор параметров и команд... Формат файла сами продумайте.

У меня подобным способом, например, рассылка по email работает, так как куча длл-ек для 7ки перестало работать из за всяких шифрований. Первой строкой Email получателя, в следующих строках имена файлов


Не ограничивайте себя! Всё получится!
Оставьте свое сообщение