Отправить JSON из табличной части

1. rav1107 25.04.19 07:12 Сейчас в теме
Здравствуйте всем, я хотел бы отправить данные на сайт из документа "Заказ", а в документе есть табличная часть, в одной табличной части документа может быть несколько строк, так вот когда я отправляю данные, то при преобразовании в JSON попадает только первая строка табличной части, как можно сделать так, чтобы каждую строку отправлять по отдельности как новый? помогите пожалуйста.
вот код:


мЗаказ = Заказ.ПолучитьОбъект();
		
	мДата = новый Структура;		
	для каждого Анализы из мЗаказ.МедицинскиеУслуги цикл
		
		мДата.Вставить("data", мЗаказ.Ответственный.Наименование);
        //Данные из табличной части
		мДата.Вставить("analys_code",Анализы.Номенклатура.Артикул);
	КонецЦикла;	
		
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку();	
	ЗаписатьJSON(ЗаписьJSON, мДата);	
	СтрокаДляОтвета = ЗаписьJSON.Закрыть();
	
   Заголовки = Новый Соответствие;
   Заголовки.Вставить("Content-type", "application/json" );

	Соединение = Новый HTTPСоединение("АДРЕС САЙТА",,,,,,);
	
	
	Запрос = Новый HTTPЗапрос("/TODO",Заголовки);
	Запрос.УстановитьТелоИзСтроки(СтрокаДляОтвета,"CESU-8");	
	Соединение.ОтправитьДляОбработки(Запрос);	
	
	Результат = Соединение.Получить(Запрос);
	КодСостояния = Результат.КодСостояния;
	Реквизит1 = Результат.ПолучитьТелоКакСтроку("CESU-8");
	ТекстJSON = СтрокаДляОтвета;

Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 25.04.19 08:14 Сейчас в теме
(1) структура не может иметь несколько одинаковых ключей. Нужно данные элементов табличной части завернуть в массив.
мДата = новый Структура;        
мДата.Вставить("data", мЗаказ.Ответственный.Наименование);
мТЧ = Новый Массив;
для каждого Анализы из мЗаказ.МедицинскиеУслуги цикл
        //Данные из табличной части
    сТЧ = Новый Структура;
    сТЧ.Вставить("analys_code",Анализы.Номенклатура.Артикул);
    мТЧ.Добавить(сТЧ);
КонецЦикла;
мДата.Вставить("analyses", мТЧ);
Показать

Это конечно сайт ваш и его можно править. Иначе смотреть какие на сайте имена.
И данные лучше получать запросом, а то объектное обращение через 2 точки не лучший вариант.
3. rav1107 25.04.19 09:01 Сейчас в теме
(2) я бы хотел , для каждой строки табличной части создавался новый JSON c одинаковыми данными полей документа но с разными строками табличной части, так сделать возможно?
4. spacecraft 25.04.19 09:07 Сейчас в теме
(3) что значит отдельный JSON? Для каждого элемента ТЧ отправлять отдельный запрос с json?
6. rav1107 25.04.19 09:10 Сейчас в теме
(4)(3)т.е если в документе есть реквизит "Ответственный" и ТЧ "Анализы" внутри ТЧ есть 3 строки, вот это нужно отправить 3 раза, с одинаковым Ответственным но разными строками ТЧ.

Я это почему так хочу сделать, потому что при получении я должен получать 3 документа с тремя разными результатами.
9. rav1107 25.04.19 09:21 Сейчас в теме
(4)Это 1С медицина.
Алгоритм так работает, Есть документ "Заказ" и есть врач который пациенту назначает услугу для лаборатории, а при назначении врач может назначить несколько услуг, услуги будут в ТЧ документа и внутри документа есть несколько реквизитов, например "Ответственный", "Пациент" и т.п. При отправке будет это документ Заказ, а при получении это документ "МедицинскийДокумент", при получении каждый ТЧ, будет как отдельный "МедицинскийДокумент". И поэтому думаю отправлять каждый тч в отдельном JSON, вот только не понимаю как это реализовать
10. spacecraft 25.04.19 09:31 Сейчас в теме
(9) я бы рассматривал постобработку на самом сайте. Тогда меньше данных передавать.
Если не хотите обрабатывать на сайте и нужно именной передавать каждый элемент ТЧ отдельным json, тогда обходите ТЧ и внутри цикла делаете POST запрос.
Или предварительно получаете массив структур и обходя его передаете данные на сайт.
Но в этих случаях увеличивается время передачи.
11. rav1107 25.04.19 10:08 Сейчас в теме
12. rav1107 25.04.19 10:11 Сейчас в теме
(10)на сайте я ничего не смогу менять т.к. там другой разработчик
5. tvm 25.04.19 09:09 Сейчас в теме
(3) а смысл? правильнее все же всю тч сразу в массив
7. rav1107 25.04.19 09:12 Сейчас в теме
(5)потому что сайт будет получать как 3 разных документа, а при отправке мне он будет отправлять 3 документа и я должен записать в системе как 3 документа
8. tvm 25.04.19 09:16 Сейчас в теме
(7) тогда заполните Таблицузначений и потом
МассивСтруктур = ОбщегоНазначения.ТаблицаЗначенийВМассив(тз);	
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку();
	ЗаписатьJSON(ЗаписьJSON, МассивСтруктур);
	Резт = ЗаписьJSON.Закрыть();


как-то так
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот