Отправка данных на сайт post - запросом в формате JSON

11.09.17

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

Пример использования стандартных механизмов платформы 1С, начиная с версии 8.3.6.1977.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Отправка данных на сайт post - запросом в формате JSON :
.epf 8,07Kb
63
63 Скачать (1 SM) Купить за 1 850 руб.

JSON (JavaScript Object Notation) это текстовый формат обмена данными, широко используемый в веб-приложениях. По сравнению с XML он является более лаконичным и занимает меньше места. Кроме этого все браузеры имеют встроенные средства для работы с JSON.

Необходимость работы с этим форматом на уровне платформы обусловлена не только тем, что это «модный современный» формат, который прикладные решения 1С:Предприятия сами по себе могут использовать для интеграции со сторонними приложениями. Другая причина заключается ещё и в том, что JSON активно используется в HTTP интерфейсах. А в 1С:Предприятии как раз есть такие механизмы, в которых хочется использовать этот формат. Это REST интерфейс приложения, автоматически генерируемый платформой, и HTTP-сервисы, которые вы можете создавать самостоятельно. (источник: http://v8.1c.ru/o7/201410json/index.htm). 

 

Простой код отправки данных выглядит так:

//здесь выполняем запрос, в котором есть данные о нашых товарах (код товара (sku), 
//Наименование товара(name), цена(price) и остаток(qty))
Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    

    //Создали запись ЗаписьJSON
    ЗаписьJSON = Новый ЗаписьJSON;
    //Задаем параметры без переноса строк, можно и с переносом, как кому нравится
    тПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина);  
    ЗаписьJSON.УстановитьСтроку(тПараметрыJSON); 
    
    
    МассивДанныхJSON = Новый Массив;
    СтруктураДанныхJSON = Новый Структура; 

    //Выбираем данные из запроса и записываем в массив "МассивДанныхJSON"       

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 
       // Каждая запись товара у нас отдельная структура...
              тДанные = Новый Структура;
                тДанные.Вставить("sku", ВыборкаДетальныеЗаписи.sku);
                тДанные.Вставить("name", ВыборкаДетальныеЗаписи.name);
                тДанные.Вставить("price", ВыборкаДетальныеЗаписи.price);
                тДанные.Вставить("qty", ВыборкаДетальныеЗаписи.qty);
       //Добавляем структуру с информацией о товаре в наш массив "МассивДанныхJSON" 
               МассивДанныхJSON.Добавить(тДанные);
                
    КонецЦикла;    
    // вставляем наш массив в ещеодну структуру
    СтруктураДанныхJSON.Вставить("test", МассивДанныхJSON);

    ЗаписатьJSON(ЗаписьJSON, СтруктураДанныхJSON);
    //Здесь нам платформа переделала нашу сложную структуру в строку данных в формате JSON 
    СтрокаJS = ЗаписьJSON.Закрыть();
    //В этот файл для примера наш сайт сформирует ответ после отправки на него данных методом POST
    ФайлОтвета = КаталогВременныхФайлов()+ "\answer.txt";
  
    //здесь надо указать путь к сайту
    HTTPСоединение = Новый HTTPСоединение("mysite.com/download.php");
    //создаем запрос данных методом POST
    запросPOST = Новый HTTPЗапрос("POST"); 
    
//это обязательный заголовок тела запроса
    запросPOST.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
//Здесь задаем текст нашей отформатированной строки + задаем формат сроки 
    запросPOST.УстановитьТелоИзСтроки("mData="+СтрокаJS,"windows-1251",ИспользованиеByteOrderMark.НеИспользовать);
    
    
    
    Попытка
//Отправляем для обрааботки на наш сервер
        HTTPСоединение.ОтправитьДляОбработки(запросPOST, ФайлОтвета);
            
    Исключение
        #Если клиент Тогда
           Сообщить(ОписаниеОшибки());
        #КонецЕсли   
    КонецПопытки;

 

Обработка выгрузка сайт POST JSON

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

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

36000 руб.

03.08.2020    17782    19    22    

16

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    19847    13    17    

16

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    14422    42    8    

18

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    1172    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. webester 26 12.09.17 06:31 Сейчас в теме
Ни одного комментария, ни в самом коде, не после. Ну да мы же программисты можем сами открыть СП и разобраться, что ты написал и почему. Но как бы смысл тогда в статье, если все равно надо лезть в СП?
maxopik2; Bassgood; +2 Ответить
3. vaniiok 34 12.09.17 11:16 Сейчас в теме
(1)Извините, исправил
Kernel38; Enziger; Alligator48; webester; +4 Ответить
2. kirillkr 29 12.09.17 08:40 Сейчас в теме
Зачем сохранять ответ от сервера в файле? Не надо захламлять сервер временными файлами. У него и без Вас полно мусора от самой системы.
simuljakr; +1 Ответить
4. vaniiok 34 12.09.17 11:17 Сейчас в теме
(2)это пример, можно и без этого
5. Идальго 234 12.09.17 21:32 Сейчас в теме
(2) Как вариант, результат сохраняют в файл для того, чтобы затем его последовательно прочитать (чтоб память пожалеть) или переслать/сохранить. Первый случай особенно полезен, если ответ мегадлинный(большой), или вообще состоит из нескольких частей, которые затем можно "склеить".
6. kirillkr 29 12.09.17 23:56 Сейчас в теме
(5) А есть системы с маленьким жестким диском для сервера приложений, но большим объемом памяти.
А в данном примере не показано удаление этого файла после обработки результата.
7. kaps22 20 18.03.19 11:27 Сейчас в теме
//создаем запрос данных методом POST
запросPOST = Новый HTTPЗапрос("POST");

