Выгрузка данных из 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 не будет опубликован. Обязательные поля помечены *