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