HTTP/API Tester для 1С: проверка REST API, GET/POST, JSON, Bearer, Basic и HTTPS

15.09.26

Интеграция - WEB-интеграция

Внешняя обработка для ручной проверки HTTP/HTTPS-запросов непосредственно из 1С. Позволяет задавать метод, URL, заголовки, авторизацию и тело запроса, а затем смотреть HTTP-код, заголовки, время, размер и содержимое ответа. Подойдёт разработчикам 1С, которые занимаются REST API и другими HTTP-интеграциями. Тестирование выполнялось на Демонстрационном приложении „1С:Предприятие 8.5“.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
HTTP/API Tester для 1С, версия 1.0
.zip 12,20Kb ver:1.0
1 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

HTTP/API Tester — небольшой универсальный HTTP-клиент внутри 1С:Предприятия. Он нужен для случаев, когда требуется быстро проверить внешний API или собственный HTTP-сервис именно из среды 1С, не создавая для каждой проверки временную обработку.

HTTP/API Tester — общий вид
Общий вид обработки. Для запроса можно задавать метод, URL, таймаут и произвольные HTTP-заголовки.

Что умеет обработка

  • Методы: GET, POST, PUT, PATCH, DELETE.
  • Адрес: HTTP и HTTPS, нестандартные порты, путь и параметры запроса.
  • Заголовки: произвольный список, отдельное включение/отключение строк.
  • Авторизация: без авторизации, Bearer Token и Basic Auth.
  • Тело запроса: текст или JSON; если тело не нужно, его можно не задавать.
  • Ответ: HTTP-код, статус, заголовки, время, размер, исходный текст и форматированный JSON.
  • JSON: форматирование запроса и автоматическое форматирование корректного JSON-ответа.
  • Диагностика: некорректный URL, ошибки DNS и соединения, таймауты и TLS.

Ответы 4xx и 5xx остаются обычными HTTP-ответами: можно посмотреть код и тело. Если до сервера вообще не удалось достучаться — например, из-за DNS, таймаута или TLS, — причина выводится отдельно на вкладке диагностики.

Пример: POST с JSON

Для POST/PUT/PATCH можно отправить обычный текст или JSON. Если Content-Type не задан вручную, обработка подставит его сама: для JSON — application/json; charset=utf-8, для текста — text/plain; charset=utf-8.

POST JSON в HTTP API Tester
Пример POST-запроса с JSON-телом. JSON можно отформатировать прямо в обработке.

Как формируются заголовки и тело

В запрос попадают только включённые строки таблицы заголовков. Здесь же добавляются параметры авторизации и автоматический Content-Type.

    Заголовки = Новый Соответствие;
    Для Каждого СтрокаЗаголовка Из ЗаголовкиЗапроса Цикл
        Если СтрокаЗаголовка.Использовать И НЕ ПустаяСтрока(СокрЛП(СтрокаЗаголовка.Имя)) Тогда
            Заголовки.Вставить(СокрЛП(СтрокаЗаголовка.Имя), СтрокаЗаголовка.Значение);
        КонецЕсли;
    КонецЦикла;

    Если ТипАвторизации = "Bearer" Тогда
        Заголовки.Вставить("Authorization", "Bearer " + BearerToken);
    ИначеЕсли ТипАвторизации = "Basic" Тогда
        СтрокаАвторизации = BasicLogin + ":" + BasicPassword;
        ДвоичныеДанныеАвторизации = ПолучитьДвоичныеДанныеИзСтроки(СтрокаАвторизации, КодировкаТекста.UTF8);
        СтрокаBase64 = Base64Строка(ДвоичныеДанныеАвторизации);
        СтрокаBase64 = СтрЗаменить(СтрокаBase64, Символы.ПС, "");
        СтрокаBase64 = СтрЗаменить(СтрокаBase64, Символы.ВК, "");
        Заголовки.Вставить("Authorization", "Basic " + СтрокаBase64);
    КонецЕсли;

    Если НЕ ЕстьЗаголовок(Заголовки, "Content-Type") Тогда
        Если ТипТела = "JSON" Тогда
            Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
        ИначеЕсли ТипТела = "Text" Тогда
            Заголовки.Вставить("Content-Type", "text/plain; charset=utf-8");
        КонецЕсли;
    КонецЕсли;

    HTTPЗапрос = Новый HTTPЗапрос(ПараметрыURL.Путь, Заголовки);

    Если ТипТела <> "Нет" И НЕ ПустаяСтрока(ТелоЗапроса) Тогда
        HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);

