|
Не выгружает данные в файл формата JSON как надо | ☑ | ||
---|---|---|---|---|
0
menone_dastan
03.12.19
✎
02:44
|
Всем привет. Есть файл шаблон, формата json. Не получается выгрузить данные его подобию, помогите...
{ "title": "Домашний хлеб", "descriptions": "", "unit": "кг", "price": 100, "amount": 50, "categories": "Мучное изделие" } { "title": "Хлеб ржаной", "descriptions": "", "unit": "шт", "price": 120, "amount": 70, "categories": "Мучное изделие" } { "title": "Хлеб чесночны", "descriptions": "", "unit": "л", "price": 80, "amount": 70, "categories": "Мучное изделие" } Мой код: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстатки.Склад, | ТоварыНаСкладахОстатки.КоличествоОстаток, | ТоварыНаСкладахОстатки.Номенклатура.Родитель КАК Родитель, | ЦеныНоменклатурыМагазиновСрезПоследних.Цена, | ТоварыНаСкладахОстатки.Номенклатура.БазоваяЕдиницаИзмерения КАК БазоваяЕдиницаИзмерения |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыМагазинов.СрезПоследних КАК ЦеныНоменклатурыМагазиновСрезПоследних | ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыМагазиновСрезПоследних.Номенклатура |ГДЕ | ТоварыНаСкладахОстатки.КоличествоОстаток > 0 | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.Склад, | ТоварыНаСкладахОстатки.КоличествоОстаток, | ТоварыНаСкладахОстатки.Номенклатура.Родитель, | ЦеныНоменклатурыМагазиновСрезПоследних.Цена, | ТоварыНаСкладахОстатки.Номенклатура.БазоваяЕдиницаИзмерения | |УПОРЯДОЧИТЬ ПО | Номенклатура"; РезультатЗапроса = Запрос.Выполнить().Выгрузить(); Для Каждого СтрокаТЧ Из РезультатЗапроса Цикл ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.ПроверятьСтруктуру = Истина; ЗаписьJSON.ОткрытьФайл("D:\json2.json",,,Новый ПараметрыЗаписиJSON(,Символы.Таб)); ЗаписьJSON.ЗаписатьНачалоОбъекта(); ЗаписьJSON.ЗаписатьИмяСвойства("title"); ЗаписьJSON.ЗаписатьЗначение(Строка(СтрокаТЧ.Номенклатура), Ложь); ЗаписьJSON.ЗаписатьИмяСвойства("descriptions"); ЗаписьJSON.ЗаписатьЗначение("", Ложь); ЗаписьJSON.ЗаписатьИмяСвойства("unit"); ЗаписьJSON.ЗаписатьЗначение(Строка(СтрокаТЧ.БазоваяЕдиницаИзмерения), Ложь); ЗаписьJSON.ЗаписатьИмяСвойства("price"); ЗаписьJSON.ЗаписатьЗначение(Число(СтрокаТЧ.Цена), Ложь); ЗаписьJSON.ЗаписатьИмяСвойства("amount"); ЗаписьJSON.ЗаписатьЗначение(Цел(Число(СтрокаТЧ.КоличествоОстаток)), Ложь); ЗаписьJSON.ЗаписатьИмяСвойства("categories"); ЗаписьJSON.ЗаписатьЗначение(Строка(СтрокаТЧ.Родитель), Ложь); ЗаписьJSON.ЗаписатьКонецОбъекта(); КонецЦикла; ЗаписьJSON.Закрыть(); Подскажите что не так или хотя бы направление |
|||
1
menone_dastan
03.12.19
✎
02:56
|
Вот мой код. Выходит ошибка, Неверный порядок записи JSON.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстатки.Склад, | ТоварыНаСкладахОстатки.КоличествоОстаток, | ТоварыНаСкладахОстатки.Номенклатура.Родитель КАК Родитель, | ЦеныНоменклатурыМагазиновСрезПоследних.Цена, | ТоварыНаСкладахОстатки.Номенклатура.БазоваяЕдиницаИзмерения КАК БазоваяЕдиницаИзмерения |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыМагазинов.СрезПоследних КАК ЦеныНоменклатурыМагазиновСрезПоследних | ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыМагазиновСрезПоследних.Номенклатура |ГДЕ | ТоварыНаСкладахОстатки.КоличествоОстаток > 0 | И ТоварыНаСкладахОстатки.Номенклатура.ПометкаУдаления = ЛОЖЬ | И ТоварыНаСкладахОстатки.Номенклатура.ЭтоГруппа = ЛОЖЬ | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.Склад, | ТоварыНаСкладахОстатки.КоличествоОстаток, | ТоварыНаСкладахОстатки.Номенклатура.Родитель, | ЦеныНоменклатурыМагазиновСрезПоследних.Цена, | ТоварыНаСкладахОстатки.Номенклатура.БазоваяЕдиницаИзмерения | |УПОРЯДОЧИТЬ ПО | Номенклатура"; РезультатЗапроса = Запрос.Выполнить().Выгрузить(); ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.ПроверятьСтруктуру = Истина; ЗаписьJSON.ОткрытьФайл("D:\json2.json",,,Новый ПараметрыЗаписиJSON(,Символы.Таб)); ЗаписьJSON.ЗаписатьНачалоОбъекта(); Для Каждого СтрокаТЧ Из РезультатЗапроса Цикл ЗаписьJSON.ЗаписатьИмяСвойства("title"); ЗаписьJSON.ЗаписатьЗначение(Строка(СтрокаТЧ.Номенклатура), Ложь); ЗаписьJSON.ЗаписатьИмяСвойства("descriptions"); ЗаписьJSON.ЗаписатьЗначение("", Ложь); ЗаписьJSON.ЗаписатьИмяСвойства("unit"); ЗаписьJSON.ЗаписатьЗначение(Строка(СтрокаТЧ.БазоваяЕдиницаИзмерения), Ложь); ЗаписьJSON.ЗаписатьИмяСвойства("price"); ЗаписьJSON.ЗаписатьЗначение(Число(СтрокаТЧ.Цена), Ложь); ЗаписьJSON.ЗаписатьИмяСвойства("amount"); ЗаписьJSON.ЗаписатьЗначение(Цел(Число(СтрокаТЧ.КоличествоОстаток)), Ложь); ЗаписьJSON.ЗаписатьИмяСвойства("categories"); ЗаписьJSON.ЗаписатьЗначение(Строка(СтрокаТЧ.Родитель), Ложь); ЗаписьJSON.ЗаписатьКонецОбъекта(); КонецЦикла; ЗаписьJSON.Закрыть(); |
|||
2
Злопчинский
03.12.19
✎
03:20
|
ЗаписьJSON.ЗаписатьКонецОбъекта(); - или это за цикл или ЗаписатьНачалао в цикл
|
|||
3
Злопчинский
03.12.19
✎
03:24
|
...вдогонку...
я не спец в 8-ых запросах (я вообще в8 не спец), но вызывают сомнения насчет логики... |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.Склад, | ТоварыНаСкладахОстатки.КоличествоОстаток, | ТоварыНаСкладахОстатки.Номенклатура.Родитель, | ЦеныНоменклатурыМагазиновСрезПоследних.Цена, | ТоварыНаСкладахОстатки.Номенклатура.БазоваяЕдиницаИзмерения я бы как-то засомневался внутри номенклатуры группировать по родителю в услвоиях когда родитель у номенклатуры - единственный... ну итд. . я бы рискнул так написать |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстатки.Номенклатура.Родитель, | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.Склад и все.. бо группировка по числовым значениям (остаткам и ценам) -как-то тоже напрягает... . спецы меня поправлят если что |
|||
4
Fram
03.12.19
✎
03:40
|
(0) во первых приведенный пример не json, а только какой то набор отдельных json'ов. так что предлагаю потратить полчаса чтобы разобраться в формате json. хотя 5-10 минут должно быть достаточно. просто руками его набей в текстовом редакторе, потом проверь вот здесь например https://jsonlint.com/
|
|||
5
icipher
03.12.19
✎
05:38
|
может там все таки массив данных, тогда:
ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON, МассивДанных); Результат = ЗаписьJSON.Закрыть(); |
|||
6
Сияющий в темноте
03.12.19
✎
08:58
|
вообще в примере не json,а какое то отдаленное его подобие.
|
|||
7
sevod
03.12.19
✎
10:05
|
(0) Как уже писали, это не JSON, а его обрывки. Поэтому загоняй в цикл куски и склеивай в файле. Примерно так.
[code] ОтветСтруктурой = Новый Структура("НомерСтроки, Ссылка, Количество", Строка(ВыборкаДетальныеЗаписи.НомерСтроки), Строка(ВыборкаДетальныеЗаписи.НоменклатураСсылка.УникальныйИдентификатор()), Строка(ВыборкаДетальныеЗаписи.Количество))); ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON, ОтветСтруктурой); СтрокаДляТела = ЗаписьJSON.Закрыть(); [/code] Это кусок моего кода, "СтрокаДляТела", это и есть кусок твоего JSON. Но я это все еще в массив загоняю и тогда там где, "СтрокаДляТела" весь запрос помещается, а не обрывки. Ты где этот формат взял? Меняй его. |
|||
8
sevod
03.12.19
✎
10:07
|
(7)Там где "СтрокаДляТела", тип данных строка, можешь что хочешь с ней делать. Можно и твой формат собрать.
|
|||
9
pechkin
03.12.19
✎
10:18
|
(0) ты забыл скобочки массива.
Иначе это некорректный джсон |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |