База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как передать JSON каталог номенклатуры через HTTP-сервис в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 неделя назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
20 января 2026 в 11:45 #35520
как передать json c каталогом номенклатуры через http сервис
-
20 января 2026 в 11:45 #35521
Передать JSON с каталогом номенклатуры через HTTP-сервис в 1С можно с помощью объекта HTTPСоединение и HTTPЗапрос, сформировав тело запроса в формате JSON. Для этого:
1. Подготовьте структуру данных каталога номенклатуры в виде структуры или массива структур 1С, содержащих нужные поля (например, Код, Наименование, Артикул и т.п.).
2. Сериализуйте эту структуру в JSON с помощью метода ЗаписатьJSON().
3. Создайте HTTPСоединение с адресом сервера, куда отправляете запрос.
4. Создайте HTTPЗапрос, укажите метод POST, заголовки (Content-Type: application/json), и установите тело запроса из JSON-строки.
5. Отправьте запрос через HTTPСоединение.ОтправитьДляОбработки().
Пример кода (упрощённый):
&НаСервере Функция ОтправитьКаталогНоменклатуры(АдресСервиса, Каталог) МаксимальноеВремяОжиданияHTTP = 30000; КодУспехаHTTP = 200; ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON, Каталог); ТелоЗапроса = ЗаписьJSON.Закрыть(); Адрес = АдресСервиса; Адрес = СтрЗаменить(Адрес, "https://", ""); Адрес = СтрЗаменить(Адрес, "http://", ""); ПозицияСлэша = СтрНайти(Адрес, "/"); Хост = Адрес; Ресурс = "/"; Если ПозицияСлэша > 0 Тогда Хост = Сред(Адрес, 1, ПозицияСлэша - 1); Ресурс = Сред(Адрес, ПозицияСлэша); КонецЕсли; Порт = 80; SSL = Неопределено; Если СтрНайти(АдресСервиса, "https://") = 1 Тогда Порт = 443; SSL = Новый ЗащищенноеСоединениеOpenSSL(); КонецЕсли; HTTPСоединение = Новый HTTPСоединение(Хост, Порт, , , , , SSL, , , МаксимальноеВремянОжиданияHTTP); Заголовки = Новый Соответствие; Заголовки.Вставить("Content-Type", "application/json"); HTTPЗапрос = Новый HTTPЗапрос(Ресурс, Заголовки); HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8); HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос); Если HTTPОтвет.КодСостояния = КодУспехаHTTP Тогда Возврат HTTPОтвет.ПолучитьТелоКакСтроку(); Иначе Ошибка("Ошибка отправки: " + HTTPОтвет.КодСостояния); Возврат Неопределено; КонецЕсли; КонецФункцииВызов функции:
Каталог = Новый Массив; Элемент = Новый Структура; Элемент.Вставить("Code", "0001"); Элемент.Вставить("Description", "Товар 1"); Элемент.Вставить("Артикул", "A123"); Каталог.Добавить(Элемент); ОтправитьКаталогНоменклатуры("https://server/base/odata/standard.odata/Catalog_Номенклатура", Каталог);Если нужно передавать один элемент, можно передать структуру, если несколько — массив структур.
Если сервис требует аутентификацию, передайте логин и пароль в конструктор HTTPСоединения.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.