Bearer Token и Basic Auth

Для типовых API предусмотрены два готовых режима авторизации. При Bearer обработка формирует заголовок Authorization: Bearer .... Для Basic Auth пара логин/пароль кодируется в Base64 и также передаётся через заголовок Authorization.

Bearer авторизация
Режим Bearer. Поле токена отображается только при выбранном соответствующем типе авторизации.

HTTP и HTTPS

URL разбирается на схему, хост, порт и путь. Если порт не задан, используются стандартные значения: 80 для HTTP и 443 для HTTPS. Для HTTPS создаётся защищённое соединение средствами платформы 1С.

    ЗащищенноеСоединение = Неопределено;
    Если ПараметрыURL.Схема = "https" Тогда
        ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL;
    КонецЕсли;

    Попытка
        МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
        Соединение = Новый HTTPСоединение(
            ПараметрыURL.Хост,
            ПараметрыURL.Порт,
            ,
            ,
            ,
            ТаймаутСекунд,
            ЗащищенноеСоединение);

        HTTPОтвет = Соединение.ВызватьHTTPМетод(ВРег(МетодHTTP), HTTPЗапрос);
Практический момент: запрос выполняется серверной процедурой 1С. Поэтому в клиент-серверном варианте доступ к целевому адресу и доверие к TLS-сертификату должны быть настроены на стороне сервера 1С, а не только на рабочем компьютере пользователя.

Что видно в ответе

После отправки обработки показывает HTTP-код, текстовый статус, время выполнения и размер тела. Отдельно доступны исходное тело, форматированный JSON, заголовки ответа и диагностика.

Форматированный JSON-ответ
Успешный ответ: 200 OK, время, размер и автоматически отформатированный JSON.

Разбор ответа

    ВремяОтветаМс = МоментОкончания - МоментНачала;
    КодОтвета = HTTPОтвет.КодСостояния;
    СтатусОтвета = ТекстHTTPСтатуса(КодОтвета);

    Попытка
        ДвоичныеДанныеОтвета = HTTPОтвет.ПолучитьТелоКакДвоичныеДанные();
        РазмерОтвета = ДвоичныеДанныеОтвета.Размер();
    Исключение
        РазмерОтвета = 0;
    КонецПопытки;

    Попытка
        ТелоОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
    Исключение
        ТелоОтвета = "";
        ТекстОшибки = "Не удалось прочитать тело ответа как текст: " + ОписаниеОшибки();
    КонецПопытки;

    Для Каждого ПараЗаголовка Из HTTPОтвет.Заголовки Цикл
        НоваяСтрока = ЗаголовкиОтвета.Добавить();
        НоваяСтрока.Имя = ПараЗаголовка.Ключ;
        НоваяСтрока.Значение = ПараЗаголовка.Значение;
    КонецЦикла;

    РезультатФорматирования = ФорматироватьJSONБезИсключения(ТелоОтвета);
    Если РезультатФорматирования.Успех Тогда
        ТелоОтветаJSON = РезультатФорматирования.Текст;
    КонецЕсли;

Если тело является корректным JSON, оно дополнительно форматируется для чтения. Если JSON повреждён или сервер вернул обычный текст, исходное тело при этом не теряется.

