![]() |
![]() |
![]() |
|
Создание файла csv в запросе | ☑ | ||
---|---|---|---|---|
0
SeiOkami
10.11.12
✎
22:44
|
Здравия !)
У меня такая задачка. Имеется запрос, который выдает строчки с колонками: КодНоменклатуры, НаименованиеНоменклатуры, КатегорияПерваяКод, КатегорияПерваяНазвание, КатегорияВтораяКод, КатегорияВтораяНазвание, КатегорияТретьяКод, КатегорияТретьяНазвание, ЕдиницаИзмерения, Цена, ДополнительноеОписаниеНоменклатуры, ДатаАктуальности Можно ли в запросе (без постобработки) получить текст: КодНоменклатуры + ";" + НаименованиеНоменклатуры + ";" + КатегорияПерваяКод + ";" + ... Чтобы не каждая строчка отдельно, а чтобы все строчки объединить в один текст. Именно в запросе, не используя цикл после выполнения запроса. |
|||
1
asady
10.11.12
✎
22:46
|
(0) если все типы строковые пробуй
не знаю на какой длине это заткнется но теоретически должно работать |
|||
2
SeiOkami
10.11.12
✎
22:48
|
(1) так а как? уже бы попробовал, еслиб знал. Как объеденить все строчки в один текст в запросе?
|
|||
3
МихаилМ
10.11.12
✎
22:50
|
можно. используйте врем ТЗ с переменной длиной текстовых полей.
точне про фокус не помню. |
|||
4
asady
10.11.12
✎
22:52
|
(2) тупо юнион по всем объединямым реквизитам
|
|||
5
asady
10.11.12
✎
22:58
|
(2) уточни
тебе нужно строку сформировать - типа код;наименование;цена и выводить эти строки или сразу все строки в одну суперстроку соединять |
|||
6
zulu_mix
10.11.12
✎
22:59
|
что за бред? ну зачем запросом получать готовую строку? не для того запросы изобретали.
|
|||
7
SeiOkami
10.11.12
✎
23:01
|
(5)
мне нужно в результате запроса получить один многострочный текст: "КодНоменклатуры1;НаименованиеНоменклатуры1;КатегорияПерваяКод1... КодНоменклатуры2;НаименованиеНоменклатуры2;КатегорияПерваяКод2... КодНоменклатуры3;НаименованиеНоменклатуры3;КатегорияПерваяКод3..." и т.д. |
|||
8
SeiOkami
10.11.12
✎
23:01
|
(6) потому что обходом результата запроса он делает это долго.
|
|||
9
France
10.11.12
✎
23:01
|
(0) используй СКД и через функцию формируй нужную строку..
|
|||
10
SeiOkami
10.11.12
✎
23:02
|
Когда в запросе пишу так:
Ок.КодНоменклатуры + ";" + Ок.НаименованиеНоменклатуры + ";" консоль запросов выдаёт так: Строка, не закрывающаяся кавычкой Ок.КодНоменклатуры + <<?>>" |
|||
11
asady
10.11.12
✎
23:04
|
(8) показывай код
такое в запросах не делают (7) прав обычно всех устаивало быстродействие сборки результата - видимо на клиенте у тебя код кривой |
|||
12
SeiOkami
10.11.12
✎
23:07
|
Код был такой (в цикле обхода результата запроса):
ТекстФайла = ТекстФайла + """" + стрТЧ.КодНоменклатуры + """" + ";""" + стрТЧ.НаименованиеНоменклатуры + """" + ";""" + стрТЧ.КатегорияПерваяКод + """" + ";""" + стрТЧ.КатегорияПерваяНазвание + """" + ";""" + стрТЧ.КатегорияВтораяКод + """" + ";""" + стрТЧ.КатегорияВтораяНазвание + """" + ";""" + стрТЧ.КатегорияТретьяКод + """" + ";""" + стрТЧ.КатегорияТретьяНазвание + """" + ";""" + стрТЧ.ЕдиницаИзмерения + """;" + стрТЧ.Цена + ";"" " + стрТЧ.ДополнительноеОписаниеНоменклатуры + """" + ";""" + стрТЧ.ДатаАктуальности + """; |"; |
|||
13
kosts
10.11.12
✎
23:09
|
(0) Попробуй для начала дату в строку в запросе преобразовать...
|
|||
14
France
10.11.12
✎
23:10
|
(12) оставь все то же, но данные бери из запроса, а не так, как сейчас.. будет быстрее..
и в запросе бери "Представление" |
|||
15
asady
10.11.12
✎
23:12
|
(12) а строчек сколько?
|
|||
16
SeiOkami
10.11.12
✎
23:16
|
(15)
в среднем 5000. иногда меньше, но незначительно. Сейчас текст формировался 2 минуты. |
|||
17
France
10.11.12
✎
23:17
|
есть еще извратный способ: вывести в табличный документ, и сохранить из него в тхт файл... правда, разделители там табуляци будут, ну, заменить можно табуляцию на ;
|
|||
18
SeiOkami
10.11.12
✎
23:17
|
на выходе файлик 1,13 Mb
|
|||
19
SeiOkami
10.11.12
✎
23:19
|
(17)
просто там если текст (стрТЧ.КодНоменклатуры), то выделяется кавычками, а если число или дата (стрТЧ.Цена, стрТЧ.ДатаАктуальности), то не выделяется |
|||
20
France
10.11.12
✎
23:21
|
(19) тада форматировать.. то, как делается выше заставляет 1С дергать все объекты в память последовательно... дерни их запросом за один раз.. и, замер производительности - на чем все таки затыкается... если на записи, то городить огород смысла нет
а для чего все это нужно?? |
|||
21
SeiOkami
10.11.12
✎
23:24
|
(20) выгрузка на сайт. клиенту так надобно
не совсем понял что значит "дерни их запросом за один раз". Затыкается, когда ТекстФайла становится уже большим, а я присваиваю: ТекстФайла = ТекстФайла + """" + стрТЧ.КодНоменклатуры + ... |
|||
22
France
10.11.12
✎
23:26
|
(21) если затыкается на записи текстового файла, то нет никакого смысла дергаться с запросом... в машине бензина не хватает, и нет смысла подкачивать, чтобы до места назначения доехать)))
|
|||
23
France
10.11.12
✎
23:26
|
можно уменьшать размер текстового файла: передавать только измененные объекты, передавать порциями по Н тыщ строк..
|
|||
24
SeiOkami
10.11.12
✎
23:27
|
не на записи текстового файла, а на присвоение "наращивания" переменной ТекстФайла
|
|||
25
SeiOkami
10.11.12
✎
23:27
|
(23) смысл?
|
|||
26
zulu_mix
10.11.12
✎
23:28
|
(24) тебе об этом и сказали.выбирай другой метод
|
|||
27
kosts
10.11.12
✎
23:28
|
Попробуй через "последовательная запись текста"
|
|||
28
kosts
10.11.12
✎
23:29
|
Кстати заключи числа в функцию Формат
|
|||
29
France
10.11.12
✎
23:32
|
на... зачем??
|
|||
30
kosts
10.11.12
✎
23:34
|
(29) теоретически могут возникнуть проблемы с неразрывным пробелом
|
|||
31
France
10.11.12
✎
23:40
|
точно.. есть такая гадость..
|
|||
32
SeiOkami
10.11.12
✎
23:41
|
стандартный механизм "вывести список" выдает таблицу за несколько секунд, видимо там все по хитрому устроенно
|
|||
33
France
10.11.12
✎
23:43
|
если список большой, то ооочень долго выдает..
|
|||
34
SeiOkami
10.11.12
✎
23:44
|
(33) ну вот мои данные за секунд 6 вывел. уже лучше, чем 2 минуты )
|
|||
35
France
10.11.12
✎
23:46
|
(34) а 27 смотрел?? и, по времени в % распределение между формированием строки и записью в файл какое??
|
|||
36
kosts
10.11.12
✎
23:48
|
Выложи, что получилось
|
|||
37
SeiOkami
10.11.12
✎
23:53
|
исправил код (для тестирования) на
Для каждого стрТЧ из ТЧ цикл Строка = """" + стрТЧ.КодНоменклатуры + """" + ";""" + стрТЧ.НаименованиеНоменклатуры + """" + ";""" + стрТЧ.КатегорияПерваяКод + """" + ";""" + стрТЧ.КатегорияПерваяНазвание + """" + ";""" + стрТЧ.КатегорияВтораяКод + """" + ";""" + стрТЧ.КатегорияВтораяНазвание + """" + ";""" + стрТЧ.КатегорияТретьяКод + """" + ";""" + стрТЧ.КатегорияТретьяНазвание + """" + ";""" + стрТЧ.ЕдиницаИзмерения + """;" + стрТЧ.Цена + ";"" " + стрТЧ.ДополнительноеОписаниеНоменклатуры + """" + ";""" + стрТЧ.ДатаАктуальности + """; |"; ТекстФайла = ТекстФайла + Строка; КонецЦикла; Результат: сформировался за 10 секунд 0_о |
|||
38
SeiOkami
11.11.12
✎
00:00
|
Всем спасибо за подсказки =)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |