Имя: Пароль:
1C
1С v8
Создание файла 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
Всем спасибо за подсказки =)