helpf.pro
Регистрация
 0 
Распечатать

Выгрузка форматированного документа 1С на свой сайт

Пользователи в 1с ведут описание объектов, которые редактируются в объекте ФорматированныйДокумент. Необходимо обеспечить выгрузку форматированного документа на фтп.

Для решения этой задачи воспользуемся методом форматированного документа ПолучитьHTML(). Этот метод вернет нам сам текст html документа и структуру картинок. После выполнения данного метода нам следует выгрузить картинки на наш сайт. Во время выгрузки картинок определяем тип картинки и на основании этого определяем расширение файла. Поэтому нам надо и подкорректировать сам текст html, так как источник картинки в нем по умолчанию прописывается в виде «image001″ (без расширения). Эта корректировка не критична для нас, страница будет отображаться нормально, но отдельно по ссылке открыть рисунок будет проблематично.
Код функции:
Код 1C v 8.2 УП
 &НаСервере
Функция ВыгрузитьОбъект(ТекОбъект) Экспорт
РезультатВыгрузки = "";

//проверим есть ли описание объекта в базе
ФорматированныйДокумент = ТекОбъект.Описание.Получить();
Если ФорматированныйДокумент = Неопределено Тогда
РезультатВыгрузки = " У данного объекта не определено описание. Выгрузка объекта остановлена";
Возврат РезультатВыгрузки;
КонецЕсли;

//Определяем настройки подключения к фтп
Сервер = ХранилищеНастроек.ФТПСервер;
Порт = ХранилищеНастроек.ФТПпорт;
ИмяПользователяФТП = ХранилищеНастроек.ФТПИмяПользователя;
ПарольПользователяФТП = ХранилищеНастроек.ФТППароль;
ТекущийКаталогFTP = ХранилищеНастроек.ФТПТекущийКаталог;

ФТП = Новый FTPСоединение(Сервер,,ИмяПользователяФТП,ПарольПользователяФТП);

Попытка
ФТП.УстановитьТекущийКаталог(ТекущийКаталогFTP);
Исключение
РезультатВыгрузки = "Невозможно подключиться к фтп";
Возврат РезультатВыгрузки;
КонецПопытки;

ИмяКаталогаОбъекта = Формат(ТекОбъект.Ссылка.Код, "ЧЦ=5; ЧВН=; ЧГ=");

//Каталог для элемента
Попытка
ФТП.УстановитьТекущийКаталог(ТекущийКаталогFTP + "/" + ИмяКаталогаОбъекта);
Исключение
ФТП.СоздатьКаталог(ИмяКаталогаОбъекта);
ФТП.УстановитьТекущийКаталог(ТекущийКаталогFTP + "/" + ИмяКаталогаОбъекта);
РезультатВыгрузки = РезультатВыгрузки + Символы.ПС + " Создан каталог " + ТекущийКаталогFTP + "/" + ИмяКаталогаОбъекта;
КонецПопытки;

//Чистка имеющихся элементов в каталоге элемента
ФТП.Удалить(ТекущийКаталогFTP + "/" + ИмяКаталогаОбъекта,"*.*");

ТекстХТМЛ = "";
СтруктураКартинок = Новый Структура;
ФорматированныйДокумент.ПолучитьHTML(ТекстХТМЛ, СтруктураКартинок);

//Выгрузка картинок и корректировка ХТМЛ
Для Каждого ТекКартинка Из СтруктураКартинок Цикл
ИмяТемпФайла = ПолучитьИмяВременногоФайла();
ТекКартинка.Значение.Записать(ИмяТемпФайла);
ФорматТекущейКартинки = Строка(ТекКартинка.Значение.Формат());
Если Не ФорматТекущейКартинки = ФорматКартинки.НеизвестныйФормат Тогда
ФорматТекущейКартинкиСтрока = Строка(ФорматТекущейКартинки);
ТекстХТМЛ = СтрЗаменить(ТекстХТМЛ,ТекКартинка.Ключ,ТекКартинка.Ключ+ "." + ФорматТекущейКартинкиСтрока);
ФТП.Записать(ИмяТемпФайла, ТекКартинка.Ключ+ "." + ФорматТекущейКартинкиСтрока);
РезультатВыгрузки = РезультатВыгрузки + Символы.ПС + " Записан файл " + ТекКартинка.Ключ+ "." + ФорматТекущейКартинкиСтрока;
Иначе
ФТП.Записать(ИмяТемпФайла, ТекКартинка.Ключ);
РезультатВыгрузки = РезультатВыгрузки + Символы.ПС + " Записан файл " + ТекКартинка.Ключ;
КонецЕсли;
КонецЦикла;

//ВыгрузкаХТМЛ
ИмяТемпФайла = ПолучитьИмяВременногоФайла("html");
ФайлHТМЛ = Новый ТекстовыйДокумент;
ФайлHТМЛ.ДобавитьСтроку(ТекстХТМЛ);
ФайлHТМЛ.Записать(ИмяТемпФайла);

//Собственно запись хтмл
ФТП.Записать(ИмяТемпФайла, ИмяКаталогаОбъекта + ".html");
РезультатВыгрузки = РезультатВыгрузки + Символы.ПС + " Записан файл " + ИмяКаталогаОбъекта + ".html";

Возврат РезультатВыгрузки;
КонецФункции

Андрей Данилюк
Разместил:   Версии: | 8.2 УП |  Дата:   Прочитано: 17463
 0 
Распечатать
Возможно, вас также заинтересует
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 52
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш
1C медленно работает по сети с базой на SQL Server 22
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П
1C: Enterprise Development Tools 52
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.