Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Перенос картинки с сайта в форму 1С 7.7

v7: Перенос картинки с сайта в форму 1С 7.7
Я
   Alex_47
 
09.02.20 - 13:45
Добрый день! Ранее этим не занимался, но по просьбе некоторых....

Вот есть картинка на сайте погоды nochi.com
https://nochi.com/weather/krasnodar-17496
Как можно интерактивно перенести её на форму обработки 1с 7.7,
и чтобы каждые 4 часа картинку перезагружать по той же ссылке.
   Злопчинский
 
1 - 09.02.20 - 13:55
если это ИМЕННО КАРТИНКА - то выясняете "адрес" этой картинки, раз в 4 часа выдергиваете еес сайта, сохраняете в какое-то место,из этого места картинка подхватывается на форму 77.
.
можно в 77 встроить показ страницы сайта
   Alex_47
 
2 - 09.02.20 - 14:04
Сейчас так и есть, но я привёл ссылку на Краснодар, но там их 9. Так нужно в гараже. Возиться каждые 4 часа с файлами очень трудно. Надо, чтобы всё автоматом. Каждые 4 часа ссылка не меняется, на ней меняется изображение каждые 4 часа. Так что ссылка есть и надо через 4 часа чтобы автоматом делался запрос, скачивалось в комп, а оттуда прога сама заберёт
обновлённый файл и выдаст на форму. Как бы такой принцип
   Alex_47
 
3 - 09.02.20 - 14:10
Фактически принцип закачка автоматом с сайта погоды картинки на комп каждые 4 часа. Это будет хорошо.
   Злопчинский
 
4 - 09.02.20 - 14:19
(3)
1. какую именно картинку/картинки? - там "картинки" на неделю - их - 7. или что-то другое?
2. ты понимаешь что - если речь о "картинке погоды на день" - это не картинка, а набор элементов-текстовок+мелкие картинки?
   Злопчинский
 
5 - 09.02.20 - 14:21
(3) Принцип закачки картинки с сайта на комп простой - посылаешь на сайт запрос, сайт в ответ возвращает картинку. если совсем упрощенно - то это так.
   Alex_47
 
6 - 09.02.20 - 14:43
Вот точная ссылка
https://w.bookcdn.com/weather/picture/3_17496_1_20_137AE9_160_ffffff_333333_08488D_1_ffffff_333333_0_6.png?scode=2&domid=589&anc_id=44208
Извините, в картинке меняются данные каждые 4 часа. 9 городов. Там 6 утра,10,14,18,22,2 часа.
Есть картинка,есть ссылка. Через 4 часа запрашиваем.Как? Записываем в базу,как? Что нужно сделать?
   Alex_47
 
7 - 09.02.20 - 14:52
Комп ссылку знает, теперь как эту картинку занести в комп. Со временем я разберусь.
   Злопчинский
 
8 - 09.02.20 - 15:13
(6) ну дык это уже гораздо проще...
сейчас код пороюсь где-то лежал
   Злопчинский
 
9 - 09.02.20 - 15:17
мыло дай, скину обработку
или в скайп Zlopun стукнись
   Злопчинский
 
10 - 09.02.20 - 15:22
(6)
"Через 4 часа запрашиваем.Как?"
- код дам. Периодичность запроса - это как сам организуешь. можно через планировщий виндов запускать 1С с роботом, делает нужное, закрывает 1С.

"Записываем в базу,как?"
- никак, кладем картинки в папочку рядом с базой. в 1С загружаем картинку штатно в то место куда надо
обучаловка для понимания как примерно делается здесь http://catalog.mista.ru/public/17125/
по сути просото - открываешь СП, смотришь какие методы есть у объекта "Картинка"

"Что нужно сделать?"
- по вопросам могу предположить, что навыков в 77 очень мало ;-)
если еще "47" - это год рождения... хотя и есть ребята такого возраста здесь на формуе - программят, работают
   Злопчинский
 
