Простая обработка по выгрузке данных из 1с на сайт в формате JSON. Данные JSON формируются динамически из содержимого запроса 1с.
Тестовый запрос делался в УТ 11.
Имеем запрос в обработке:
Запрос.Текст = "ВЫБРАТЬ
| НоменклатураСпр.Код КАК code,
| НоменклатураСпр.Наименование КАК name,
| НоменклатураСпр.Артикул КАК vcode,
| ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК qty,
| ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК price
|ИЗ
| Справочник.Номенклатура КАК НоменклатураСпр
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки
| ПО НоменклатураСпр.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
| ПО НоменклатураСпр.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
|ГДЕ
| НЕ НоменклатураСпр.ЭтоГруппа
| И НЕ НоменклатураСпр.ПометкаУдаления"
Получаем JSON вида:
[
{
"code": "ЦУ-00000053",
"name": "Бутылка ",
"vcode": "",
"qty": 0,
"price": 3
},
....
Меняем запрос:
Запрос.Текст = "ВЫБРАТЬ
| ФизическиеЛица.Наименование КАК Наименование,
| ФизическиеЛица.ИНН КАК ИНН
|ИЗ
| Справочник.ФизическиеЛица КАК ФизическиеЛица";
И получаем соответствующие данные в JSON без каких-либо других изменений:
[
{
"Наименование": "Васечкин Иван Иванович",
"ИНН": ""
},
{
"Наименование": "Бахшиев Павел Иннокентьевич",
"ИНН": ""
},
...
Полученный JSON обработка отправляет по http в теле запроса.
Отправленный запрос и ответ можно посмотреть нажав в обработке кнопку "Отладка".
Получение данных на сайте можно отследить следующим скриптом на PHP (записывает полученные данные в файл)
<?php
$data = file_get_contents('php://input');
$fp = fopen('data1c.json', 'w');
$test = fwrite($fp, $data); // Запись в файл
fclose($fp);
?>
Весь основной код написан в модуле обработки, поэтому легко можно переделать на регламентное задание.
Обработка тестировалась на платформе версии 8.3.12.1616.
Update:
Сделана выгрузка данных ссылочного типа. Допустим, если в запросе добавить ссылку номенклатуры:
Запрос.Текст = "ВЫБРАТЬ
| НоменклатураСпр.Ссылка КАК guid,
| НоменклатураСпр.Код КАК code,
| ""Hello, world"" КАК message,
| НоменклатураСпр.Наименование КАК name,
| НоменклатураСпр.Артикул КАК vcode,
| ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК qty,
| ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК price
|ИЗ
| Справочник.Номенклатура КАК НоменклатураСпр.....
то JSON на выходе будет выглядеть следующим образом:
[
{
"guid": "f93e112a-c83a-11e2-8026-0015e9b8c48d",
"code": "ЦУ-00000053",
"message": "Hello, world",
"name": "Бутылка ",
"vcode": "",
"qty": 0,
"price": 2.2
},
....