Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )



История благодарностей участнику Makcim1981 ::: Спасибо сказали: 2 раз
Дата поста: В теме: За сообщение: Спасибо сказали:
02.03.23, 12:10 API, передача параметров FormData в теле запроса
В общем ... я решил не заморачиваться и реализовал через Curl ... тоже возникло ряд ньюансов. если кому интересно, ниже поделюсь своей реализацией:

В глобальный модуль я добавил следующее:

// ===============================  
//Пересохраняем файл ответа полученый через Curl в формат понятный 1С 7.7 (русские буквы)
Процедура глПересохранениеОтветаurn(Файл) Экспорт
    
    Байт = 255;
    СтримВход = СоздатьОбъект("ADODB.Stream");
    СтримВход.Type        = 2;
    СтримВход.charset    = "utf-8";
    СтримВход.Open();
    СтримВход.LoadFromFile(КаталогИБ() + "urn\" + Файл);
    СтримВыход = СоздатьОбъект("ADODB.Stream");
    СтримВыход.Type                = 2;
    СтримВыход.charset            = "utf-8";  
    СтримВыход.charset            = "windows-1251";
    СтримВыход.LineSeparator    = -1;
    СтримВыход.Open();
    Всего = СтримВход.size;
    Пока СтримВход.EOS = 0 Цикл
        СтримВыход.WriteText(СтримВход.ReadText(Байт), ?(Байт = -2, 1, 0));
    КонецЦикла;
    СтримВыход.SaveToFile(КаталогИБ() + "urn\" + Файл, 2);
    
КонецПроцедуры  

// ===============================    
//Добавляем задержку в секундах, что бы Curl сохранил файл и следующие операции не использовали старые или несуществующие данные
Процедура глЗадержка(КоличествоСекунд) Экспорт

    Shell = СоздатьОбъект("WScript.Shell");
    Shell.Run("ping 127.0.0.1 -n "+КоличествоСекунд, 0, 1);
    
КонецПроцедуры          

// ===============================
//Формируем строку запроса по API для выполнения в Curl
Функция глСформироватьКурлСтроку(Конт,Метод,Параметр1 = "",Параметр2 = "") Экспорт  
        
    Если Метод = "order_list_get" Тогда
        СтрокаКурл = "curl -X POST """ + СокрЛП(Конт.Фирма.АдресAPIiFurn) + """ -H ""Content-Type: multipart/form-data"" -H ""key: " + СокрЛП(Конт.Фирма.KeyAPIiFurn) + """ -H ""action: " + СокрЛП(Метод) +  """ -F ""id=" + СокрЛП(Параметр1) + """ -o " + КаталогИБ() + "urn\order.json";
    
    КонецЕсли;
              
    
    Возврат СтрокаКурл;
КонецФункции


Ну и модуле формы документа

Процедура ЗагрузитьИзurn()
    
    Если ПустоеЗначение(urni) = 1 Тогда
        Сообщить("Поле Номер замовлення в urn не заповнене !","!");
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;
    
    ЗапуститьПриложение(глСформироватьКурлСтроку(Контекст,"order_list_get",СокрЛП(urni))); // Отправляем номер заказа - urni
    //если на сделать задержку на выолнение скрипта Curl (а именно его мы и запускаем),
    //то выполнение кода опередит сохранение ответа в файл, что в свою очередь приведет либо к ошибке (если файла ещё нет),
    //либо прочитаются старые данные файла
    глЗадержка(3);
    глПересохранениеОтветаiFurn("order.json");
    
    Данные = СоздатьОбъект("Текст");
    Данные.КодоваяСтраница(0);
    Данные.Открыть( КаталогИБ() + "urn\order.json");
    КолСтр  = Данные.КоличествоСтрок();
    
    Для н=1 по КолСтр Цикл
        ТекСтр = Данные.ПолучитьСтроку(н);
        //Обработка полученной строки
    КонецЦикла;
    
КонецПроцедуры


Vofka,
23.09.17, 17:31 Универсальная свертка базы данных
Обработка отличная но в ТиСе при запуске просто вылетает 1с
MaxST,

RSS Текстовая версия Сейчас: 28.03.24, 23:53
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!