База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как передать JSON каталог номенклатуры через HTTP-сервис в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 3 недели, 6 дней назад сделано
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Соединение.ОтправитьДляОбработки().
Пример кода (упрощённый):
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445&НаСервереФункция ОтправитьКаталогНоменклатуры(АдресСервиса, Каталог)МаксимальноеВремяОжидания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Ответ.КодСостояния);Возврат Неопределено;КонецЕсли;КонецФункцииВызов функции:
1С (Код)12345678Каталог = Новый Массив;Элемент = Новый Структура;Элемент.Вставить("Code", "0001");Элемент.Вставить("Description", "Товар 1");Элемент.Вставить("Артикул", "A123");Каталог.Добавить(Элемент);ОтправитьКаталогНоменклатуры("https://server/base/odata/standard.odata/Catalog_Номенклатура", Каталог);Если нужно передавать один элемент, можно передать структуру, если несколько — массив структур.
Если сервис требует аутентификацию, передайте логин и пароль в конструктор HTTPСоединения.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.