(две базы 1с)

ТекстЗапроса передать через http-сервис get, обратно получить результат запроса.

Не получается ТекстЗапроса отправить, запаковываю его в JSON так

```1c
    Функция ЗначениеВJSON(Значение)

    Запись = Новый ЗаписьJSON();
    Запись.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " "));
    СериализаторXDTO.ЗаписатьJSON(Запись, Значение);
    //ЗаписатьJSON(Запрос, Значение);
    Возврат Запись.Закрыть();

    КонецФункции
```

С остальным кодом понятно. Нужна помощь, как запаковать его (в json), когда отправляю его через http сервис.
---
А зачем запаковывать текст запроса? Он же и так строка.
---
Варианты - не пытаться в результате запроса передавать ссылочные данные.
---
Если только все ссылочные поля оборачивать ...

```1c
    ВЫБРАТЬ ПЕРВЫЕ 2
    ПРЕДСТАВЛЕНИЕ(Договор.Ссылка) КАК Ссылка,
```
---
А зачем запаковывать текст запроса? Он же и так строка.
---
А как его передавать как параметр (смотри картинку, прикрепил)?
---
А так не работает?
```1c
    ЗапросHTTP = Новый HTTPЗапрос(АдресСервиса + "?ТекстЗапроса=" + ТекстЗапроса, Заголовки);
```
---
Так получилось:

```1c
    ТекстЗапроса1 = СтрЗаменить(ТекстЗапроса1, Символы.Таб, " ");
    ТекстЗапроса1 = СтрЗаменить(ТекстЗапроса1, Символы.ПС, " ");
    ТекстЗапроса1 = СтрЗаменить(ТекстЗапроса1, Символы.НПП, " ");
```

(что-то в этих строка может быть лишнее т.е. избыточное)
---
Теперь ТаблицуЗначений (результат запроса) нужно вернуть через json как ответ.
---
И в чем затык?
---
Вот так я запаковываю ТаблицуЗначений

```1c
    Функция ЗначениеВJSON(Значение)

    Запись = Новый ЗаписьJSON();
    Запись.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " "));
    СериализаторXDTO.ЗаписатьJSON(Запись, Значение);
    Возврат Запись.Закрыть();

    КонецФункции
```

А вот так пытаюсь её прочитать (по http я её получаю)

```1c
    Функция JSONВЗначение(СтрокаJSON)
    Чтение = Новый ЧтениеJSON();
    Чтение.УстановитьСтроку(СтрокаJSON);
    Возврат СериализаторXDTO.ПрочитатьJSON(Чтение, Тип("ТаблицаЗначений"));

    КонецФункции
```

Ошибка в строке ПрочитатьJSON
---
Давно ли JSON работает с таблицами значений?
---
Так (ниже) работает.

```1c
    тзВнутр = ЗначениеВСтрокуВнутр(тз);
    тз = ЗначениеИзСтрокиВнутр(тзВнутр);
```

А какие ещё варианты передать результат запроса обратно?
---
Варианты - не пытаться в результате запроса передавать ссылочные данные.
---
Например через массив структур:
```1c
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, МассивОрганизаций);

    СтрокаJSON = ЗаписьJSON.Закрыть();
    Ответ.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.ANSI);
```
---
а внутри таблицы значений что? С помощью JSON можно передать только простые типы - строка, число, булево, дата. Ссылки не получится. Придётся свой аналог КД2/КД3 писать. Либо использовать КД2/КД3, а через http гонять файлы обмена.
---
Если только все ссылочные поля оборачивать ...

```1c
    ВЫБРАТЬ ПЕРВЫЕ 2
    ПРЕДСТАВЛЕНИЕ(Договор.Ссылка) КАК Ссылка,
```
---
Еще такой вариант.
Отправка:
```1c
    ХЗ = Новый ХранилищеЗначения(ЧтоУгодно, Новый СжатиеДанных(9));
    ЗапросHTTP.УстановитьТелоИзСтроки(XMLСтрока(ХЗ));
```
Получение:
```1c
    ХЗ = XMLЗначение(Тип("ХранилищеЗначения"), ЗапросHTTP.ПолучитьТелоКакСтроку());
    ЧтоУгодно = ХЗ.Получить();
```