11 - 09.02.20 - 15:24
код примерно такой
.
    Попытка
        httpRequest     = СоздатьОбъект("winhttp.winhttprequest.5.1");
        
        stream             = СоздатьОбъект("adodb.stream");
        stream.type     = 1;//adTypeBinary;

        stream.open();
        
        script             = СоздатьОбъект("ScriptControl");
        script.language = "jscript";
        script.addObject("httpRequest"    ,httpRequest);
        script.addObject("stream"        ,stream);
        
    Исключение
        Сообщить("> "+лПуть+лИмя+": неудачная попытка создания управляющих сценариев для загрузки файлов...","i");
        Сообщить("> "+СимволТабуляции+"|_ "+ОписаниеОшибки(),"i");
        Сообщить("> "+СимволТабуляции+"|_ загрузка файла(ов) отменена...","i");
        Возврат;
    КонецПопытки;    

    кнЗагрузитьФайлы(0);//здесб собственно загрузка нужных картинок (у меня набор артикулов)


    stream.close();
    script         = "";
    httpRequest = "";
   Злопчинский
 
12 - 09.02.20 - 15:25
Процедура кнЗагрузитьФайлы(Режим=1)
    ЗагруженоУспешно = 0;
    
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл 

        Артикул  = СокрЛП(ТЗ.Артикул);
        ТекФайл  = Строка(Число(Артикул))+".jpg";//нормализация строки имени файла

        
        ИмяФайла = ПапкаКартинок+ТекФайл;
        Состояние("запрос "+урл_АдресЗагрузки+ТекФайл);
        
        Попытка 
            httpRequest.open("GET",урл_АдресЗагрузки+ТекФайл,);
            httpRequest.send();
            Ответ = httpRequest.Status;
        Исключение
            Сообщить("> неудачная попытка запроса на загрузку файла...","i");
            Сообщить("> "+СимволТабуляции+"|_ "+ОписаниеОшибки(),"i");
            Продолжить;
        КонецПопытки;
        
        КодОтвета = Число(Ответ);
        Если  КодОтвета = 200
        Тогда ЗагруженоУспешно=ЗагруженоУспешно+1;
        Иначе 
            Если  Режим = 1
            Тогда Сообщить("> |_ запрос файла "+урл_АдресЗагрузки+ТекФайл+", ответ: "+Ответ);                
            КонецЕсли;    
            Продолжить;
        КонецЕсли;
        
        script.eval("stream.write(httpRequest.responseBody);");
        stream.saveToFile(ПапкаКартинок+ТекФайл, 2);//adSaveCreateOverWrite

        ТЗ.Файл = ПапкаКартинок+ТекФайл;
    КонецЦикла;
    Состояние("");
    //Сообщить("загружено картинок: "+ЗагруженоУспешно);

КонецПроцедуры
   Alex_47
 
13 - 10.02.20 - 10:01
Добрый день! К сожалению не подходит! Вопрос работа на автомате, без всякого моего участия! Конечно, можно попробовать и через Stream API, но тяжёлая конструкция для такой мелочи! Оставлю, что поделаешь, как прежде! Спасибо за труды. Если всё таки зарублюсь на stream,то отблагодарю.
   Злопчинский
 
14 - 10.02.20 - 15:54
(13) ну как бы без участия - не получится. нужно хотя бы написать "задание-робот" и обеспечить его регулярное выполнение. В этой задаче это самый сложный вопрос. А сдернуть картинки по приведенным имеющимся адресам - код весь есть нужный выше. Его можно еще больше упростить.
   Arbuz
 
15 - 10.02.20 - 16:12
(13) Как это не подходит? Злоп разжевал и в рот положил, осталось только сглотнуть. Сказано же  - "работа на автомате" решается либо планировщиком винды, либо отдельной сессией 1с - "роботом", например:  http://catalog.mista.ru/public/15995 или есть ещё сторонние приложения-планировщики http://catalog.mista.ru/public/15412, но имхо это лишнее, достаточно виндового планировщика.
   Alex_47
 
