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

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

Код функции:

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

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

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

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

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

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

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

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

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

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

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

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

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


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