хорошо бы пометить, что здесь вместо "POST" должен быть адрес ресурса.

Новый HTTPЗапрос(АдресРесурса,Заголовки)
гвость; savauu; AskezaMax; vaniiok; +4 Ответить
8. Teut_Vlad 191 12.07.19 12:22 Сейчас в теме
СтрокаJS = ЗаписьJSON.Закрыть();

если поставить точку останова тут, то ЗаписьJSON.Закрыть() будет строкой, а СтрокаJS Неопределенно
И если дальше шагнуть, то то и то станет Неопределенно
1С:Предприятие 8.3 (8.3.13.1513)
9. xabigv 16.10.19 07:21 Сейчас в теме
(8)
СтрокаJS = ЗаписьJSON.Закрыть();

попробуй убрать строку
ЗаписьJSON.ОткрытьФайл
если имеется
10. ksnik 593 05.07.20 18:09 Сейчас в теме
Отправка данных на сайт Drupal9 post - запросом в формате JSON

Вариация на тему -вот так я добавил пост на сайт Drupal9 (https://www.drupal.org) из 1с8:
HTTPСоединение = Новый HTTPСоединение("localhost",,"НовиковАВ","123123");
    //создаем запрос данных методом POST
    запросPOST = Новый HTTPЗапрос("/jsonapi/node/article"); 
    запросPOST.Заголовки.Вставить("Accept","application/vnd.api+json");
    запросPOST.Заголовки.Вставить("Content-type","application/vnd.api+json");
    запросPOST.Заголовки.Вставить("X-CSRF-Token","Hwz_Hvp4gg2xn9tqo5KVdjOfNPYJFrdZokHe0grop5Q");
    СтрокаJS =     
    "{
    |  ""data"": {
    |    ""type"": ""node--article"",
    |    ""attributes"": {
    |      ""title"": ""My custom title"",
    |      ""body"": {
    |        ""value"": ""Custom value"",
    |        ""format"": ""plain_text""
    |      }
    |    }
    |  }
    |}";
    Сообщить(СтрокаJS);
    запросPOST.УстановитьТелоИзСтроки(СтрокаJS,"windows-1251",ИспользованиеByteOrderMark.НеИспользовать);
    Попытка
        HTTPСоединение.ОтправитьДляОбработки(запросPOST, ФайлОтвета);
    Исключение
        #Если клиент Тогда
           Сообщить(ОписаниеОшибки());
        #КонецЕсли   
    КонецПопытки;
Показать
asdPerepel; user875116; user591389_aska_rabota; manlak; horsgroup; user603384_natikjjj; user1201748; MikStyle; AskezaMax; +9 Ответить
11. MikStyle 276 23.06.21 09:35 Сейчас в теме
(10) Спасибо добрый человек. Очень помог твой комментарий. Реально все заработало.
14. user875116 27.02.24 22:08 Сейчас в теме
(10) Уважаемый коллега, доброго вам времени суток.
Я попробовал ваш пример и у меня возник вопрос.
Если вас не затруднит, проясните мне пожалуйста ситуацию.
У меня вот такая ошибка:
запросPOST.УстановитьТелоИзСтроки(СтрокаJS,"windows-1251",ИспользованиеByteOrderMark.НеИспользовать) {<Неизвестный модуль>(1)}: Обращение к процедуре объекта как к функции (УстановитьТелоИзСтроки)
Прикрепленные файлы:
12. Cat-Ek 25.05.22 14:02 Сейчас в теме
ЗаписатьJSON(ЗаписьJSON, СтруктураДанныхJSON);
по причине: Передано значение недопустимого типа
zigrein63; +1 Ответить
13. zigrein63 31.03.23 09:39 Сейчас в теме
(12) (Ответ для тех, кто будет искать)

<Значение> (обязательный)
Тип: Произвольный.
Объект записи JSON. Меняет состояние потока записи.
Представляет собой значение произвольного типа.
В формате JSON допускается записывать только значения следующих типов:
Строка,
Число,
Булево,
Дата (преобразованная в строку),
Массив,
ФиксированныйМассив,
Структура,
ФиксированнаяСтруктура,
Соответствие,
ФиксированноеСоответствие.
Ключ соответствия (или фиксированного соответствия) должен иметь тип Строка. В противном случае, будет вызвано исключение.
Если будет передано значение, отличное от перечисленных, оно должно быть преобразвоано с помощью функции преобразования.
При попытке записать значение недопустимого типа будет вызвано исключение.


Посмотри какие у тебя типы данных в структуре
Оставьте свое сообщение