16 - 23.02.20 - 13:29
Всё решилось просто:
Файлик html в нём прописаны адреса на виджеты, при запуске страничка с рядом картинок. KeyManager делает скриншот и отправляет в 1С-7.7.  Html каждые 4 часа, запускается с часиков картинки и всё. Внизу скрин с монитора.
На фото не обижайтесь. Она с прошлых времён.
https://c.radikal.ru/c38/2002/fa/c1c401912449.jpg
   Duke1C
 
17 - 23.02.20 - 19:43
(16) А время в этой обработке как "тикает"?
Просто не пойму для чего тут KeyManager, да еще и платный
   Злопчинский
 
18 - 24.02.20 - 14:20
(16) делать скриншот для получения картинки из картинки - это мощно!
   Alex_47
 
19 - 29.02.20 - 11:15
Вот файл html

<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"></head>
<body><a href="https://clck.yandex.ru/redir/dtype=stred/pid=7/cid=1228/*https://yandex.ru/pogoda/131323"; target="_blank"><img src="./prog_files/2_white.ru.png" border="0" alt="Яндекс.Погода"></a>
<a href="https://clck.yandex.ru/redir/dtype=stred/pid=7/cid=1228/*https://yandex.ru/pogoda/35"; target="_blank"><img src="./prog_files/2.ru.png" border="0" alt="Яндекс.Погода"></a>
<a href="https://clck.yandex.ru/redir/dtype=stred/pid=7/cid=1228/*https://yandex.ru/pogoda/39"; target="_blank"><img src="./prog_files/2_white.ru(1).png" border="0" alt="Яндекс.Погода"></a>
<a href="https://clck.yandex.ru/redir/dtype=stred/pid=7/cid=1228/*https://yandex.ru/pogoda/239"; target="_blank"><img src="./prog_files/2.ru(1).png" border="0" alt="Яндекс.Погода"></a>
<a href="https://clck.yandex.ru/redir/dtype=stred/pid=7/cid=1228/*https://yandex.ru/pogoda/213"; target="_blank"><img src="./prog_files/2_white.ru(2).png" border="0" alt="Яндекс.Погода"></a>
<a href="https://clck.yandex.ru/redir/dtype=stred/pid=7/cid=1228/*https://yandex.ru/pogoda/2"; target="_blank"><img src="./prog_files/2.ru(2).png" border="0" alt="Яндекс.Погода"></a></body></html>

Он выдаёт в браузере серию картинок png формата, 1С 7.7 png не принимает, надо конвертировать в jpg. Если каждым виджетом заниматься отдельно и выбрасывать картинку на 1С, то для семи картинок- это достаточно утомительно. Можно было делать так: результат html можно сохранить, но он будет также html. Скопируйте файл и запустите, выясните сами! Поэтому найдено оптимальное решение, запустился каждые 4 часа html, вылетила СЕРИЯ ВИДЖЕТОВ вот она и сканируется в ОДНУ картинку. А Key Manager всё это проделывает сам, сканирует, конвертирует и отправляет в папку программы 1С7.7. Ну оттуда этот ОДИН рисунок уже 1C выкладывает её на форму. На счёт Key Manager, что он платный! Да для DukelC он платный, а для меня НЕТ. Зайдите вот сюда:
[GTorrent.ru]_Atnsoft Key Manager 1.11.0.350 RePack + Portable by Vnvvnv [Multi_Ru]- это торрент на взлом, а сам Key Manager 1.11 найдёте, его полно в инете.
Я думаю всем понятно. У меня прекрасно всё работает и с минимальными затратами. Эта программа 1С7.7 сделана мною в 2008 году и продолжает нормально работать, только вот понадобились некоторые изменения, вот и пришлось повозиться. Между прочим в Инфостарте я её выкладывал, но это было очень давно.
   Alex_47
 
20 - 29.02.20 - 11:19
Да забыл упомянуть вот здесь "Можно было делать так: результат html можно сохранить, но он будет также html. ", тогда можно скачать файлы в html_files (там сохраняются png файлы), но их опять будет семь штук и мучайся с ними!!!
   Arbuz
 
21 - 02.03.20 - 14:36
(19) да... для начала Вам бы правила настоящего форума изучить надо. а то ломитесь как медведь через сухостой за помойкой.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.