Функция ФорматироватьJSONБезИсключения(ТекстJSON)
    Результат = Новый Структура("Успех,Текст,Ошибка", Ложь, "", "");

    Если ПустаяСтрока(ТекстJSON) Тогда
        Результат.Ошибка = "JSON пуст.";
        Возврат Результат;
    КонецЕсли;

    Попытка
        Чтение = Новый ЧтениеJSON;
        Чтение.УстановитьСтроку(ТекстJSON);
        Данные = ПрочитатьJSON(Чтение);
        Чтение.Закрыть();

        Запись = Новый ЗаписьJSON;
        Запись.УстановитьСтроку(Новый ПараметрыЗаписиJSON(, Символы.Таб));
        ЗаписатьJSON(Запись, Данные);
        Результат.Текст = Запись.Закрыть();
        Результат.Успех = Истина;
    Исключение
        Результат.Ошибка = ОписаниеОшибки();
    КонецПопытки;

    Возврат Результат;
КонецФункции

Ошибки соединения и таймауты

При работе с API полезно различать ответ сервера и ошибку соединения. Например, 404 Not Found — обычный HTTP-ответ: сервер доступен и вернул статус 404. Таймаут — другая ситуация: ответа за заданное время получить не удалось.

Диагностика timeout
При таймауте код HTTP не подменяется фиктивным значением, а причина выводится в диагностике.

Обработка также диагностирует:

  • пустой или некорректный URL;
  • неподдерживаемую схему адреса;
  • ошибку определения имени сервера;
  • сервер отклонил соединение;
  • SSL/TLS error.

Как пользоваться

  1. Открыть внешнюю обработку HTTPAPITester.epf.
  2. Выбрать HTTP-метод и указать URL.
  3. При необходимости добавить заголовки.
  4. Настроить Bearer или Basic Auth.
  5. Для POST/PUT/PATCH выбрать тип тела и заполнить текст или JSON.
  6. Нажать «Отправить».
  7. Посмотреть код, тело, JSON, заголовки ответа или вкладку диагностики.

Устанавливать обработку в конфигурацию не требуется: файл можно открыть как обычную внешнюю обработку. Кнопка «Очистить ответ» сбрасывает результат предыдущего запроса, не заставляя заново собирать параметры нового запроса.

Совместимость

Обработку проверяли на платформе 1С:Предприятие 8.5.1.1150 в Демонстрационном приложении «1С:Предприятие 8.5». Она не обращается к объектам конкретной прикладной конфигурации, поэтому её можно использовать как универсальный инструмент для проверки HTTP/API.

Что входит в архив

В HTTPAPITester.zip два файла:

  • HTTPAPITester.epf — сама обработка. Достаточно открыть её через «Файл → Открыть» и можно работать.
  • mock_api.py — небольшой локальный тестовый сервер. Он пригодится, если хочется проверить запросы, заголовки, авторизацию, JSON, разные HTTP-статусы и таймауты без обращения к внешнему сервису. Для обычной работы обработки он не нужен.

Для запуска mock API нужен Python 3 без сторонних библиотек: python mock_api.py. После запуска можно проверить адрес http://127.0.0.1:19090/ping.

Код обработки открыт. При желании его можно посмотреть и доработать под свои задачи; если нужен просто готовый инструмент, достаточно распаковать архив и открыть HTTPAPITester.epf.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

WEB-интеграция Программист Бизнес-аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17568 руб.

20.12.2024    7188    32    4    

32

WEB-интеграция Анализ продаж Системный администратор Программист Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    44189    76    45    

32

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

42700 руб.

03.08.2020    25268    39    26    

29

WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена по API между конфигурацией 1С:Альфа-Авто 6 и порталом LogicStar. Позволяет работать с несколькими обменами LogicStars разных брендов (CHERY, OMODA, JAECOO, EXEED, TENET) в одной информационной базе в ручном и автоматическом режиме. Поддерживается выгрузка заказ-нарядов, реализаций товаров и товарных остатков.

20740 руб.

13.05.2025    2746    4    0    

7

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Расширение для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

24000 руб.

02.02.2021    23924    72    52    

44
Для отправки сообщения требуется регистрация/авторизация