1с http сервис получить json
Формат JSON в 1С до версии 8.3.6 не реализован, но нижет я приведу примеры функций которые можно использовать для полноценной работы JSON в 1С предыдущий версий.
JSON (JavaScript Object Notation) это текстовый формат обмена данными, широко используемый в веб-приложениях. По сравнению с XML он является более лаконичным и занимает меньше места. Кроме этого все браузеры имеют встроенные средства для работы с JSON.
В платформе с версии 8.3.6:
Потоковое чтение и запись JSON:
Объекты потоковой работы - это общие объекты ЧтениеJSON и ЗаписьJSON. Они последовательно читают JSON из файла или строки, или последовательно записывают JSON в файл или строку. Таким образом, чтение и запись JSON происходят без формирования всего документа в памяти.
В качестве иллюстрации потокового чтения JSON можно привести следующий пример:
Результат такой записи:
Сериализация примитивных типов и коллекций в JSON
Вторая группа средств работы с JSON хороша тем, что избавляет вас от рутинной работы по чтению/записи каждого отдельного значения или свойства. При чтении документы JSON отображаются в фиксированный набор типов платформы: Строка, Число, Булево, Неопределено, Массив, ФиксированныйМассив, Структура, ФиксированнаяСтруктура, Соответствие, Дата. Соответственно, в обратную сторону, композиция объектов этих типов позволяет сформировать в памяти и быстро записать в файл структуру JSON. Таким образом, чтение и запись небольшого объема JSON заранее известной структуры можно производить немногими строчками кода.
Основное назначение этих средств мы видим в обмене информацией с внешними системами, чтении конфигурационных файлов в формате JSON.
Сериализацию вы можете выполнять с помощью методов глобального контекста ПрочитатьJSON() и ЗаписатьJSON(). Они работают в связке с объектами ЧтениеJSON и ЗаписьJSON.
В качестве примера десериализации JSON можно рассмотреть чтение массива из двух объектов:
Подробнее вы можете посмотреть здесь
В платформе с версии 8.3.7:
Полностью автоматизировали работу с JSON и реализовали в платформе третью группу средств. Они позволяют сериализовать в JSON прикладные типы 1С:Предприятия: ссылки, объекты, наборы записей и вообще любые типы, для которых поддерживается XDTO сериализация. Конечно же, мы обеспечили и обратную операцию - десериализацию. Зачем это нужно!?
Прежде всего, и в основном, XDTO сериализацию в JSON мы рекомендуем использовать при обмене данными между двумя прикладными решениями 1С:Предприятия. По сравнению с XML формат JSON более компактный, сериализация/десериализация в/из JSON выполняется быстрее. Кроме этого мы предприняли дополнительные меры для того, чтобы сократить объём передаваемых данных.
Использование XDTO сериализации в JSON для других задач видится нам маловероятным. Потому что если внешняя система не готова работать с прикладными типами 1С:Предприятия, то зачем их ей передавать? А если предполагается обмениваться только примитивными типами и коллекциями, то для этой задачи хорошо подходят методы ПрочитатьJSON() и ЗаписатьJSON(). Подробнее здесь
ДО платформы версии 8.3.6, т.е. 8.3.5 и ниже:
На HelpF уже есть статья где описан пример: Работа с форматом JSON в 1С но не приведены функции, вот они:
Примеры их использования:
Похожие FAQ
Еще в этой же категории
Сформированный URL-адрес вводим в браузер. После нажатия Enter скачается файл или отобразится содержимое в формате JSON. Этот файл можно открыть блокнотом и посмотреть что он содержит.
Создаем php файл с текстом:
// Проверка наличия ошибок
if ($output === FALSE)
echo "cURL Error: " . curl_error($ch);
>
//Выводим сервисную информацию по выполнению запроса
$info = curl_getinfo($ch);
echo 'Took ' . $info['total_time'] . ' seconds for url ' . $info['url'];
// Очистка ресурсов
curl_close($ch);
*/
echo "
";
echo "
";
$obj = json_decode ( $output , true );
echo "Выводит все содержимое JSON";
echo "
";
var_dump ( $obj ); // Выводит все содержимое JSON в браузер
echo "
";
echo "
";
echo "Выводит одну запись из массива JSON";
echo "
";
$Code = $obj [1]['Code'];
echo $Code ;
echo "
";
$Naim = $obj [1]['Naim'];
echo $Naim ;
echo "
";
echo "
";
echo "Выводит циклически из массива JSON все записи";
echo "
";
foreach ( $obj as $key => $value)
<
foreach ( $obj [ $key ] as $key => $value )
<
echo $key .':'. $value . PHP_EOL ;
echo "
";
>
>
?>
Результат выполнения
/*
//Первый способ
// Получение файла JSON используя file_get_contents($url)
//отправляем запрос с параметрами
$username = "Администратор";
$password = "1";
$auth = base64_encode("$username:$password"); //Создаем строку авторизации
//по типу Basic auth, для авторизации в веб-сервисе
$context = stream_context_create([
'http' => [
'method' => "GET",
'header' => "Authorization: Basic $auth"
]
]);
$url ='http://localhost/test/hs/ob/OblistAll';
$output = file_get_contents($url, false, $context);
*/
//Второй способ
//Получение файла JSON используя curl
//Авторизация
$username = "Администратор";
$password = "1";
$host_api font-size: medium;">localhost /test";
$ch = curl_init ( $host_api );
// Проверка наличия ошибок
if ( $output === FALSE )
<
echo "cURL Error: " . curl_error ( $ch );
>
//Выводим сервисную информацию по выполнению запроса
$info = curl_getinfo ( $ch );
echo 'Took ' . $info ['total_time'] . ' seconds for url ' . $info ['url'];
// Очистка ресурсов
curl_close ( $ch );
echo "
";
echo "
";
$obj = json_decode ( $output , true );
echo "Выводит все содержимое JSON";
echo "
";
var_dump ( $obj ); // Выводит все содержимое JSON в браузер
echo "
";
echo "
";
echo "Выводит одну запись из массива JSON";
echo "
";
$Code = $obj [1]['Code'];
echo $Code ;
echo "
";
$Naim = $obj [1]['Naim'];
echo $Naim ;
echo "
";
echo "
";
echo "Выводит циклически из массива JSON все записи";
echo "
";
foreach ( $obj as $key => $value)
<
foreach ( $obj [ $key ] as $key => $value )
<
echo $key .':'. $value . PHP_EOL ;
echo "
";
>
>
?>
Функция ОборудованиеПоНаименованиюМетодPost ( Запрос )
//Получаем параметр запроса
НаименованиеОборудования = Запрос . ПараметрыЗапроса . Получить ( "naim" );
//Ищем оборудование
Оборудование = Справочники . Оборудование . НайтиПоНаименованию ( НаименованиеОборудования );
Если НЕ ЗначениеЗаполнено ( Оборудование ) Тогда
Оборудование = Справочники . Оборудование . СоздатьЭлемент ();
Оборудование . Наименование = НаименованиеОборудования ;
Оборудование . Записать ();
Иначе
Оборудование = Оборудование . ПолучитьОбъект ();
КонецЕсли;
//Формируем структуру из найденной записи
ДанныеОборудования = Новый Структура ;
ДанныеОборудования . Вставить ( "code" , Оборудование . Код );
ДанныеОборудования . Вставить ( "naim" , Оборудование . Наименование );
/ /Сериализуем данные в JSON
ЗаписьJOIN = Новый ЗаписьJSON ;
ЗаписьJOIN . УстановитьСтроку ();
ЗаписатьJSON ( ЗаписьJOIN , ДанныеОборудования );
СтрокаДляОтвета = ЗаписьJOIN . Закрыть ();
//Формируем ответ клиенту
Ответ = Новый HTTPСервисОтвет ( 200 );
Ответ . Заголовки . Вставить ( "Content-type" , "application/JOIN; charset=utf-8" );
Ответ . УстановитьТелоИзСтроки ( СтрокаДляОтвета , КодировкаТекста . UTF8 ,
ИспользованиеByteOrderMark . НеИспользовать );
Возврат Ответ ;
КонецФункции
6. Fiddler авторизация
Если в 1С имеются пользователи, то запрос в программе Fiddler без авторизации не выполнить, будет выдаваться ошибка авторизации 401.
JSON (JavaScript Object Notation) это текстовый формат обмена данными, широко используемый в веб-приложениях. По сравнению с XML он является более лаконичным и занимает меньше места. Кроме этого все браузеры имеют встроенные средства для работы с JSON.
В платформе реализовано несколько слоёв работы с JSON. Самые простые и гибкие — это низкоуровневые средства потоковой записи и чтения. Более высокоуровневые и не такие универсальные — средства сериализации в JSON примитивных типов и коллекций 1С:Предприятия. И, наконец, третий слой это средства, позволяющие сериализовать/десериализовать прикладные типы 1С:Предприятия: ссылки, объекты, наборы записей и вообще любые типы, для которых поддерживается XDTO сериализация.
Потоковое чтение и запись JSON
Объекты потоковой работы последовательно читают данные в формате JSON из файла или строки, или последовательно записывают их в файл или строку. Таким образом, чтение и запись данных происходят без формирования всего документа в памяти.
Потоковая запись JSON может выглядеть следующим образом. Записывается массив из четырёх элементов. Три из них примитивного типа, а четвёртый элемент — это объект с двумя свойствами:
Результат такой записи:
Сериализация примитивных типов и коллекций
Вторая группа средств работы с JSON хороша тем, что избавляет от рутинной работы по чтению/записи каждого отдельного значения или свойства. При чтении документы JSON отображаются в фиксированный набор типов платформы: Строка, Число, Булево, Неопределено, Массив, ФиксированныйМассив, Структура, ФиксированнаяСтруктура, Соответствие, Дата. Соответственно, в обратную сторону, композиция объектов этих типов позволяет сформировать в памяти и быстро записать в файл структуру JSON. Таким образом, чтение и запись небольшого объема JSON заранее известной структуры можно производить немногими строчками кода.
Основное назначение этих средств в обмене информацией с внешними системами, чтении конфигурационных файлов в формате JSON.
Пример сериализации (записи) в JSON может выглядеть так:
Сериализация прикладных типов 1С:Предприятия
Прежде всего, и в основном, XDTO сериализацию в JSON рекомендуется использовать при обмене данными между двумя прикладными решениями 1С:Предприятия. Также этот механизм можно использовать и для обмена с внешними системами, готовыми принимать типы данных 1С:Предприятия.
Простейший код, выполняющий сериализацию элемента справочника, может выглядеть так:
В результате будет получен файл JSON следующего содержания:
Функции преобразования и восстановления при сериализации
Не всегда сериализация может быть выполнена полностью автоматически. В жизни встречаются самые разные ситуации. Поэтому существует возможность использовать «самописную» функцию обработки значений при записи в JSON и при чтении из JSON.
При записи в JSON эта функция полезна потому, что позволяет самостоятельно преобразовать в JSON те типы, которые не подлежат автоматическому преобразованию. Или даже совсем отказаться от их сериализации.
При чтении из JSON функция восстановления может использоваться для того, чтобы преобразовать данные JSON в типы 1С, которые не могут являться результатом автоматического преобразования, или для того, чтобы самостоятельно (не автоматически) преобразовать даты JSON в даты 1С:Предприятия.
Во процессе десереализации прикладных типов 1С:Предприятия функция восстановления может потребоваться, например, для того, чтобы при переносе данных из одного прикладного решения в другое, заменить в них ссылки на связанные объекты. Так, чтобы после переноса эти данные ссылались уже на объекты новой базы. Или, например, для того, чтобы удалить из данных информацию, имеющую смысл только в исходной базе.
Автоматически генерируемый REST интерфейс прикладных решений
При обращении к REST интерфейсу прикладного решения можно получать ответ в формате JSON. Есть возможность управлять объёмом передаваемой информации за счёт изменения детальности представления метаданных в выгрузке. Существуют три уровня: минимальный, средний и максимальный. Однако при этом нужно учитывать, что сокращение объёма передаваемой информации приводит к более интенсивным вычислениям на клиенте. И наоборот, когда вся информация включается в выгрузку, объём вычислений на клиенте будет минимальным.
Формат JSON в 1С до версии 8.3.6 не реализован, но нижет я приведу примеры функций которые можно использовать для полноценной работы JSON в 1С предыдущий версий.
JSON (JavaScript Object Notation) это текстовый формат обмена данными, широко используемый в веб-приложениях. По сравнению с XML он является более лаконичным и занимает меньше места. Кроме этого все браузеры имеют встроенные средства для работы с JSON.
В платформе с версии 8.3.6:
Потоковое чтение и запись JSON:
Объекты потоковой работы - это общие объекты ЧтениеJSON и ЗаписьJSON. Они последовательно читают JSON из файла или строки, или последовательно записывают JSON в файл или строку. Таким образом, чтение и запись JSON происходят без формирования всего документа в памяти.
В качестве иллюстрации потокового чтения JSON можно привести следующий пример:
Результат такой записи:
Сериализация примитивных типов и коллекций в JSON
Вторая группа средств работы с JSON хороша тем, что избавляет вас от рутинной работы по чтению/записи каждого отдельного значения или свойства. При чтении документы JSON отображаются в фиксированный набор типов платформы: Строка, Число, Булево, Неопределено, Массив, ФиксированныйМассив, Структура, ФиксированнаяСтруктура, Соответствие, Дата. Соответственно, в обратную сторону, композиция объектов этих типов позволяет сформировать в памяти и быстро записать в файл структуру JSON. Таким образом, чтение и запись небольшого объема JSON заранее известной структуры можно производить немногими строчками кода.
Основное назначение этих средств мы видим в обмене информацией с внешними системами, чтении конфигурационных файлов в формате JSON.
Сериализацию вы можете выполнять с помощью методов глобального контекста ПрочитатьJSON() и ЗаписатьJSON(). Они работают в связке с объектами ЧтениеJSON и ЗаписьJSON.
В качестве примера десериализации JSON можно рассмотреть чтение массива из двух объектов:
Подробнее вы можете посмотреть здесь
В платформе с версии 8.3.7:
Полностью автоматизировали работу с JSON и реализовали в платформе третью группу средств. Они позволяют сериализовать в JSON прикладные типы 1С:Предприятия: ссылки, объекты, наборы записей и вообще любые типы, для которых поддерживается XDTO сериализация. Конечно же, мы обеспечили и обратную операцию - десериализацию. Зачем это нужно!?
Прежде всего, и в основном, XDTO сериализацию в JSON мы рекомендуем использовать при обмене данными между двумя прикладными решениями 1С:Предприятия. По сравнению с XML формат JSON более компактный, сериализация/десериализация в/из JSON выполняется быстрее. Кроме этого мы предприняли дополнительные меры для того, чтобы сократить объём передаваемых данных.
Использование XDTO сериализации в JSON для других задач видится нам маловероятным. Потому что если внешняя система не готова работать с прикладными типами 1С:Предприятия, то зачем их ей передавать? А если предполагается обмениваться только примитивными типами и коллекциями, то для этой задачи хорошо подходят методы ПрочитатьJSON() и ЗаписатьJSON(). Подробнее здесь
ДО платформы версии 8.3.6, т.е. 8.3.5 и ниже:
На HelpF уже есть статья где описан пример: Работа с форматом JSON в 1С но не приведены функции, вот они:
Примеры их использования:
Похожие FAQ
1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э PostgreSQL: установка, настройка, обслуживание 11
PostgreSQL напрямую "из коробки" применяться для использования с 1С Предприятем не может. Необходима именно адаптированная версия от 1С, превращающая PostgreSQL в блокировочник, причем нужно понимать, что блокировки будут накладываться на всю таблиц rphost занимает память и грузит процессор 19
У многих возникают проблемы с rphost.exe, разного вида: rphost занимает всю память rphost грузит процессор rphost жрет память причем 1С даже на запущена, а в диспетчере следующее: ежеминутно расчет на 2-3 мегабайта. Как быть и что делат Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 3
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же Посмотреть все результаты поиска похожих
Читайте также: