Имя: Пароль:
1C
1С v8
Как из 1С установить атрибут selected
0 ChipPensioner
 
23.08.22
20:51
На сайте имеется элемент с выпадающим списком
<select class="select__native-select__2WA65 always" aria-labelledby="currency-field-3">
  <option value="0">Albania Lek (ALL)</option>
  <option value="1">Angola Kwona (AOA)</option>
  <option value="2">Argentina Peso (ARS)</option>
  <option value="3">Australian Dollar (AUD)</option>
  <option value="4">Bahrain Dinar (BHD)</option>
  <option value="5" selected="">Bangladesh Taka (BDT)</option>
  <option value="6">Bulgarian Lev (BGN)</option
  ><option value="7">Bolivia Boliviano (BOB)</option>.....
.......
</select>
Как для определенной позиции списка установить опцию "selected" ?
Пробовал так - не получается

     ЭлементыО = ДокументHTML.ПолучитьЭлементыПоИмени("option");
        Для Каждого ЭлементО Из ЭлементыО Цикл

             Атр = ЭлементО.ПолучитьАтрибут("value");
            
             Если  Атр="3" Тогда
            ДокументHTML.createAttribute("selected") ;
            ЭлементО.setAttribute("selected", "");
             КонецЕсли;

                КонецЦикла;
1 Asmody
 
23.08.22
23:19
вот это зачем?

ДокументHTML.createAttribute("selected") ;
2 ChipPensioner
 
24.08.22
15:10
Копался по сайтам и форумам, нашел вроде бы приемлимый вариант, но он не работает.
3 oslokot
 
24.08.22
15:30
У меня точно работает вот такой способ. Попробуй сделать по такому принципу


ЭлементДом = Элементы.ПолеХТМЛ.Документ.getElementById("name_object");
ЭлементДом.setAttribute("onclick", ТекстСкрипта);
4 Святофор
 
24.08.22
16:11
Если  Атр="3" Тогда
ЭлементО.selected = true;
.........

?
5 ChipPensioner
 
24.08.22
18:56
Вобщем, чтоб было понятно, что я хочу:
Нужно получить курсы валют с сайта Reuters.
Курс валюты, установленный по умолчанию я получаю, а вот сменить валюту - не получается.
Выбор валюты идет из выпадающего списка и отмечается как "selected"
Я так подозреваю, что придется заняться JS
По предыдущим советам:

ЭлементО.selected = true; - не получется (Поле объекта не обнаружено),
а ЭлементДом.setAttribute("onclick", ТекстСкрипта); - ТекстСкрипта - это JS?

Может кто направит в какой стороне рыть?
6 Asmody
 
24.08.22
20:53
7 oslokot
 
25.08.22
09:23
(5) в (3) это просто пример.

Для вашего случая можно попробовать заменить


ЭлементыО = ДокументHTML.ПолучитьЭлементыПоИмени("option");


на

ЭлементыО = Элементы.ПолеХТМЛ.Документ.getElementById("option");
8 СеменовСемен
 
25.08.22
09:28
(0) может проще самому послать этот запрос, а не кнопки нажимать?
9 Kassern
 
25.08.22
09:33
Неужели на сайте нет апишки, по которой можно дергать курс нужной валюты?
10 Святофор
 
25.08.22
10:27
(7) это все прекрасно, getElementById тут работать не будет за неимением такового...
11 Святофор
 
25.08.22
10:28
>ЭлементДом.setAttribute("onclick", ТекстСкрипта); - ТекстСкрипта - это JS?

на событие вешается какой-то скрипт
12 Святофор
 
25.08.22
10:37
ЭлементДом.setAttributeNode(ДокументHTML.setAttribute("selected", ""));
13 ChipPensioner
 
25.08.22
12:11
(9) Вот там пока и роюсь.
14 ChipPensioner
 
25.08.22
12:45
(12) Метод объекта не обнаружен (setAttribute)
15 Святофор
 
25.08.22
14:54
(14) ну может так

новыйАтрибут = ДокументHTML.createAttribute("selected");
атрибутЭлемента = ЭлементДом.setAttributeNode(новыйАтрибут);
атрибутЭлемента.Значение = "true";
16 Kassern
 
25.08.22
14:56
А не проще на каком-нибудь другом языке написать прослойку, записывать данные в удобочитаемом виде и уже их скармливать 1ске? Это при условии, что у сервиса нет открытого API для получения нужных данных.
17 ChipPensioner
 
01.09.22
16:37
Вобщем получилось так:

СтрокаЗапроса = "{""fields"":""last"",""rics"":""USDEUR""}";
    СтрокаЗапросаURL = КодироватьСтроку(СтрокаЗапроса, СпособКодированияСтроки.КодировкаURL);
        
    HTTPЗапрос = Новый HTTPЗапрос("pf/api/v3/content/fetch/quote-by-rics-v1?query="+СтрокаЗапросаURL +
                                  "&d=108&_website=reuters");
    
    ОтветHTTP = HTTPСоединение.ВызватьHTTPМетод("GET",HTTPЗапрос);
    ТелоHTTP = ОтветHTTP.ПолучитьТелоКакСтроку();
    
    Если ОтветHTTP.КодСостояния = 200 Тогда
        
        ЧтJSON = Новый ЧтениеJSON;
        ЧтJSON.УстановитьСтроку(ТелоHTTP);
        ОтветВJSON = ПрочитатьJSON(ЧтJSON);
        ЧтJSON.Закрыть();
        
        //Результат.Успешно = Истина;
        Результат = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(
        ОтветВJSON.result.market_data.currencypairs[0].last);
        Сообщить("Курс = "+ Результат);
        
        Возврат Результат;

Может куму пригодится.
Всем спасибо.
18 ChipPensioner
 
01.09.22
16:42
Ну а дальше делаем цикл по нужным валютам, подставляем в СтрокуЗапроса и получаем курсы.
Независимо от того, куда вы едете — это в гору и против ветра!