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

01.06.16

Интеграция - Обмен между базами 1C

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

Скачать файлы

Наименование Файл Версия Размер
Конфигурация 1С 8: "Конвертер ПДФ"
.1CD 1,13Mb
6
.1CD 1,13Mb 6 Скачать

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

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%

Перенос данных из 1С:Бухгалтерия 7.7 в БП 3.0. Переносятся остатки, документы и справочники

Файловый обмен (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 | Предоставляем техподдержку | Обновляем на новые релизы 1С | Перенос из 7.7 является сложным, и на рынке сложно найти специалистов 1С по "семерке" - наши сотрудники помогут вам выполнить переход в рамках техподдержки предлагаемого переноса данных!

50722 45650 руб.

26.05.2020    33915    10    67    

16

Конфигурация "Информационный киоск". Обработки выгрузки товаров для ТиС 9.2, УТ 10.3, УТ 11 (обмен данными с любой конфигурацией 1С 7.7, 8.х)

Оптовая торговля Розничная торговля Обмен между базами 1C Сканер штрих-кода Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Управленческий учет Платные (руб)

Конфигурация предназначена для организации offline доступа клиента (покупателя) к информации о товарах, услугах или дисконтных картах посредством сканирования штрих-кода. Основная цель – мгновенно предоставить наиболее актуальную информацию о цене, остатках, наименовании товара (услуги) или накоплениях, держателе, состоянии дисконтной карты.

1800 руб.

21.12.2014    59237    8    21    

20

Выгрузка данных из 1С 7.7. в формате EnterpriseData 1.6 (универсальный формат обмена) в конфигурации 8.3

Обмен между базами 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    22694    59    39    

35

Выгрузка из 1С ТиС 9.2 в 1С БП 3.0 с дополнительными фильтрами по Фирме, Складу, Контрагенту, Проекту, Автору и Юрлицу

Файловый обмен (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    8368    52    Kuzya_brаtsk    8    

11

Переход с 1С:Комплексной 7.7 на 1С:УТ 10.3

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

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

8400 руб.

17.03.2021    15535    5    13    

6

Обмен данными ЗУП 3.1 - Бухгалтерия 7.7

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

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

18000 руб.

29.09.2020    13583    2    0    

5

Конвертация данных из 1С 8.3 в 7.7 (версия КД 2.1). Перенос данных из 8.3 в 7.7. Создание в современной 1С 8.3 XML в формате КД2. Инструкции и примеры переноса данных из любой современной 1С 8.3 в устаревшую конфигурацию 1С 7.7, через Конвертацию данных 2

Обмен между базами 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    14023    ksnik    0    

15

Загрузка адресов произвольного формата (КЛАДР и нестандартных "грязных" адресов) в ФИАС современных конфигураций из 1С 7.7

Загрузка и выгрузка в Excel Обмен между базами 1C Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 1С:ERP Управление предприятием 2 Абонемент ($m)

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

1 стартмани

16.08.2019    19262    17    ksnik    12    

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


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