Имя: Пароль:
1C
1С v8
Загрузка картинки в 1С по ссылке
0 MAPATNK2
 
naïve
12.05.21
12:58
Всем доброго дня. УТ 10.3. Подскажите, как программно загружать в 1С картинки из интернета по ссылке в виде https://gmail.com/картинка.jpg ?
1 Волшебник
 
12.05.21
13:02
КопироватьФайл(откуда, куда)

Допускается использование схем http, https и ftp для адресации файлов. При использовании этих схем в адресах необходимо указывать прямые слеши '/', а не обратные '\'.
2 Tatitutu
 
12.05.21
13:16
Обработка "Загрузка изображений для товара" ver.1.0.07
https://clck.ru/UmQux
3 MAPATNK2
 
naïve
12.05.21
13:35
(2) Спасибо, разберусь.
4 sikuda
 
12.05.21
14:24
(1) Для работы метода на веб-клиенте необходимо предварительно подключить расширение работы с файлами.
На веб-клиенте метод работает только с локальными файлами.
5 ugorchina
 
13.05.21
12:15
Когда то делал клиенту оформлялку товаров под сайт

на реквизит вешал событие (рев. типа строка) и выполнял проверку

вот код проверки доступности картинки

СтруктураURI = СтруктураURI(УРЛОсновнойКартинки_);
    
    Если СокрЛП(СтруктураURI.Схема) = "https" Тогда
        Защита = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено);
        HTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт,,,,,Защита);
    Иначе
        HTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт);
        
    КонецЕсли;
    
    HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере);
    
    Попытка
        Результат =  HTTPСоединение.Получить(HTTPЗапрос);
    Исключение
        Возврат "Ошибка";
    КонецПопытки;
    
    Если Результат.КодСостояния >= 400 и Результат.КодСостояния < 500  Тогда
        Возврат "Ошибка";
    КонецЕсли;
    
    Если Результат.КодСостояния >= 500 и Результат.КодСостояния < 600  Тогда
        Возврат "Ошибка";
    КонецЕсли;
    
    Если Результат.КодСостояния >= 300 и Результат.КодСостояния < 400  Тогда
        Возврат "Ошибка";
    КонецЕсли;
        
    Если Результат.КодСостояния < 300 Тогда         
        Возврат "Удача";
    КонецЕсли;

а вот загрузки

СтруктураURI = СтруктураURI(Путь);
    Если СокрЛП(СтруктураURI.Схема) = "https" Тогда
        Защита = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено);
        HTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт,,,,,Защита);
    Иначе
        HTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт);
        
    КОнецЕсли;
    
    HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере);
    Попытка
        Результат =  HTTPСоединение.Получить(HTTPЗапрос);
    Исключение
        
    КонецПопытки;
    Если Результат.КодСостояния >= 400 и Результат.КодСостояния < 500  Тогда
    КонецЕсли;
    
    Если Результат.КодСостояния >= 500 и Результат.КодСостояния < 600  Тогда
    КонецЕсли;
    
    // Обрабатываем перенаправление
    Если Результат.КодСостояния >= 300 и Результат.КодСостояния < 400  Тогда
    КонецЕсли;
    Если Результат.КодСостояния < 300 Тогда
        ДвоичныеДанныеКартинки = Результат.ПолучитьТелоКакДвоичныеДанные();
        НовоеИмяФайла = Новый УникальныйИдентификатор();
        АдресВременногоХранилищаФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанныеКартинки);
        
        ПрисоединенныйФайл = ПрисоединенныеФайлы.ДобавитьФайл(Номенклатура,НовоеИмяФайла,СтрЗаменить(".jpg",".",""),ТекущаяДата(),ТекущаяДата(),АдресВременногоХранилищаФайла,"Изображение загружено обработкой конт менеджера");
        
        Если ЗначениеЗаполнено(ПрисоединенныйФайл) Тогда
            Если ЭтоОсновнаяКартинка = Истина Тогда
                НоменклатураОбъект = Номенклатура.ПолучитьОбъект();
                НоменклатураОбъект.ФайлКартинки = ПрисоединенныйФайл;
                НоменклатураОбъект.Записать();                
            КонецЕсли;
        КонецЕсли;    
    КонецЕсли;
6 ugorchina
 
13.05.21
12:16
+(5)
7 ugorchina
 
13.05.21
12:16
&НаСервере
Функция СтруктураURI(Знач СтрокаURI) Экспорт
    
    СтрокаURI = СокрЛП(СтрокаURI);
    
    // схема
    Схема = "";
    Позиция = Найти(СтрокаURI, "://");
    Если Позиция > 0 Тогда
        Схема = НРег(Лев(СтрокаURI, Позиция - 1));
        СтрокаURI = Сред(СтрокаURI, Позиция + 3);
    КонецЕсли;
    
    // строка соединения и путь на сервере
    СтрокаСоединения = СтрокаURI;
    ПутьНаСервере = "";
    Позиция = Найти(СтрокаСоединения, "/");
    Если Позиция > 0 Тогда
        ПутьНаСервере = Сред(СтрокаСоединения, Позиция + 1);
        СтрокаСоединения = Лев(СтрокаСоединения, Позиция - 1);
    КонецЕсли;
    
    // информация пользователя и имя сервера
    СтрокаАвторизации = "";
    ИмяСервера = СтрокаСоединения;
    Позиция = Найти(СтрокаСоединения, "@");
    Если Позиция > 0 Тогда
        СтрокаАвторизации = Лев(СтрокаСоединения, Позиция - 1);
        ИмяСервера = Сред(СтрокаСоединения, Позиция + 1);
    КонецЕсли;
    
    // логин и пароль
    Логин = СтрокаАвторизации;
    Пароль = "";
    Позиция = Найти(СтрокаАвторизации, ":");
    Если Позиция > 0 Тогда
        Логин = Лев(СтрокаАвторизации, Позиция - 1);
        Пароль = Сред(СтрокаАвторизации, Позиция + 1);
    КонецЕсли;
    
    // хост и порт
    Хост = ИмяСервера;
    Порт = "";
    Позиция = Найти(ИмяСервера, ":");
    Если Позиция > 0 Тогда
        Хост = Лев(ИмяСервера, Позиция - 1);
        Порт = Сред(ИмяСервера, Позиция + 1);
    КонецЕсли;
    
    Результат = Новый Структура;
    Результат.Вставить("Схема", Схема);
    Результат.Вставить("Логин", Логин);
    Результат.Вставить("Пароль", Пароль);
    Результат.Вставить("ИмяСервера", ИмяСервера);
    Результат.Вставить("Хост", Хост);
    Результат.Вставить("Порт", ?(Порт <> "", Число(Порт), Неопределено));
    Результат.Вставить("ПутьНаСервере", ПутьНаСервере);
    
    Возврат Результат;
    
КонецФункции