Выгрузка данных из 1С в формате JSON на сайт играючи


Простая обработка по выгрузке данных из 1С на сайт в формате JSON. Данные JSON формируются динамически из содержимого запроса 1С.

Простая обработка по выгрузке данных из 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
},
....

 

13 Comments

  1. rakhimov9

    А если перечисление будет в запросе?

    Reply ↓
  2. MarkoSokolov

    (1) Все, что не относится к примитивным типам и не является ссылкой преобразуется к строке.

    Reply ↓
  3. drmaxart

    Обрабатывается ли запрос с итогами, иерархией? Будет формироваться массив с вложенными массивами?

    Reply ↓
  4. MarkoSokolov

    (3) В примере нет. Если только сами реализуете.

    Reply ↓
  5. vladimirdz

    Добрый день. Как можно купить конкретно эту доработку?

    Reply ↓
  6. MarkoSokolov

    (5)Можно скачать за стартмани. Или вы что вы имеете ввиду?

    Reply ↓
  7. vladimirdz

    (6) Чтобы за стар мани скачать нужно разово оформить подписку. А это 4500 руб 10 10 стармани. Я хотел бы купить именно эту разработку без покупки целого пакета. Получается 1 стармани стоит 450 руб. И такой еще вопрос. а есть ли поддержка у данной доработки. может быть сайт какой-то?

    Reply ↓
  8. MarkoSokolov

    (7)Скажу сразу это только пример, шаблон для программиста. Для конкретного решения необходимы будут доработки. По альтернативе получения пишите в личку.

    Reply ↓
  9. vladimirdz

    (8)

    Я понял, что это пример. Вроде заготовки. Подал вам заявку в друзья, так как не вижу кнопки «написать личное сообщение»

    Reply ↓
  10. vladimirdz

    (8) Может я просто не вижу этой кнопки. А можете мне написать?

    Reply ↓
  11. MarkoSokolov

    (10) тоже не получается. Ошибку выдает.

    Reply ↓
  12. vladimirdz

    (11) как же жаль. очень хотелось с вами посотрудничать.

    Reply ↓
  13. vladimirdz

    (11) Еще попытка. Очень надеюсь. Можете мне написать на почту infostart собака volt64 точка ru

    и завяжется переписка.

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *