Конвертация в ПДФ из 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    35751    11    77    

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    66360    110    110    

118

Перенос данных 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    24340    70    39    

43

Файловый обмен (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    9783    69    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    16231    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    14039    2    0    

5

Перенос данных 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    16019    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    19905    19    ksnik    12    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. CheBurator 2725 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 получателя, в следующих строках имена файлов


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