Программист 1с
twitter email rss
  • Home
  • Полезности
    • Мобильное приложение курьера
    • MailChimp + УТ 11.
    • 1с-sms
    • Pharma-MPD
    • Зуботехническая лаборатория
  • Блог
  • Партнеры
  • Команда
    • Услуги
    • Опыт
    • Отзывы
    • Контакты
  • Поддержка
    • Инструкция
    • Redmine






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

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

Код функции:

Суть задачи. Пользователи в 1с ведут описание объектов, которые редактируются в объекте ФорматированныйДокумент (http://danila.org.ua/?p=608). Необходимо обеспечить выгрузку форматированного документа на фтп.

Для решения этой задачи воспользуемся методом форматированного документа ПолучитьHTML. Этот метод вернет нам сам текст html документа и структуру картинок. После выполнения данного метода нам следует выгрузить картинки на наш сайт. Во время выгрузки картинок определяем тип картинки и определяем расширение файла. Поэтому нам надо и подкорректировать сам текст html.

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

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

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

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

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

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

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

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

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

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

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

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

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

Похожие записи:

  1. Формируем директории на FTP
  2. Загрузка html-страниц в 1c ФорматированныйДокумент
  3. Форматированный документ.
  4. Выгрузка табличного документа в Google таблицу
  5. Выводим печатную форму документа в браузер из 1с
← Формируем директории на FTP
QR код в 1с →

Новости

  • Работаем с Opendatabot из 1с
  • Сокращаем ссылки в 1с
  • Загрузка данных из Google spreadsheet в 1с
  • Формирование скриншотов сайтов в 1с
  • Удаление старой номенклатуры

Подписка

Copyright © 2021 danila.org.ua
Умные решения для вашего бизнеса