Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Выгрузка форматированного документа 1С на свой сайт          
Vofka Подменю пользователя
сообщение 14.07.11, 17:34
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

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

Для решения этой задачи воспользуемся методом форматированного документа ПолучитьHTML(). Этот метод вернет нам сам текст html документа и структуру картинок. После выполнения данного метода нам следует выгрузить картинки на наш сайт. Во время выгрузки картинок определяем тип картинки и на основании этого определяем расширение файла. Поэтому нам надо и подкорректировать сам текст html, так как источник картинки в нем по умолчанию прописывается в виде «image001″ (без расширения). Эта корректировка не критична для нас, страница будет отображаться нормально, но отдельно по ссылке открыть рисунок будет проблематично.

Код функции:

&НаСервере
Функция ВыгрузитьОбъект(ТекОбъект)  Экспорт
    РезультатВыгрузки = "";

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

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

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

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

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

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

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

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

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

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

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

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


[необходимо зарегистрироваться для просмотра ссылки]

Спасибо сказали: -=VJ=-,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 25.04.24, 17:04
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!