Люди добрые, помогите! Подскажите кодом, как можно, выгрузить массив с ссылками документов в json гуглил, нифига не нашел как можно выгрузить один , знаю, а как много??? Документы с ТЧ , естественно . Спасибо , заранее
вот код:
Процедура ВыполнитьСериализацию(ИмяФайлаОтправки,ДатаДокОт, ДатаДокДо)
ЗаписиJSON = Новый ЗаписьJSON;
ЗаписиJSON.ОткрытьФайл(ИмяФайлаОтправки,,, Новый ПараметрыЗаписиJSON(, Символы.Таб));
НастройкиСериал = Новый НастройкиСериализацииJSON;
НастройкиСериал.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.ЛокальнаяДата;
НастройкиСериал.ФорматСериализацииДаты = ФорматДатыJSON.ISO;
МассивДокументов = ПолучитьЗапросомМассивСсылокДокументов(ДатаДокОт, ДатаДокДо);
Для Каждого Строка ИЗ МассивДокументов Цикл
Значение = Строка.ПолучитьОбъект();
СериализаторXDTO.ЗаписатьJSON(ЗаписиJSON, Значение, НазначениеТипаXML.Явное);
КонецЦикла;
ЗаписиJSON.Закрыть();
КонецПроцедуры
вот код:
Процедура ВыполнитьСериализацию(ИмяФайлаОтправки,ДатаДокОт, ДатаДокДо)
ЗаписиJSON = Новый ЗаписьJSON;
ЗаписиJSON.ОткрытьФайл(ИмяФайлаОтправки,,, Новый ПараметрыЗаписиJSON(, Символы.Таб));
НастройкиСериал = Новый НастройкиСериализацииJSON;
НастройкиСериал.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.ЛокальнаяДата;
НастройкиСериал.ФорматСериализацииДаты = ФорматДатыJSON.ISO;
МассивДокументов = ПолучитьЗапросомМассивСсылокДокументов(ДатаДокОт, ДатаДокДо);
Для Каждого Строка ИЗ МассивДокументов Цикл
Значение = Строка.ПолучитьОбъект();
СериализаторXDTO.ЗаписатьJSON(ЗаписиJSON, Значение, НазначениеТипаXML.Явное);
КонецЦикла;
ЗаписиJSON.Закрыть();
КонецПроцедуры
По теме из базы знаний
Найденные решения
(22) до сих пор не ясна структура выходных данных.
Но вот как вариант:
Но вот как вариант:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 10
| ЗаказКлиента.Ссылка КАК Ссылка,
| ЗаказКлиента.Номер КАК Номер,
| ЗаказКлиента.Дата КАК Дата,
| ЗаказКлиента.Товары.(
| НомерСтроки КАК НомерСтроки,
| ДатаОтгрузки КАК ДатаОтгрузки,
| Номенклатура КАК Номенклатура,
| КоличествоУпаковок КАК КоличествоУпаковок,
| Цена КАК Цена,
| Сумма КАК Сумма
| ) КАК Товары
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Запись = Новый ЗаписьJSON;
Запись.ОткрытьФайл("d:\temp\docs.json");
СтрукураВыгрузки = Новый Структура;
МассивДокументов = Новый Массив;
Пока Выборка.Следующий() Цикл
ДанныеДокумента = Новый Структура;
ДанныеДокумента.Вставить("Ссылка", Выборка.Ссылка);
ДанныеДокумента.Вставить("Номер", Выборка.Номер);
ДанныеДокумента.Вставить("Дата", Выборка.Дата);
МассивТЧ = Новый Массив;
ВыборкаТовары = Выборка.Товары.Выбрать();
Пока ВыборкаТовары.Следующий() Цикл
СтрТовары = Новый Структура;
СтрТовары.Вставить("НомерСтроки", ВыборкаТовары.НомерСтроки);
СтрТовары.Вставить("ДатаОтгрузки", ВыборкаТовары.ДатаОтгрузки);
СтрТовары.Вставить("Номенклатура", ВыборкаТовары.Номенклатура);
СтрТовары.Вставить("КоличествоУпаковок", ВыборкаТовары.КоличествоУпаковок);
СтрТовары.Вставить("Цена", ВыборкаТовары.Цена);
СтрТовары.Вставить("Сумма", ВыборкаТовары.Сумма);
МассивТЧ.Добавить(СтрТовары);
КонецЦикла;
ДанныеДокумента.Вставить("ТЧ",МассивТЧ);
МассивДокументов.Добавить(ДанныеДокумента);
КонецЦикла;
СтрукураВыгрузки.Вставить("Данные", МассивДокументов);
СериализаторXDTO.ЗаписатьJSON(Запись, СтрукураВыгрузки);
Запись.Закрыть();
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(12) Так я написал, вроде, массив с документами у которых есть ТЧ, просто ссылки на документы я могу выгрузить, реквизиты тоже могу выгрузить, но если есть ТЧ в Документе, а она есть , я не могу допетрить как выгрузить, когда самих документов много(они в массиве)
(19) ТАК? Накатал быстренько:
МассивДокументов = Новый Массив;
СтрукСпискаДоков = Новый Структура;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЧекККМ.Ссылка
|ИЗ
| Документ.ЧекККМ КАК ЧекККМ
|ГДЕ
| НЕ ЧекККМ.ПометкаУдаления
| И ЧекККМ.Дата МЕЖДУ &ДатаОт И &ДатаДо";
Запрос.УстановитьПараметр("ДатаОт", ДатаДокОт);
Запрос.УстановитьПараметр("ДатаДо", ДатаДокДо);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
СтруктСпискаДокументов = Новый Структура("МассивДокументов");
МассивСпискаДокументов = Новый Массив;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СтрукДокмента = Новый Структура("Ссылка, Номер, Дата, Товары, Оплата"")
СтрукДокмента.Вставить("Ссылка", ВыборкаДетальныеЗаписи.Ссылка);
СтрукДокмента.Вставить("Номер", ВыборкаДетальныеЗаписи.Ссылка.Номер);
СтрукДокмента.Вставить("Дата", ВыборкаДетальныеЗаписи.Ссылка.Дата);
МассивТЧТовары = Новый Массив;
МассивТЧОплата = Новый Массив;
Для Каждого ИндТовары ИЗ ВыборкаДетальныеЗаписи.Ссылка.Товары Цикл
СтрукТЧТовары = Новый Структура("Номенклатура, Количество, Сумма, СуммаНДС, Цена");
СтрукТовары.Номенклатура = ИндТовары.Номенклатура;
СтрукТовары.Количество = ИндТовары.Количество;
СтрукТовары.Сумма = ИндТовары.Сумма;
СтрукТовары.СуммаНДС = ИндТовары.СуммаНДС;
СтрукТовары.Цена = ИндТовары.Цена;
МассивТЧТовары.Добавить(СтрукТовары);
КонецЦикла;
Для Каждого ИндОплата ИЗ ВыборкаДетальныеЗаписи.Ссылка.Оплата Цикл
СтрукТЧОплата = Новый Структура("ВидОплаты, СуммаОплаты");
СтрукТЧОплата.ВидОплаты = ИндОплата.Номенклатура;
СтрукТЧОплата.СуммаОплаты = ИндОплата.Сумма;
МассивТЧОплата.Добавить(СтрукТЧОплата);
КонецЦикла;
СтрукДокмента.Вставить("Товары", МассивТЧТовары);
СтрукДокмента.Вставить("Товары", МассивТЧТовары);
МассивСпискаДокументов.Добавить(СтрукДокмента);
КонецЦикла;
СтруктСпискаДокументов.Вставить("МассивДокументов", МассивСпискаДокументов);
Возврат СтруктСпискаДокументов;
Показать
(19)
ВОТ ТАКОЙ КОД РАБОТАЕТ, СПАСИБО ВАМ ОГРОМНОЕ!!!
МассивДокументов = Новый Массив;
СтрукСпискаДоков = Новый Структура;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЧекККМ.Ссылка
|ИЗ
| Документ.ЧекККМ КАК ЧекККМ
|ГДЕ
| НЕ ЧекККМ.ПометкаУдаления
| И ЧекККМ.Дата МЕЖДУ &ДатаОт И &ДатаДо";
Запрос.УстановитьПараметр("ДатаОт", ДатаДокОт);
Запрос.УстановитьПараметр("ДатаДо", ДатаДокДо);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
СтруктСпискаДокументов = Новый Структура("МассивДокументов");
МассивСпискаДокументов = Новый Массив;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СтрукДокмента = Новый Структура("Ссылка, Номер, Дата, Товары, Оплата");
СтрукДокмента.Вставить("Ссылка", Строка(ВыборкаДетальныеЗаписи.Ссылка));
СтрукДокмента.Вставить("Номер", ВыборкаДетальныеЗаписи.Ссылка.Номер);
СтрукДокмента.Вставить("Дата", ВыборкаДетальныеЗаписи.Ссылка.Дата);
МассивТЧТовары = Новый Массив;
МассивТЧОплата = Новый Массив;
Для Каждого ИндТовары ИЗ ВыборкаДетальныеЗаписи.Ссылка.Товары Цикл
СтрукТЧТовары = Новый Структура("Номенклатура, Количество, Сумма, СуммаНДС, Цена");
СтрукТЧТовары.Номенклатура = Строка(ИндТовары.Номенклатура);
СтрукТЧТовары.Количество = ИндТовары.Количество;
СтрукТЧТовары.Сумма = ИндТовары.Сумма;
СтрукТЧТовары.СуммаНДС = ИндТовары.СуммаНДС;
СтрукТЧТовары.Цена = ИндТовары.Цена;
МассивТЧТовары.Добавить(СтрукТЧТовары);
КонецЦикла;
Для Каждого ИндОплата ИЗ ВыборкаДетальныеЗаписи.Ссылка.Оплата Цикл
СтрукТЧОплата = Новый Структура("ВидОплаты, СуммаОплаты");
СтрукТЧОплата.ВидОплаты = ИндОплата.ВидОплаты;
СтрукТЧОплата.СуммаОплаты = ИндОплата.Сумма;
МассивТЧОплата.Добавить(СтрукТЧОплата);
КонецЦикла;
СтрукДокмента.Вставить("Товары", МассивТЧТовары);
СтрукДокмента.Вставить("Оплата", МассивТЧОплата);
МассивСпискаДокументов.Добавить(СтрукДокмента);
КонецЦикла;
СтруктСпискаДокументов.Вставить("МассивДокументов", МассивСпискаДокументов);
Возврат СтруктСпискаДокументов;
ПоказатьВОТ ТАКОЙ КОД РАБОТАЕТ, СПАСИБО ВАМ ОГРОМНОЕ!!!
Массив = Новый Массив;
Для Каждого Из Цикл
Массив.Добавить(новый Структура);
КонецЦикла
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Массив);
СтрокаДляОтвета = ЗаписьJSON.Закрыть();
надо разбить на две операции
1.получить Джинсовую строку объекта
2.поместить их в массив
3.вывести массив в Джинс
получение объектов в обратом поряде
вот пример, выполняется в Консоли произвольного кода
вот строка результата:
[
"{\r\n\"#type\": \"jcfg:CatalogObject.Валюты\",\r\n\"#value\": {\r\n\"Ref\": \"518c7fc9-1d47-11e8-af3e-00259035bb67\",\r\n\"DeletionMark\": false,\r\n\"Code\": \"643\",\r\n\"Description\": \"руб.\",\r\n\"ЗагружаетсяИзИнтернета\": false,\r\n\"НаименованиеПолное\": \"Российский рубль\",\r\n\"Наценка\": 0,\r\n\"ОсновнаяВалюта\": \"00000000-0000-0000-0000-000000000000\",\r\n\"ПараметрыПрописи\": \"рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2 знака\",\r\n\"ФормулаРасчетаКурса\": \"\",\r\n\"СпособУстановкиКурса\": \"РучнойВвод\",\r\n\"Б_Идентификатор\": \"\",\r\n\"Б_НомерВерсии\": \"\"\r\n}\r\n}",
"{\r\n\"#type\": \"jcfg:CatalogObject.Валюты\",\r\n\"#value\": {\r\n\"Ref\": \"c243f49f-6023-11e8-b3e3-ac1f6b01a151\",\r\n\"DeletionMark\": false,\r\n\"Code\": \"978\",\r\n\"Description\": \"EUR\",\r\n\"ЗагружаетсяИзИнтернета\": false,\r\n\"НаименованиеПолное\": \"Евро\",\r\n\"Наценка\": 0,\r\n\"ОсновнаяВалюта\": \"00000000-0000-0000-0000-000000000000\",\r\n\"ПараметрыПрописи\": \"\",\r\n\"ФормулаРасчетаКурса\": \"\",\r\n\"СпособУстановкиКурса\": \"ЗагрузкаИзИнтернета\",\r\n\"Б_Идентификатор\": \"\",\r\n\"Б_НомерВерсии\": \"\"\r\n}\r\n}"
]
1.получить Джинсовую строку объекта
2.поместить их в массив
3.вывести массив в Джинс
получение объектов в обратом поряде
вот пример, выполняется в Консоли произвольного кода
МассивДокументов = Новый Массив; //для теста 2 элемента Валюты
МассивДокументов.Добавить(Справочники.Валюты.НайтиПоКоду("643"));
МассивДокументов.Добавить(Справочники.Валюты.НайтиПоКоду("978"));
//МассивДокументов = ПолучитьЗапросомМассивСсылокДокументов(ДатаДокОт, ДатаДокДо);
МассивДжинс = Новый Массив;
Для Каждого Строка ИЗ МассивДокументов Цикл
лкЗаписьДжинс = Новый ЗаписьJSON;
лкЗаписьДжинс.УстановитьСтроку();
Значение = Строка.ПолучитьОбъект();
СериализаторXDTO.ЗаписатьJSON(лкЗаписьДжинс, Значение, НазначениеТипаXML.Явное);
лкТекст = лкЗаписьДжинс.Закрыть();
МассивДжинс.Добавить(лкТекст);
КонецЦикла;
лкЗаписьДжинс = Новый ЗаписьJSON;
лкЗаписьДжинс.УстановитьСтроку();
ЗаписатьJSON(лкЗаписьДжинс,МассивДжинс);
лкТекст = лкЗаписьДжинс.Закрыть();
Сообщить(лкТекст);
Показатьвот строка результата:
[
"{\r\n\"#type\": \"jcfg:CatalogObject.Валюты\",\r\n\"#value\": {\r\n\"Ref\": \"518c7fc9-1d47-11e8-af3e-00259035bb67\",\r\n\"DeletionMark\": false,\r\n\"Code\": \"643\",\r\n\"Description\": \"руб.\",\r\n\"ЗагружаетсяИзИнтернета\": false,\r\n\"НаименованиеПолное\": \"Российский рубль\",\r\n\"Наценка\": 0,\r\n\"ОсновнаяВалюта\": \"00000000-0000-0000-0000-000000000000\",\r\n\"ПараметрыПрописи\": \"рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2 знака\",\r\n\"ФормулаРасчетаКурса\": \"\",\r\n\"СпособУстановкиКурса\": \"РучнойВвод\",\r\n\"Б_Идентификатор\": \"\",\r\n\"Б_НомерВерсии\": \"\"\r\n}\r\n}",
"{\r\n\"#type\": \"jcfg:CatalogObject.Валюты\",\r\n\"#value\": {\r\n\"Ref\": \"c243f49f-6023-11e8-b3e3-ac1f6b01a151\",\r\n\"DeletionMark\": false,\r\n\"Code\": \"978\",\r\n\"Description\": \"EUR\",\r\n\"ЗагружаетсяИзИнтернета\": false,\r\n\"НаименованиеПолное\": \"Евро\",\r\n\"Наценка\": 0,\r\n\"ОсновнаяВалюта\": \"00000000-0000-0000-0000-000000000000\",\r\n\"ПараметрыПрописи\": \"\",\r\n\"ФормулаРасчетаКурса\": \"\",\r\n\"СпособУстановкиКурса\": \"ЗагрузкаИзИнтернета\",\r\n\"Б_Идентификатор\": \"\",\r\n\"Б_НомерВерсии\": \"\"\r\n}\r\n}"
]
(22) до сих пор не ясна структура выходных данных.
Но вот как вариант:
Но вот как вариант:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 10
| ЗаказКлиента.Ссылка КАК Ссылка,
| ЗаказКлиента.Номер КАК Номер,
| ЗаказКлиента.Дата КАК Дата,
| ЗаказКлиента.Товары.(
| НомерСтроки КАК НомерСтроки,
| ДатаОтгрузки КАК ДатаОтгрузки,
| Номенклатура КАК Номенклатура,
| КоличествоУпаковок КАК КоличествоУпаковок,
| Цена КАК Цена,
| Сумма КАК Сумма
| ) КАК Товары
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Запись = Новый ЗаписьJSON;
Запись.ОткрытьФайл("d:\temp\docs.json");
СтрукураВыгрузки = Новый Структура;
МассивДокументов = Новый Массив;
Пока Выборка.Следующий() Цикл
ДанныеДокумента = Новый Структура;
ДанныеДокумента.Вставить("Ссылка", Выборка.Ссылка);
ДанныеДокумента.Вставить("Номер", Выборка.Номер);
ДанныеДокумента.Вставить("Дата", Выборка.Дата);
МассивТЧ = Новый Массив;
ВыборкаТовары = Выборка.Товары.Выбрать();
Пока ВыборкаТовары.Следующий() Цикл
СтрТовары = Новый Структура;
СтрТовары.Вставить("НомерСтроки", ВыборкаТовары.НомерСтроки);
СтрТовары.Вставить("ДатаОтгрузки", ВыборкаТовары.ДатаОтгрузки);
СтрТовары.Вставить("Номенклатура", ВыборкаТовары.Номенклатура);
СтрТовары.Вставить("КоличествоУпаковок", ВыборкаТовары.КоличествоУпаковок);
СтрТовары.Вставить("Цена", ВыборкаТовары.Цена);
СтрТовары.Вставить("Сумма", ВыборкаТовары.Сумма);
МассивТЧ.Добавить(СтрТовары);
КонецЦикла;
ДанныеДокумента.Вставить("ТЧ",МассивТЧ);
МассивДокументов.Добавить(ДанныеДокумента);
КонецЦикла;
СтрукураВыгрузки.Вставить("Данные", МассивДокументов);
СериализаторXDTO.ЗаписатьJSON(Запись, СтрукураВыгрузки);
Запись.Закрыть();
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот