1С 8.3 Сборка/разборка PDF с помощью pdftk server
Данные > Примеры кода 1С > 1С 8.3 PDF
Перейти в раздел примеры кода 1С 8.3:
К статье можно скачать обработку Сборка и разборка PDF через PDFtk
Компонента от https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
Работа с PDF через https://www.pdflabs.com/tools/pdftk-server/ из 1С 8.3: (Автор: krаs01)
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПортированнаяВерсия = Истина;
ИмяСтраницы = "page";
КонецПроцедуры
&НаКлиенте
Функция ШаблонКоманды(Действие)
Если Действие = "ИнформацияОФайле" Тогда
Возврат """[ИмяКаталогаПрограммы]pdftk.exe"" ""[ИмяФайлаОбработки]"" dump_data output ""[ИмяФайлаРезультата]""";
ИначеЕсли Действие = "РазделитьФайл" Тогда
Возврат """[ИмяКаталогаПрограммы]pdftk.exe"" ""[ИмяФайлаОбработки]"" burst output ""[ИмяФайлаРезультата]""";
ИначеЕсли Действие = "СобратьФайл" Тогда
Возврат """[ИмяКаталогаПрограммы]pdftk.exe"" ""[ИмяФайлаОбработки]"" cat output ""[ИмяФайлаРезультата]""";
КонецЕсли;
КонецФункции // ШаблонКоманды()
&НаКлиенте
Процедура Разделить(Команда)
ФайлОбработки = Новый Файл(ИмяФайлаДляРазделения);
Если НЕ ФайлОбработки.Существует() Тогда
ПоказатьПредупреждение(, "Нет файла");
Возврат;
КонецЕсли;
КоличествоСтраниц = 0;
ИмяКаталогаПрограммы = """C:\Program Files (x86)\PDFtk Server\bin\";
Если ПортированнаяВерсия Тогда
ИмяКаталогаПрограммы = СтрЗаменить(КаталогВременныхФайлов() + "\", "\\", "\") + "PDFtk\";
ДанныеАрхива = ДвоичныеДанныеМакетаНаСервере("АрхивПрограммы");
ИмяФайлаАрхива = ИмяКаталогаПрограммы + "Arc.zip";
ДанныеАрхива.Записать(ИмяФайлаАрхива);
ЧтениеZip = Новый ЧтениеZipФайла(ИмяФайлаАрхива);
ЧтениеZip.ИзвлечьВсе(ИмяКаталогаПрограммы);
ЧтениеZip.Закрыть();
КонецЕсли;
Скрипт = Новый COMОбъект("WScript.Shell");
ДанныеОкружения = Скрипт.Environment("Process");
КаталогРаботы = ДанныеОкружения.Item("TEMP");
//Результаты обработки ведутся в валидном каталоге системы (т.е. без русских букв)
//КаталогРаботы = СтрЗаменить(КаталогВременныхФайлов() + "\", "\\", "\") + "PDFtk_work\";
КаталогРаботы = СтрЗаменить(КаталогРаботы + "\", "\\", "\") + "PDFtk_work\";
СоздатьКаталог(КаталогРаботы);
РабочееИмяФайлаОбработки = КаталогРаботы + "source.pdf";
КопироватьФайл(ФайлОбработки.ПолноеИмя, РабочееИмяФайлаОбработки);
КаталогОбмена = ФайлОбработки.Путь;
Если ЗначениеЗаполнено(КаталогРезультата) Тогда
КаталогОбмена = КаталогРезультата;
КонецЕсли;
КаталогОбмена = СтрЗаменить(КаталогОбмена + "\", "\\", "\");
ИмяФайлаИнфо = КаталогРаботы + "InfPDF.txt";
Команда = ШаблонКоманды("ИнформацияОФайле");
Команда = СтрЗаменить(Команда, "[ИмяКаталогаПрограммы]", ИмяКаталогаПрограммы);
Команда = СтрЗаменить(Команда, "[ИмяФайлаОбработки]", РабочееИмяФайлаОбработки);
Команда = СтрЗаменить(Команда, "[ИмяФайлаРезультата]", ИмяФайлаИнфо);
Скрипт.Run(Команда, 0, 1);
ФайлИнформации = Новый ЧтениеТекста(ИмяФайлаИнфо);
СтрокаИнформации = ФайлИнформации.ПрочитатьСтроку();
Пока СтрокаИнформации <> Неопределено Цикл
Если СтрНайти(СтрокаИнформации, "NumberOfPages:") > 0 Тогда
КоличествоСтраниц = Число(СокрЛП(СтрЗаменить(СтрокаИнформации, "NumberOfPages:", "")));
Прервать;
КонецЕсли;
СтрокаИнформации = ФайлИнформации.ПрочитатьСтроку();
КонецЦикла;
ФайлИнформации.Закрыть();
Если КоличествоСтраниц > 0 Тогда
ШаблонИмениСтраницы = "page_";
Если НЕ ПустаяСтрока(ИмяСтраницы) Тогда
ШаблонИмениСтраницы = ИмяСтраницы + "_";
КонецЕсли;
ШаблонИмениСтраницы = ШаблонИмениСтраницы + "%04d.pdf";
Команда = ШаблонКоманды("РазделитьФайл");
Команда = СтрЗаменить(Команда, "[ИмяКаталогаПрограммы]", ИмяКаталогаПрограммы);
Команда = СтрЗаменить(Команда, "[ИмяФайлаОбработки]", РабочееИмяФайлаОбработки);
Команда = СтрЗаменить(Команда, "[ИмяФайлаРезультата]", КаталогРаботы + ШаблонИмениСтраницы);
Скрипт.Run(Команда, 0, 1);
УдалитьФайлы(РабочееИмяФайлаОбработки);
МассивФайлов = НайтиФайлы(КаталогРаботы, "*.pdf");
Для Каждого Файл Из МассивФайлов Цикл
ПереместитьФайл(Файл.ПолноеИмя, КаталогОбмена + Файл.Имя);
КонецЦикла;
КонецЕсли;
Если ПортированнаяВерсия Тогда
УдалитьФайлы(ИмяКаталогаПрограммы);
КонецЕсли;
УдалитьФайлы(КаталогРаботы);
Сообщить("Создано файлов страниц: " + Строка(КоличествоСтраниц));
КонецПроцедуры
&НаКлиенте
Процедура Собрать(Команда)
Если Объект.ДокументыДляСборки.Количество() = 0 Тогда
ПоказатьПредупреждение(, "Нет файлов");
Возврат;
КонецЕсли;
ИмяКаталогаПрограммы = """C:\Program Files (x86)\PDFtk Server\bin\";
Если ПортированнаяВерсия Тогда
ИмяКаталогаПрограммы = СтрЗаменить(КаталогВременныхФайлов() + "\", "\\", "\") + "PDFtk\";
ДанныеАрхива = ДвоичныеДанныеМакетаНаСервере("АрхивПрограммы");
ИмяФайлаАрхива = ИмяКаталогаПрограммы + "Arc.zip";
ДанныеАрхива.Записать(ИмяФайлаАрхива);
ЧтениеZip = Новый ЧтениеZipФайла(ИмяФайлаАрхива);
ЧтениеZip.ИзвлечьВсе(ИмяКаталогаПрограммы);
ЧтениеZip.Закрыть();
КонецЕсли;
Скрипт = Новый COMОбъект("WScript.Shell");
ДанныеОкружения = Скрипт.Environment("Process");
КаталогРаботы = ДанныеОкружения.Item("TEMP");
//Результаты обработки ведутся в валидном каталоге системы (т.е. без русских букв)
//КаталогРаботы = СтрЗаменить(КаталогВременныхФайлов() + "\", "\\", "\") + "PDFtk_work\";
КаталогРаботы = СтрЗаменить(КаталогРаботы + "\", "\\", "\") + "PDFtk_work\";
СоздатьКаталог(КаталогРаботы);
РабочееИмяФайлаОбработки = КаталогРаботы + "out.pdf";
ПромежутчноеИмяФайлаОбработки = КаталогРаботы + "_out.pdf";
КаталогОбмена = КаталогРезультата;
Если НЕ ЗначениеЗаполнено(КаталогОбмена) Тогда
Файл = Новый Файл(Объект.ДокументыДляСборки[0].ИмяФайла);
КаталогОбмена = Файл.Путь;
КонецЕсли;
КаталогОбмена = СтрЗаменить(КаталогОбмена + "\", "\\", "\");
Команда = ШаблонКоманды("СобратьФайл");
Команда = СтрЗаменить(Команда, "[ИмяКаталогаПрограммы]", ИмяКаталогаПрограммы);
Команда = СтрЗаменить(Команда, "[ИмяФайлаОбработки]", ПромежутчноеИмяФайлаОбработки + """ """ + КаталогРаботы + "add.pdf");
Команда = СтрЗаменить(Команда, "[ИмяФайлаРезультата]", РабочееИмяФайлаОбработки);
Первая = Истина;
Для Каждого СтрокаФайла Из Объект.ДокументыДляСборки Цикл
Если Первая Тогда
КопироватьФайл(СтрокаФайла.ИмяФайла, ПромежутчноеИмяФайлаОбработки);
Первая = Ложь;
Продолжить;
КонецЕсли;
КопироватьФайл(СтрокаФайла.ИмяФайла, КаталогРаботы + "add.pdf");
Скрипт.Run(Команда, 0, 1);
ПереместитьФайл(РабочееИмяФайлаОбработки, ПромежутчноеИмяФайлаОбработки);
КонецЦикла;
ПереместитьФайл(ПромежутчноеИмяФайлаОбработки, КаталогОбмена + "result.pdf");
Если ПортированнаяВерсия Тогда
УдалитьФайлы(ИмяКаталогаПрограммы);
КонецЕсли;
УдалитьФайлы(КаталогРаботы);
Сообщить("Собрано файлов: " + Строка(Объект.ДокументыДляСборки.Количество()));
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПрограмму(Команда)
ИмяФайла = ПолучитьИмяВременногоФайла("exe");
ДанныеФайла = ДвоичныеДанныеМакетаНаСервере("ДистрибутивПрограммы");
ДанныеФайла.Записать(ИмяФайла);
КомандаСистемы(ИмяФайла);
КонецПроцедуры
&НаСервере
Функция ДвоичныеДанныеМакетаНаСервере(ИмяМакета)
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
Возврат ОбработкаОбъект.ПолучитьМакет(ИмяМакета);
КонецФункции // ДвоичныеДанныеМакета()
&НаКлиенте
Процедура ИмяФайлаДляРазделенияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ВыборФайлаРазборки = Истина;
ОткрытьДиалогВыбораФайлов();
КонецПроцедуры
&НаКлиенте
Процедура ИмяФайлаСборкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ВыборФайлаРазборки = Ложь;
ОткрытьДиалогВыбораФайлов();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьДиалогВыбораФайлов()
ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогВыбора.Заголовок = "Выберите файл для загрузки данных";
ДиалогВыбора.ПредварительныйПросмотр = Ложь;
ДиалогВыбора.МножественныйВыбор = НЕ ВыборФайлаРазборки;
ДиалогВыбора.ИндексФильтра = 0;
ДиалогВыбора.ПолноеИмяФайла = ИмяФайлаДляРазделения;
ДиалогВыбора.ПроверятьСуществованиеФайла = Ложь;
ФорматФайла = "pdf";
Фильтр = НСтр("ru = 'Файлы " + ФорматФайла + " |*." + ФорматФайла + "'");
ДиалогВыбора.Фильтр = Фильтр;
ДиалогВыбора.Показать(Новый ОписаниеОповещения("ИмяФайлаНачалоВыбораЗавершение", ЭтотОбъект, Новый Структура("ДиалогВыбора", ДиалогВыбора)));
КонецПроцедуры // ОткрытьДиалогВыбораФайлов()
&НаКлиенте
Процедура ИмяФайлаНачалоВыбораЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
ДиалогВыбора = ДополнительныеПараметры.ДиалогВыбора;
Если (ВыбранныеФайлы <> Неопределено) Тогда
Если ВыборФайлаРазборки Тогда
ИмяФайлаДляРазделения = ДиалогВыбора.ПолноеИмяФайла;
Иначе
Первая = Истина;
Для Каждого ЭлементВыбора Из ДиалогВыбора.ВыбранныеФайлы Цикл
Если Первая Тогда
ТекущиеДанные = Элементы.ДокументыДляСборки.ТекущиеДанные;
Иначе
ТекущиеДанные = Объект.ДокументыДляСборки.Добавить();
КонецЕсли;
Первая = Ложь;
ТекущиеДанные.ИмяФайла = ЭлементВыбора;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КаталогРезультатаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
#Если НЕ ВебКлиент Тогда
Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.Каталог = КаталогРезультата;
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
Фильтр = НСтр("ru = 'Все файлы(*.*) |*.*'");
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = НСтр("ru = 'Выберите каталог'");
Если ДиалогОткрытияФайла.Выбрать() Тогда
КаталогРезультата = ДиалогОткрытияФайла.Каталог;
КонецЕсли;
СтандартнаяОбработка = Ложь;
#КонецЕсли
КонецПроцедуры
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПортированнаяВерсия = Истина;
ИмяСтраницы = "page";
КонецПроцедуры
&НаКлиенте
Функция ШаблонКоманды(Действие)
Если Действие = "ИнформацияОФайле" Тогда
Возврат """[ИмяКаталогаПрограммы]pdftk.exe"" ""[ИмяФайлаОбработки]"" dump_data output ""[ИмяФайлаРезультата]""";
ИначеЕсли Действие = "РазделитьФайл" Тогда
Возврат """[ИмяКаталогаПрограммы]pdftk.exe"" ""[ИмяФайлаОбработки]"" burst output ""[ИмяФайлаРезультата]""";
ИначеЕсли Действие = "СобратьФайл" Тогда
Возврат """[ИмяКаталогаПрограммы]pdftk.exe"" ""[ИмяФайлаОбработки]"" cat output ""[ИмяФайлаРезультата]""";
КонецЕсли;
КонецФункции // ШаблонКоманды()
&НаКлиенте
Процедура Разделить(Команда)
ФайлОбработки = Новый Файл(ИмяФайлаДляРазделения);
Если НЕ ФайлОбработки.Существует() Тогда
ПоказатьПредупреждение(, "Нет файла");
Возврат;
КонецЕсли;
КоличествоСтраниц = 0;
ИмяКаталогаПрограммы = """C:\Program Files (x86)\PDFtk Server\bin\";
Если ПортированнаяВерсия Тогда
ИмяКаталогаПрограммы = СтрЗаменить(КаталогВременныхФайлов() + "\", "\\", "\") + "PDFtk\";
ДанныеАрхива = ДвоичныеДанныеМакетаНаСервере("АрхивПрограммы");
ИмяФайлаАрхива = ИмяКаталогаПрограммы + "Arc.zip";
ДанныеАрхива.Записать(ИмяФайлаАрхива);
ЧтениеZip = Новый ЧтениеZipФайла(ИмяФайлаАрхива);
ЧтениеZip.ИзвлечьВсе(ИмяКаталогаПрограммы);
ЧтениеZip.Закрыть();
КонецЕсли;
Скрипт = Новый COMОбъект("WScript.Shell");
ДанныеОкружения = Скрипт.Environment("Process");
КаталогРаботы = ДанныеОкружения.Item("TEMP");
//Результаты обработки ведутся в валидном каталоге системы (т.е. без русских букв)
//КаталогРаботы = СтрЗаменить(КаталогВременныхФайлов() + "\", "\\", "\") + "PDFtk_work\";
КаталогРаботы = СтрЗаменить(КаталогРаботы + "\", "\\", "\") + "PDFtk_work\";
СоздатьКаталог(КаталогРаботы);
РабочееИмяФайлаОбработки = КаталогРаботы + "source.pdf";
КопироватьФайл(ФайлОбработки.ПолноеИмя, РабочееИмяФайлаОбработки);
КаталогОбмена = ФайлОбработки.Путь;
Если ЗначениеЗаполнено(КаталогРезультата) Тогда
КаталогОбмена = КаталогРезультата;
КонецЕсли;
КаталогОбмена = СтрЗаменить(КаталогОбмена + "\", "\\", "\");
ИмяФайлаИнфо = КаталогРаботы + "InfPDF.txt";
Команда = ШаблонКоманды("ИнформацияОФайле");
Команда = СтрЗаменить(Команда, "[ИмяКаталогаПрограммы]", ИмяКаталогаПрограммы);
Команда = СтрЗаменить(Команда, "[ИмяФайлаОбработки]", РабочееИмяФайлаОбработки);
Команда = СтрЗаменить(Команда, "[ИмяФайлаРезультата]", ИмяФайлаИнфо);
Скрипт.Run(Команда, 0, 1);
ФайлИнформации = Новый ЧтениеТекста(ИмяФайлаИнфо);
СтрокаИнформации = ФайлИнформации.ПрочитатьСтроку();
Пока СтрокаИнформации <> Неопределено Цикл
Если СтрНайти(СтрокаИнформации, "NumberOfPages:") > 0 Тогда
КоличествоСтраниц = Число(СокрЛП(СтрЗаменить(СтрокаИнформации, "NumberOfPages:", "")));
Прервать;
КонецЕсли;
СтрокаИнформации = ФайлИнформации.ПрочитатьСтроку();
КонецЦикла;
ФайлИнформации.Закрыть();
Если КоличествоСтраниц > 0 Тогда
ШаблонИмениСтраницы = "page_";
Если НЕ ПустаяСтрока(ИмяСтраницы) Тогда
ШаблонИмениСтраницы = ИмяСтраницы + "_";
КонецЕсли;
ШаблонИмениСтраницы = ШаблонИмениСтраницы + "%04d.pdf";
Команда = ШаблонКоманды("РазделитьФайл");
Команда = СтрЗаменить(Команда, "[ИмяКаталогаПрограммы]", ИмяКаталогаПрограммы);
Команда = СтрЗаменить(Команда, "[ИмяФайлаОбработки]", РабочееИмяФайлаОбработки);
Команда = СтрЗаменить(Команда, "[ИмяФайлаРезультата]", КаталогРаботы + ШаблонИмениСтраницы);
Скрипт.Run(Команда, 0, 1);
УдалитьФайлы(РабочееИмяФайлаОбработки);
МассивФайлов = НайтиФайлы(КаталогРаботы, "*.pdf");
Для Каждого Файл Из МассивФайлов Цикл
ПереместитьФайл(Файл.ПолноеИмя, КаталогОбмена + Файл.Имя);
КонецЦикла;
КонецЕсли;
Если ПортированнаяВерсия Тогда
УдалитьФайлы(ИмяКаталогаПрограммы);
КонецЕсли;
УдалитьФайлы(КаталогРаботы);
Сообщить("Создано файлов страниц: " + Строка(КоличествоСтраниц));
КонецПроцедуры
&НаКлиенте
Процедура Собрать(Команда)
Если Объект.ДокументыДляСборки.Количество() = 0 Тогда
ПоказатьПредупреждение(, "Нет файлов");
Возврат;
КонецЕсли;
ИмяКаталогаПрограммы = """C:\Program Files (x86)\PDFtk Server\bin\";
Если ПортированнаяВерсия Тогда
ИмяКаталогаПрограммы = СтрЗаменить(КаталогВременныхФайлов() + "\", "\\", "\") + "PDFtk\";
ДанныеАрхива = ДвоичныеДанныеМакетаНаСервере("АрхивПрограммы");
ИмяФайлаАрхива = ИмяКаталогаПрограммы + "Arc.zip";
ДанныеАрхива.Записать(ИмяФайлаАрхива);
ЧтениеZip = Новый ЧтениеZipФайла(ИмяФайлаАрхива);
ЧтениеZip.ИзвлечьВсе(ИмяКаталогаПрограммы);
ЧтениеZip.Закрыть();
КонецЕсли;
Скрипт = Новый COMОбъект("WScript.Shell");
ДанныеОкружения = Скрипт.Environment("Process");
КаталогРаботы = ДанныеОкружения.Item("TEMP");
//Результаты обработки ведутся в валидном каталоге системы (т.е. без русских букв)
//КаталогРаботы = СтрЗаменить(КаталогВременныхФайлов() + "\", "\\", "\") + "PDFtk_work\";
КаталогРаботы = СтрЗаменить(КаталогРаботы + "\", "\\", "\") + "PDFtk_work\";
СоздатьКаталог(КаталогРаботы);
РабочееИмяФайлаОбработки = КаталогРаботы + "out.pdf";
ПромежутчноеИмяФайлаОбработки = КаталогРаботы + "_out.pdf";
КаталогОбмена = КаталогРезультата;
Если НЕ ЗначениеЗаполнено(КаталогОбмена) Тогда
Файл = Новый Файл(Объект.ДокументыДляСборки[0].ИмяФайла);
КаталогОбмена = Файл.Путь;
КонецЕсли;
КаталогОбмена = СтрЗаменить(КаталогОбмена + "\", "\\", "\");
Команда = ШаблонКоманды("СобратьФайл");
Команда = СтрЗаменить(Команда, "[ИмяКаталогаПрограммы]", ИмяКаталогаПрограммы);
Команда = СтрЗаменить(Команда, "[ИмяФайлаОбработки]", ПромежутчноеИмяФайлаОбработки + """ """ + КаталогРаботы + "add.pdf");
Команда = СтрЗаменить(Команда, "[ИмяФайлаРезультата]", РабочееИмяФайлаОбработки);
Первая = Истина;
Для Каждого СтрокаФайла Из Объект.ДокументыДляСборки Цикл
Если Первая Тогда
КопироватьФайл(СтрокаФайла.ИмяФайла, ПромежутчноеИмяФайлаОбработки);
Первая = Ложь;
Продолжить;
КонецЕсли;
КопироватьФайл(СтрокаФайла.ИмяФайла, КаталогРаботы + "add.pdf");
Скрипт.Run(Команда, 0, 1);
ПереместитьФайл(РабочееИмяФайлаОбработки, ПромежутчноеИмяФайлаОбработки);
КонецЦикла;
ПереместитьФайл(ПромежутчноеИмяФайлаОбработки, КаталогОбмена + "result.pdf");
Если ПортированнаяВерсия Тогда
УдалитьФайлы(ИмяКаталогаПрограммы);
КонецЕсли;
УдалитьФайлы(КаталогРаботы);
Сообщить("Собрано файлов: " + Строка(Объект.ДокументыДляСборки.Количество()));
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПрограмму(Команда)
ИмяФайла = ПолучитьИмяВременногоФайла("exe");
ДанныеФайла = ДвоичныеДанныеМакетаНаСервере("ДистрибутивПрограммы");
ДанныеФайла.Записать(ИмяФайла);
КомандаСистемы(ИмяФайла);
КонецПроцедуры
&НаСервере
Функция ДвоичныеДанныеМакетаНаСервере(ИмяМакета)
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
Возврат ОбработкаОбъект.ПолучитьМакет(ИмяМакета);
КонецФункции // ДвоичныеДанныеМакета()
&НаКлиенте
Процедура ИмяФайлаДляРазделенияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ВыборФайлаРазборки = Истина;
ОткрытьДиалогВыбораФайлов();
КонецПроцедуры
&НаКлиенте
Процедура ИмяФайлаСборкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ВыборФайлаРазборки = Ложь;
ОткрытьДиалогВыбораФайлов();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьДиалогВыбораФайлов()
ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогВыбора.Заголовок = "Выберите файл для загрузки данных";
ДиалогВыбора.ПредварительныйПросмотр = Ложь;
ДиалогВыбора.МножественныйВыбор = НЕ ВыборФайлаРазборки;
ДиалогВыбора.ИндексФильтра = 0;
ДиалогВыбора.ПолноеИмяФайла = ИмяФайлаДляРазделения;
ДиалогВыбора.ПроверятьСуществованиеФайла = Ложь;
ФорматФайла = "pdf";
Фильтр = НСтр("ru = 'Файлы " + ФорматФайла + " |*." + ФорматФайла + "'");
ДиалогВыбора.Фильтр = Фильтр;
ДиалогВыбора.Показать(Новый ОписаниеОповещения("ИмяФайлаНачалоВыбораЗавершение", ЭтотОбъект, Новый Структура("ДиалогВыбора", ДиалогВыбора)));
КонецПроцедуры // ОткрытьДиалогВыбораФайлов()
&НаКлиенте
Процедура ИмяФайлаНачалоВыбораЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
ДиалогВыбора = ДополнительныеПараметры.ДиалогВыбора;
Если (ВыбранныеФайлы <> Неопределено) Тогда
Если ВыборФайлаРазборки Тогда
ИмяФайлаДляРазделения = ДиалогВыбора.ПолноеИмяФайла;
Иначе
Первая = Истина;
Для Каждого ЭлементВыбора Из ДиалогВыбора.ВыбранныеФайлы Цикл
Если Первая Тогда
ТекущиеДанные = Элементы.ДокументыДляСборки.ТекущиеДанные;
Иначе
ТекущиеДанные = Объект.ДокументыДляСборки.Добавить();
КонецЕсли;
Первая = Ложь;
ТекущиеДанные.ИмяФайла = ЭлементВыбора;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КаталогРезультатаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
#Если НЕ ВебКлиент Тогда
Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.Каталог = КаталогРезультата;
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
Фильтр = НСтр("ru = 'Все файлы(*.*) |*.*'");
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = НСтр("ru = 'Выберите каталог'");
Если ДиалогОткрытияФайла.Выбрать() Тогда
КаталогРезультата = ДиалогОткрытияФайла.Каталог;
КонецЕсли;
СтандартнаяОбработка = Ложь;
#КонецЕсли
КонецПроцедуры
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник