Имя: Пароль:
1C
1С v8
Можно ли оптимизировать выгрузку из ТаблицыЗначений?
0 Anabella
 
21.04.16
14:56
Необходимо данные таблицы значений передать в строку json. Решается задача в цикле:

    Для каждого СтрТЗ из ТаблицаЗаказов Цикл                Строка = Строка + Строка("["+Период + "," + КоличествоПродано + "," + Символ(34)+СтрТЗ.Дилеры+Символ(34)+","+СуммаПродано+"],");         
    КонецЦикла;


Получается строка вида: [[20160104,1,"Москва",3240],[20160104,3,"Москва",3452],[20160105,1,"Питер", 4201]]
На эту строку уходит 70% времени, гораздо больше, чем на собственно запрос. Можно ли как-то оптимизировать или изменить сие ?
1 H A D G E H O G s
 
21.04.16
14:58
Записывайте предварительно в файл через ЗаписьТекста()
На крайняк компонуйте в отдельную переменную внутри цикла, потом эту переменную скидывайте в общую переменную.
2 H A D G E H O G s
 
21.04.16
14:58
Ну или пользуйте внешнюю компоненту.
3 Anabella
 
21.04.16
15:01
(1)Попробую через ЗаписьТекста(), спасибо.
А насчет "компонуйте в отдельную переменную внутри цикла, потом эту переменную скидывайте в общую переменную" - разве сейчас не то же самое, только немного проще?
4 asady
 
21.04.16
15:03
(0) хотелось бы глянуть на процесс получения данной ТЗ - если это запрос - то текст запроса.
если нет - то почему не запрос?

и почему ТЗ а не банальная выборка?
5 1cVandal
 
21.04.16
15:03
(3) то же самое
6 RomanYS
 
21.04.16
15:04
СтрТЗ.Дилеры - это ссылка или строка?

Если ссылка - то получать представление в запросе
7 Anabella
 
21.04.16
15:08
(4) Да, ТЗ получаю в запросе. Скорость срабатывания запроса меня устраивает (Запрос выполняется за 3 секунды, а эта строка заполняется за 30 сек). Боюсь если я выложу текст запроса всё сведется к обсуждению косяков запроса, а мне бы ТЗ в json передать :)
Не совсем поняла насчет выборки.

(6) Это строка.
8 Serginio1
 
21.04.16
15:08
Используй ЗаписьXML ЗаписатьБезОбработки

ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку();
    
    Для сч = 1 по КоличествоИтераций Цикл
        ЗаписьXML.ЗаписатьБезОбработки(Строка(сч));
    КонецЦикла;
    Стр = ЗаписьXML.Закрыть();

http://catalog.mista.ru/public/448668/
9 Serginio1
 
21.04.16
15:10
10 Anabella
 
21.04.16
15:10
(9) Огромное спасибо за ссылку!
11 Serginio1
 
21.04.16
15:11
Или сделай структуру, а из неё получи JSON
12 Anabella
 
21.04.16
17:12
(9) Сделала всё через ЗаписьXML, теперь выполняется за 0,3 сек!!! Спасибо огромное всем!
13 Drac0
 
21.04.16
17:38
Кстати, если версия платформы позволяет, то можно попробовать метод СтрСоединить(). Не проверял быстродействие, правда.
14 mingw
 
21.04.16
17:41
Удивляют конструкции вида Строка = Строка + Строка(...);
15 mingw
 
21.04.16
17:43
(14)+ Интереснее только

Функция Функция()
  Функция = Функция(...);
  Возврат Функция;
КонецФункции
16 mingw
 
21.04.16
17:44
(15) Сорри. Лучше так.

Функция Функция(Функция)
  Функция = Функция(...);
  Возврат Функция;
КонецФункции
17 Anabella
 
26.04.16
09:57
(16) А как правильно? Подскажите, пожалуйста
18 hhhh
 
26.04.16
10:02
(17) ну вы миллионы символов гоняете туда сюда. Это правильно?