Версия для печати темы (https://pro1c.org.ua/index.php?s=21c0f31a61cc1d2d28a9caf32f005be8&showtopic=42931)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Выполнение JavaScript в фоновом задании

Автор: kosalex 23.12.17, 21:19

Здравствуйте! Реализую подключение к API которое использует шифрование SHA512. На просторах интернета нашел такое решение

Секрет = Константы.Секрет.Получить();
    Текст = Новый COMОбъект("System.Text.UTF8Encoding");
    Криптография = Новый COMОбъект("System.Security.Cryptography.HMACSHA512");
    Криптография.Key = Текст.GetBytes_4(Секрет);
    ХешБайт = Криптография.ComputeHash_2(Текст.GetBytes_4(Запись.Значение)).Выгрузить();
    HTML = Новый COMОбъект("htmlfile");
    HTML.Open("text/html");
    HTML.Write("<script>TransformString = function(x,y){return x.toString(y?y:16)}</script>");
    ЯваСкрипт = HTML.documentElement.document.Script;
    
    Хеш = "";
    Для Каждого Байт Из ХешБайт Цикл
        Символ = ЯваСкрипт.TransformString(Байт);
        Хеш = Хеш + ?(СтрДлина(Символ) = 2, Символ, "0"+Символ);
    КонецЦикла;


Проблема заключается в следующем, если запустить этот код не в фоновом задании то строка "ЯваСкрипт = HTML.documentElement.document.Script;" отрабатывает нормально, "Script" существует. А вот когда запускается в фоне, то вылетает с ошибкой что "Script" нет такого. Подскажите как быть, что делать?

Автор: sava1 23.12.17, 22:08

Попробуйте запускать под пользователем, если база клиент- сервере, то вдобавок с соответствующими правами.

Автор: kosalex 23.12.17, 23:54

sava1 @ Сегодня, 22:08 * ,
Вы имеете ввиду открыть еще одну копию программы ?

У меня обработка, которая запускает фоновое задание. В обработке есть цикл который постоянно мониторит таблицу. Фоновое задание выполняет анализ данных и пишет в РС. В обработке выборка из этого РС и в таблицу.


sava1 @ Сегодня, 22:08 * ,
база у меня файловая.

sava1 @ Сегодня, 22:08 * ,
и запускаю через "Запустить от имени администратора" сам конфигуратор и далее F5

kosalex @ Сегодня, 21:19 * ,

а что делает этот скрипт HTML.Write("<script>TransformString = function(x,y){return x.toString(y?y:16)}</script>"); ?

Автор: logist 24.12.17, 1:17

Цитата(kosalex @ 23.12.17, 23:54) *
а что делает этот скрипт

Если указан "у" функция вернет число "х" строкой в шестнадцатеричном, иначе в двоичном формате.

Автор: kosalex 24.12.17, 1:29

kosalex @ Вчера, 23:54 * ,
Решение нашел здесь http://pro1c.org.ua/redirect.php?http://anton.fly7.ru/sha/

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua