Имя: Пароль:
1C
 
Работа со строкой JSON в 1с
,
0 Человек15
 
naïve
02.12.24
10:58
Добрый День всем.
Не получается заполнить ТЧ в документе. Документ создается, ТЧ пустая

Вложенность JSON вот такая (кусок)
Подробности
{
    "count": 8974,
    "data": [
        {
            "ID": 343106,
            "ID_внешней_системы": "10406854",
            "Тип_помещения": "Квартира",
            "Позиция_на_этаже": 1,
            "Номер": "1",
            "Этаж": 1,
            "ID_этажа": 37524,
            "Название_секции": "Секция 1",
            "Цифра_секции": 1,
            "ID_секции": 5282,
            "Название_дома": "Дом №1",
            "ID_дома": 3066,
            "Название_проекта": "ЖК Основа",
            "ID_проекта": 632,
            "Валюта": "Российский рубль",
            "Стоимость": 4452687,
            "Стоимость_м2": 96462.02,
            "Стоимость_по_прайсу": 4452687,
            "Стоимость_по_прайсу_м2": 96462.02,
            "Площадь_с_коэф_лп": 46.16,
            "Площадь_без_коэф_лп": null,
            "Площадь_с_полными_лп": null,
            "Площадь_основная": 46.16,
            "Площадь_жилая": 30.23,
            "Площадь_кухни": null,
            "Площадь_БТИ": null,
            "Площадь_БТИ_жилая": null,
            "Площадь_БТИ_вспомогательная": null,
            "Площадь_БТИ_лп": null,
            "Колво_комнат": 2,
            "Высота_потолка": null,
            "Знак_комнатности": "2",
            "Студийный_формат": "нет",
            "Статус_помещения": "Продано",
            "Комментарий": null,
            "Код_планировки": "2С - 46,16 - БС1(1)",
            "Код_планировки_каталога": null,
            "Организация": {
                "ID": null,
                "Название": "",
                "ИНН": "",
                "КПП": "",
                "ОГРН": ""
            },
            "Пользовательские_параметры": {
                "Куда_выходят_окна": "",
                "Кол_во_лоджий": null,
                "Кол_во_балконов": null,
                "Кол_во_совмещенных_санузлов": null,
                "Кол_во_раздельных_санузлов": null
            }
        },
        {
            "ID": 343107,
            "ID_внешней_системы": "10406855",
            "Тип_помещения": "Квартира",
            "Позиция_на_этаже": 2,
            "Номер": "2",
            "Этаж": 1,
            "ID_этажа": 37524,
            "Название_секции": "Секция 1",
            "Цифра_секции": 1,
            "ID_секции": 5282,
            "Название_дома": "Дом №1",
            "ID_дома": 3066,
            "Название_проекта": "ЖК Основа",
            "ID_проекта": 632,
            "Валюта": "Российский рубль",
            "Стоимость": 3416400,


Из последнего вложенного объекта мне нужно пару значений.
это делаю я

	
	ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
	СоответствиеПолей = Новый Соответствие;
	СоответствиеПолей.Вставить("ID","ProfitbaseID");
	СоответствиеПолей.Вставить("Стоимость_м2","Цена");
	СоответствиеПолей.Вставить("Стоимость","Стоимость");
	СоответствиеПолей.Вставить("Площадь_основная","ОбщаяПлощадь");
	Чтение = Новый ЧтениеJSON;
	Чтение.УстановитьСтроку(ТелоОтвета);
	ДанныеСтроки = ПрочитатьJSON(Чтение,Истина);
	Для каждого ОбъектСт Из ДанныеСтроки Цикл
		ДокУстановкаЦенИДолей = Документы.УстановкаЦенДолейИПомещений.СоздатьДокумент();
		ДокУстановкаЦенИДолей.Дата = ТекущаяДата();
		ДокУстановкаЦенИДолей.Организация = мОрганизация;
		ДокУстановкаЦенИДолей.ТипЦен = мТипЦен;
		//ДокУстановкаЦенИДолей.ОбъектСтроительства = 
		ДокУстановкаЦенИДолей.Ответственный = мОтветственный;
		ДокУстановкаЦенИДолей.Комментарий = "Создан и заполнен автоматически из Домопланер";
		СтрокаТЧ = ДокУстановкаЦенИДолей.Цены.Добавить();
		Для каждого ТекущееСвойство Из ДанныеСтроки Цикл
			ИмяТекущегоСвойства = ТекущееСвойство.Ключ;
			ИмяРеквизитаТЧ = СоответствиеПолей.Получить(ИмяТекущегоСвойства);
			Если ИмяРеквизитаТЧ <> Неопределено Тогда
				СтрокаТЧ[ИмяРеквизитаТЧ] = ТекущееСвойство.Значение;
			 КонецЕсли; 
		КонецЦикла; 
		ДокУстановкаЦенИДолей.Записать();
	КонецЦикла; 
	Чтение.Закрыть();



Что не так? Может вообще как то по другому заполнять ТЧ?
1 Мультук
 
гуру
02.12.24
10:54
(0)

Внимание, вопрос!
Сколько строк будет добавлено в "ДокУстановкаЦенИДолей.Цены",
если Добавить находится вне цикла ?


СтрокаТЧ = ДокУстановкаЦенИДолей.Цены.Добавить();
        
Для каждого ТекущееСвойство Из ДанныеСтроки Цикл
     ИмяТекущегоСвойства = ТекущееСвойство.Ключ;
     ИмяРеквизитаТЧ = СоответствиеПолей.Получить(ИмяТекущегоСвойства);
     Если ИмяРеквизитаТЧ <> Неопределено Тогда
          СтрокаТЧ[ИмяРеквизитаТЧ] = ТекущееСвойство.Значение;
     КонецЕсли;
КонецЦикла; 



Говорят, в 1С есть отладчик. Врут поди(с)
2 KJlag
 
02.12.24
11:00
(1) отладчик - это платная услуга для избранных. 100%
3 Волшебник
 
02.12.24
11:03
(1) А Вас не смущает этот вложенный цикл, коллега?

Для каждого ОбъектСт Из ДанныеСтроки Цикл
...
      Для каждого ТекущееСвойство Из ДанныеСтроки Цикл
4 Мультук
 
гуру
02.12.24
11:27
(3)

>> А Вас не смущает этот вложенный цикл, коллега?

Я пальцем на отладчик показал. А думать за других мне с утра лень.
5 Волшебник
 
02.12.24
11:28
(4) душнила :)
6 Человек15
 
naïve
02.12.24
12:40
(1) Спасибо за наводку) в 1с 4 месяца).
отлично, док заполняется ровно 3 строками т.к в отладчике я вижу три элемента структуры или соответствия (если прочитаю в соответствии). В одном из трех элементов я вижу пару ключ и значение "Массив" в котором сидят все мои данные(Это если структура). в моем коде условия останавливаются на этих трех элементах. Как добраться до "Массива"? наведите на метод пож. как вытащить "Массив"?
7 Волшебник
 
02.12.24
12:42
(6) какой-то горячечный бред, врача в топик
8 Ненавижу 1С
 
гуру
02.12.24
13:23
СтруктураJSON.data[0] ?
9 ptiz
 
02.12.24
13:31
(0) Очень недорого, хоть и 1ый этаж. Это где продается?
10 Волшебник
 
02.12.24
13:33
(9) Расслабься. "Статус_помещения": "Продано",
11 Волшебник
 
02.12.24
13:35
(9) Хотя если интересно, то это больше всего похоже на https://gk-osnova.ru/malinovo
12 Ненавижу 1С
 
гуру
02.12.24
13:44
(11) в каких-то ипинях, так еще и на ЦКАДе
13 Волшебник
 
02.12.24
13:47
(12) Ну так всего 4 ляма. Это как проценты за год за ипотеку по современной ставке.
14 CepeLLlka
 
02.12.24
14:56
(11)Норм тема? Есть смысл взять?
15 Волшебник
 
02.12.24
15:05
(14) Если Вам нужна квартира в ебенях, то берите, конечно.
16 CepeLLlka
 
02.12.24
15:18
(15)Спасибо