|
Как быстро результат запроса выгрузить в JSON или XML, не перебирая отдельные записи? | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
04.06.21
✎
14:49
|
Пишу веб-сервис, который выдает информацию по товарам из базы.
Нужно выполнить запрос и быстро собрать JSON/XML, не перебирая отдельные записи. 1С в такое умеет? |
|||
1
Вафель
04.06.21
✎
14:49
|
таблицу можно вроде как
|
|||
2
acht
04.06.21
✎
14:49
|
Геня, какой же ты непосредсвенный...
|
|||
3
Вафель
04.06.21
✎
14:50
|
Сериализуется. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/core}. Имя типа XDTO: ValueTable.
|
|||
4
Жеглофф
04.06.21
✎
14:51
|
а "башляй ©" уже было?
|
|||
5
Гений 1С
гуру
04.06.21
✎
14:52
|
Хотя нашел свою же ветку: https://forum.infostart.ru/forum9/topic57361/
(3) ТЗ - это лишний дрыг к памяти. Я смотрю РезультатЗапроса можно сериализовать. |
|||
6
Garykom
гуру
04.06.21
✎
14:52
|
(0) если xml/json нужен другого вида отличного от дефолтного (3) то один фиг перебирать записи
|
|||
7
Гений 1С
гуру
04.06.21
✎
14:53
|
РезультатЗапроса (QueryResult)
Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). Возможен обмен с сервером. <B>Сериализуется</B>. |
|||
8
1Сергей
04.06.21
✎
14:53
|
циклофобия
|
|||
9
Гений 1С
гуру
04.06.21
✎
14:56
|
(8) Скорости для.
Попробовал так: З = Новый Запрос("ВЫБРАТЬ * ИЗ Справочник.Валюты"); Р = З.Выполнить(); Сообщить(ЗначениеВСтрокуВнутр(Р)); Получил:
|
|||
10
Гений 1С
гуру
04.06.21
✎
14:58
|
А вот так хренушки:
З = Новый Запрос("ВЫБРАТЬ * ИЗ Справочник.Валюты"); Р = З.Выполнить(); ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.УстановитьСтроку(); СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Р); СтрокаXML = ЗаписьXML.Закрыть(); Сообщить(СтрокаXML); Несоответствие типов (параметр номер '2') (Ошибка отображения типов) {(7)}:СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Р); {ВнешняяОбработка.КонсольКода.Форма.Форма.Форма(13)}: Выполнить(ТекстДляВыполнения); по причине: Несоответствие типов (параметр номер '2') (Ошибка отображения типов) |
|||
11
Гений 1С
гуру
04.06.21
✎
14:59
|
Если поменять на ЗаписатьXML(ЗаписьXML, Р);
То: Значения данного типа не могут быть представлены в XML {(6)}:ЗаписатьXML(ЗаписьXML, Р); {ВнешняяОбработка.КонсольКода.Форма.Форма.Форма(13)}: Выполнить(ТекстДляВыполнения); по причине: Значения данного типа не могут быть представлены в XML |
|||
12
Гений 1С
гуру
04.06.21
✎
15:01
|
А вот ТЗ да, сериализируется:
З = Новый Запрос("ВЫБРАТЬ * ИЗ Справочник.Валюты"); Р = З.Выполнить().Выгрузить(); ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.УстановитьСтроку(); СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Р); СтрокаXML = ЗаписьXML.Закрыть(); Сообщить(СтрокаXML);
|
|||
13
Dzenn
гуру
04.06.21
✎
15:02
|
Или просто сериализуй таблицу значений, или сделай свой ПакетXDTO и на основании него выгружай во что хочется
|
|||
14
Гений 1С
гуру
04.06.21
✎
15:03
|
Гм, даже в JSON можно, прикольно:
З = Новый Запрос("ВЫБРАТЬ * ИЗ Справочник.Валюты"); Р = З.Выполнить().Выгрузить(); ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, Р, НазначениеТипаXML.Явное); СтрокаJSON = ЗаписьJSON.Закрыть(); Сообщить(СтрокаJSON); {
|
|||
15
Dzenn
гуру
04.06.21
✎
15:03
|
А перебирать всё равно придётся — если не ты, то за тебя это сделает платформа
|
|||
16
Гений 1С
гуру
04.06.21
✎
15:06
|
(15) платформа шустрее сделает. Правда, хотелось бы по своему формату JSON, хз
|
|||
17
sikuda
04.06.21
✎
18:17
|
Выполнить() - результат в памяти
Выгрузить() - копия результата в памяти И да можно ещё ОткрытьПоток и ограничить его вменяемым размером. |
|||
18
Гений 1С
гуру
04.06.21
✎
18:26
|
(17) но без выгрузить не получится сериализовать средствами платформы. похоже тут в платформе пробел
|
|||
19
Ненавижу 1С
гуру
04.06.21
✎
18:30
|
(18) так давно ждём freerad
|
|||
20
Гений 1С
гуру
04.06.21
✎
18:49
|
(19) Терпение, моё юный друх, терпение.
|
|||
21
NorthWind
04.06.21
✎
18:55
|
(0) в таблю значений, а ее потом через сериализатор.
|
|||
22
NorthWind
04.06.21
✎
18:57
|
а, ну я поздно, уже ответили
|
|||
23
mistеr
04.06.21
✎
19:06
|
(14) Классический пример методологии "сначала бежим на Мисту, потом заглядываем в доку" от Гени.
|
|||
24
Гений 1С
гуру
04.06.21
✎
19:14
|
(23) увы, РезультатЗапроса не сериализируется...
|
|||
25
rsv
04.06.21
✎
19:21
|
(0) возможно через релизов 10 и сделают.
Что то типа FOR XML |
|||
26
Вафель
04.06.21
✎
19:25
|
А в чем проблема выгрузить то?
Не там ты оптимизируешь |
|||
27
ДенисЧ
04.06.21
✎
19:28
|
Результат запроса - по определению и построению механизм последовательного (или почти последовательного) обхода данных...
Поэтому вряд ли оно можно одним махом всех забивахом... |
|||
28
Вафель
04.06.21
✎
19:29
|
Результат запроса нельзя обойти.
Обойти можно выборку |
|||
29
Гений 1С
гуру
04.06.21
✎
21:00
|
(28) как? или ты побуквоедить?
|
|||
30
Волшебник
модератор
04.06.21
✎
21:05
|
(29) Он вообще-то лучше тебя понимает платформу.
Выборка создаёт курсор на сервере, который может выдавать следующую запись результата запроса. Учись, студент. |
|||
31
Вафель
04.06.21
✎
21:12
|
(30) нет конечно же. Так же в память все грузится как и с таблицей
|
|||
32
Вафель
04.06.21
✎
21:13
|
(29) вообще то было денисычу замечание
|
|||
33
mistеr
04.06.21
✎
23:36
|
(31) На сервере 1С имелось в виду.
|
|||
34
mistеr
04.06.21
✎
23:39
|
(26) Проблемы нет, просто ему лень.
|
|||
35
Сергиус
05.06.21
✎
02:55
|
(0)Лучше замерь с какой скоростью твои данные придут туда, откуда вызываешь и будут там обработаны..возможно тормоз не в том месте)
|
|||
36
Гений 1С
гуру
05.06.21
✎
10:42
|
(30) в данном случае он пришел сюда побуквоедить. Я спрашивал не о выборке, а о сериализации.
|
|||
37
Гений 1С
гуру
05.06.21
✎
10:43
|
(34) не лень, просто выгрузка средствами 1С это потеря скорости
|
|||
38
Гений 1С
гуру
05.06.21
✎
10:43
|
(35) там утверждают что миллионы записей из my SQL обрабатывают без проблем. удивлены, что 1С не умеет быстро отдавать
|
|||
39
acht
05.06.21
✎
11:22
|
(37) Пиши ВК, у тебя ж опыт есть. Заодно будет почва для пары статей, кучи вопросов на форумах и море развлечения для нас.
|
|||
40
acht
05.06.21
✎
11:23
|
(38) Ну ты тоже много чего утверждаешь, что уж.
|
|||
41
Вафель
05.06.21
✎
14:02
|
Проблема скорости вебсервисы не в скорости выборки или сериализации, а в скорости инициализации сеанса
|
|||
42
Гений 1С
гуру
05.06.21
✎
14:13
|
(41) смотря какая выборка. Если тысяч 60, то 1с будет долго ее генерить.
|
|||
43
Гений 1С
гуру
05.06.21
✎
14:16
|
Хотя я в конкретно данном случае решил использовать ODATA, там платформа генерит запрос, все норм по скорости
|
|||
44
acht
05.06.21
✎
14:16
|
(42) О, ну хоть какие-то числовые метрики начали появляться.
А 60 тысяч чего ты собрался сериализовать для сайта каждые 2 секунды? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |