|
Продолжаю тему про xml и сsv . Набросал код, есть явные ошибки? | ☑ | ||
---|---|---|---|---|
0
Филипп Остырко
28.12.18
✎
13:58
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | ЗаявкаНаОткрытиеСчетов.Дата, | ЗаявкаНаОткрытиеСчетов.Номер, | ЗаявкаНаОткрытиеСчетов.Организация.Наименование, | ЗаявкаНаОткрытиеСчетов.Организация.ИНН |ИЗ | Документ.ЗаявкаНаОткрытиеСчетов КАК ЗаявкаНаОткрытиеСчетов" ; Результат = Запрос.Выполнить(); ТЗ = Результат.Выгрузить(); ТД = Новый ТекстовыйДокумент; СтрокаШапки = " СчетаПК_Id,ДатаФормирования,НомерДоговора,НаименованиеОрганизации,ИНН,РасчетныйСчетОрганизации,БИК,ИдПервичногоДокумента"; ТД.ДобавитьСтроку(СтрокаШапки+Символы.ВК); Разделитель = ";"; Для каждого ТекСтрока из ТЗ Цикл Если ТекСтрока = 0 Тогда Продолжить; КонецЕсли; СтрокаТекста = ТекСтрока.Дата + + разделитель + ТекСтрока.Номер + разделитель + ТекСтрока.Организация.Наименование + разделитель + ТекСтрока.Организация.ИНН + Символы.ПС; ТД.ДобавитьСтроку(СтрокаТекста); КонецЦикла; ТД.Записать(КаталогВременныхФайлов()+".csv", КодировкаТекста.ANSI); |
|||
1
Филипп Остырко
28.12.18
✎
13:59
|
для теста взял только 4 реквизита
|
|||
2
dka80
28.12.18
✎
14:00
|
Запускал?
|
|||
3
Ёпрст
28.12.18
✎
14:01
|
чего уж там, пиши сразу в json
|
|||
4
Филипп Остырко
28.12.18
✎
14:02
|
(2) запустил. выдал ошибку "Преобразование значения к типу Число не может быть выполнено
СтрокаТекста = ТекСтрока.Дата +" |
|||
5
RomanYS
28.12.18
✎
14:02
|
(2) а вдруг миста не одобрит?
|
|||
6
Филипп Остырко
28.12.18
✎
14:04
|
ошибка вроде здесь "Если ТекСтрока = 0 Тогда
" ,НО это не точно |
|||
7
RomanYS
28.12.18
✎
14:09
|
(6) тебе же в (4) прямым текстом написано, что не умеет к дате строки прибавлять
|
|||
8
IOANNscrp
28.12.18
✎
14:14
|
Разделитель = ";";
СтрокаТекста = ""; Либо СтрокаТекста =""+ ТекСтрока.Дата + + разделитель + ТекСтрока.Номер + разделитель + ТекСтрока.Организация.Наименование + разделитель + ТекСтрока.Организация.ИНН + Символы.ПС; |
|||
9
IOANNscrp
28.12.18
✎
14:16
|
ТД.ДобавитьСтроку(СтрокаТекста); и так добавляет перенос строки, а Вы еще свой лепите
ТД.ДобавитьСтроку(""+ ТекСтрока.Дата + + разделитель + ТекСтрока.Номер + разделитель + ТекСтрока.Организация.Наименование + разделитель + ТекСтрока.Организация.ИНН); |
|||
10
Филипп Остырко
28.12.18
✎
14:27
|
исправил. не ругается, но и файл не сохраняет никакой
|
|||
11
IOANNscrp
28.12.18
✎
14:28
|
Имя дайте файлу)
|
|||
12
IOANNscrp
28.12.18
✎
14:28
|
КаталогВременныхФайлов()+"test.csv"
|
|||
13
Филипп Остырко
28.12.18
✎
14:29
|
(12) ну Вы ванга, мой файл назывался "тест"
|
|||
14
IOANNscrp
28.12.18
✎
14:30
|
(13) ¯ \ _ (ツ) _ / ¯
|
|||
15
Mikeware
28.12.18
✎
14:32
|
"он настоящий!"
|
|||
16
Филипп Остырко
28.12.18
✎
14:35
|
нет файла
|
|||
17
Филипп Остырко
28.12.18
✎
14:35
|
не сохраняет
|
|||
18
Так мало знающий
28.12.18
✎
14:40
|
аталогВременныхФайлов()+"\test.csv" а так?
|
|||
19
13_Mult
28.12.18
✎
14:42
|
(17) Как проверял?
|
|||
20
Филипп Остырко
28.12.18
✎
14:48
|
(18) даже так E:\Desktop\test.csv
|
|||
21
13_Mult
28.12.18
✎
14:48
|
(19) + C:\Users\ФилиппОстырко\AppData\Local\Temp\
Там смотрел? |
|||
22
Филипп Остырко
28.12.18
✎
14:49
|
(19) выбираю папку для выгрузки, отмечаю нужны данные, нажимаю "выгрузить"
|
|||
23
IOANNscrp
28.12.18
✎
14:50
|
Локальная база и серверная?
|
|||
24
Филипп Остырко
28.12.18
✎
14:51
|
(21) для меня будет приятно,если в мою честь windods будет папки создавать
|
|||
25
Филипп Остырко
28.12.18
✎
14:52
|
(23) локальная
|
|||
26
IOANNscrp
28.12.18
✎
14:52
|
Создаст, если будет пользователь такой заведён ..(24)
|
|||
27
13_Mult
28.12.18
✎
14:52
|
(22) (24) Ты троль что ли?
|
|||
28
Филипп Остырко
28.12.18
✎
14:54
|
(27) нет,с чего вы взяли
|
|||
29
Дмитрий
28.12.18
✎
14:54
|
а где xml?
|
|||
30
IOANNscrp
28.12.18
✎
14:55
|
тек = ПолучитьИмяВременногоФайла("csv");
тет = новый ТекстовыйДокумент; тет.Записать(тек,КодировкаТекста.ANSI); ЗапуститьПриложение(тек); Если не откроет, то троль |
|||
31
IOANNscrp
28.12.18
✎
14:55
|
надеюсь через проводник проверяете наличие файла, а не через выбор папки с фильтром = видимость только папок
|
|||
32
13_Mult
28.12.18
✎
14:59
|
(28) Выполни вот это
ГдеИскать = КаталогВременныхФайлов(); Сообщить(ГдеИскать); И посмотри что в сообщении прилетело. |
|||
33
Филипп Остырко
28.12.18
✎
15:02
|
(30) (32) сохранилось оказывается, но только совсем в другом месте. всех благодарю за участие
|
|||
34
Мимохожий Однако
28.12.18
✎
15:07
|
Кто-нибудь заставит ТС пользоваться отладчиком, мозгом и СП?
|
|||
35
Филипп Остырко
28.12.18
✎
15:07
|
(31) сохранялось под именем test.csv на рабочий стол ,а я проверял в папке "test".
|
|||
36
Дмитрий
28.12.18
✎
15:09
|
(34) так он путь к файлу может только написать, а не прочитать: (20)
|
|||
37
IOANNscrp
28.12.18
✎
15:09
|
(35) бесценный опыт
|
|||
38
Мимохожий Однако
28.12.18
✎
15:11
|
(35) ..." в огороде бузина" ))
|
|||
39
Филипп Остырко
28.12.18
✎
15:14
|
(38) да понятно
|
|||
40
Филипп Остырко
28.12.18
✎
15:17
|
если вы думаете, что я дебил, то я соглашусь с вами
|
|||
41
Скиурус
28.12.18
✎
16:33
|
Колонки ТЗ будут вот так называться, если их в явном виде в запросе не обозвать:
А зачем нужно:
Что ты этим кодом хотел сказать? |
|||
42
Филипп Остырко
29.12.18
✎
07:56
|
(41) Спасибо за первое замечание, а то ругался ,что (организация) не определено.
Я составил код из нескольких примеров, поэтому поставил, там везде был этот момент Если ТекСтрока = 0 Тогда Продолжить; КонецЕсли; |
|||
43
Лодырь
29.12.18
✎
07:58
|
(42) У тебя ТекСтрока имеет тип СтрокаТаблицыЗначений и она никогда не будет равна Числу 0
|
|||
44
Филипп Остырко
29.12.18
✎
08:54
|
(43) Благодарю, я убрал эту часть совсем
|
|||
45
IOANNscrp
29.12.18
✎
08:55
|
Зря, это вносило изюминку в код(44)
|
|||
46
Филипп Остырко
29.12.18
✎
09:34
|
тут новая проблема. я собираю строку : реквизиты с типом строка собирает, а типом число -нет. как тут быть?
СтрокаТекста = "" + ТекСтрока.Дата + + разделитель + ТекСтрока.Номер |
|||
47
Kigo_Kigo
29.12.18
✎
09:37
|
(46) Строка должна быть строкой- всегда, преобразуй типы в строку
|
|||
48
IOANNscrp
29.12.18
✎
09:43
|
(46) Строка(ТекСтрока.Номер) или в запросе выразить как строка
|
|||
49
Филипп Остырко
29.12.18
✎
09:52
|
(48) ": Преобразование значения к типу Число не может быть выполнено
ТД.ДобавитьСтроку(""+ Строка(ТекСтрока.НомерДоговора)" |
|||
50
IOANNscrp
29.12.18
✎
09:56
|
полную строчку кода в студию (49)
|
|||
51
Филипп Остырко
29.12.18
✎
09:59
|
(50) ТД.ДобавитьСтроку(""+ Строка(ТекСтрока.НомерДоговора)
+ разделитель + ТекСтрока.ОрганизацияНаименование, + разделитель + ТекСтрока.ОрганизацияИНН, + разделитель + ТекСтрока. Дата + Символы.ПС); |
|||
52
IOANNscrp
29.12.18
✎
10:00
|
Эм, это что еще такое?ТекСтрока.ОрганизацияНаименование,
|
|||
53
IOANNscrp
29.12.18
✎
10:01
|
(51) ТД.ДобавитьСтроку(""+ Строка(ТекСтрока.НомерДоговора)
+ разделитель + ТекСтрока.ОрганизацияНаименование + разделитель + ТекСтрока.ОрганизацияИНН + разделитель + ТекСтрока. Дата + Символы.ПС); |
|||
54
Филипп Остырко
29.12.18
✎
10:03
|
(52) ОрганизацияНаименование -реквизит. он у меня отражается правильно в файле
|
|||
55
Скиурус
29.12.18
✎
10:11
|
(54) Он про то, что у тебя откуда-то взялись запятые.
И лишний пробел вырос в ТекСтрока. Дата |
|||
56
Филипп Остырко
29.12.18
✎
10:14
|
(53) (55) спасибо, проблема решена
|
|||
57
Филипп Остырко
29.12.18
✎
10:17
|
а нет, не решена, хоть ошибку не выдает, но в файле номер договора не отражается
|
|||
58
IOANNscrp
29.12.18
✎
10:22
|
(57) а он заполнен?))) в договоре
|
|||
59
13_Mult
29.12.18
✎
10:29
|
(57) У тебя в (0) нет "НомерДоговора", а есть "Номер".
И нет "ОрганизацияНаименование", а есть "Организация.Наименование". И убери приведение к строке у Номера оно там уже не нужно. |
|||
60
IOANNscrp
29.12.18
✎
10:30
|
(59) может задача поменялась и запрос уже изменен на нужные реквизиты, так бы уже ругалось на поля
|
|||
61
13_Mult
29.12.18
✎
10:33
|
(60) Пусть выложит тогда текущий вариант :)
|
|||
62
Филипп Остырко
29.12.18
✎
10:35
|
(61) ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаявкаНаОткрытиеСчетов.НомерДоговора, | ЗаявкаНаОткрытиеСчетов.Организация.Наименование, | ЗаявкаНаОткрытиеСчетов.Организация.ИНН, | ЗаявкаНаОткрытиеСчетов.Дата |ИЗ | Документ.ЗаявкаНаОткрытиеСчетов КАК ЗаявкаНаОткрытиеСчетов" ; Результат = Запрос.Выполнить(); ТЗ = Результат.Выгрузить(); ТД = Новый ТекстовыйДокумент; ИмяФайла = "test" +".csv" ; Если ДиалогВыбораФайла.Выбрать() Тогда ФайлНаДиске = Новый Файл(ДиалогВыбораФайла.Каталог + "\" + ИмяФайла); СтрокаШапки = " СчетаПК_Id,ДатаФормирования,НомерДоговора,НаименованиеОрганизации,ИНН,РасчетныйСчетОрганизации,БИК,ИдПервичногоДокумента"; ТД.ДобавитьСтроку(СтрокаШапки+Символы.ПС); Разделитель = "|"; Для каждого ТекСтрока из ТЗ Цикл ТД.ДобавитьСтроку(""+ Строка(ТекСтрока.НомерДоговора) + разделитель + ТекСтрока.ОрганизацияНаименование + разделитель + ТекСтрока.ОрганизацияИНН + Символы.ПС); КонецЦикла; //ТД.Записать(КаталогВременныхФайлов() + "test.txt", КодировкаТекста.ANSI); ТД.Записать(ФайлНаДиске.ПолноеИмя, КодировкаТекста.ANSI); Сообщить("Сформирован файл: " + ФайлНаДиске.ПолноеИмя); КонецЕсли; |
|||
63
IOANNscrp
29.12.18
✎
10:36
|
ИмяФайла = "test" +".csv"; красотище
|
|||
64
Филипп Остырко
29.12.18
✎
10:37
|
(63) главное, что сохраняет. это для теста сойдет
|
|||
65
IOANNscrp
29.12.18
✎
10:39
|
Если не значениеЗаполнено(ТекСтрока.НомерДоговора) Тогда
Сообщить("Не заполнен номер договора "+ТекСтрока.ОрганизацияНаименование) КонецЕсли ТД.ДобавитьСтроку() в цикле и запускайте для проверки |
|||
66
IOANNscrp
29.12.18
✎
10:39
|
(64) еще бы он не сохранил))
|
|||
67
13_Mult
29.12.18
✎
10:39
|
(62) Значит реквизит "НомерДоговора" не заполнен в документах "ЗаявкаНаОткрытиеСчетов "
|
|||
68
Филипп Остырко
29.12.18
✎
10:42
|
(67) понятно. хотя этот реквизит есть ,так и назывался "НомерДоговора"
|
|||
69
13_Mult
29.12.18
✎
10:44
|
(68) Ну Всё, теперь я тоже всё понял. ))
|
|||
70
Eiffil123
29.12.18
✎
10:45
|
Для новичка нормально. Но вот это на самом деле плохо:
1. В запросе от одного поля 2 раза получаешь реквизиты через точку. При этом система создаст неявно 2 левых соединения. Возможны проблемы с производительностью (хотя это большей частью только в теории): | ЗаявкаНаОткрытиеСчетов.Организация.Наименование, | ЗаявкаНаОткрытиеСчетов.Организация.ИНН 2. Выгрузка результатов запроса в ТЗ ТЗ = Результат.Выгрузить() . Это неоптимально для больших выборок данных. Обычно лучше делать Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() <тут уже работаем с выборкой> КонецЦикла; |
|||
71
Филипп Остырко
29.12.18
✎
10:50
|
(70) Принял к сведению,спасибо
|
|||
72
Филипп Остырко
29.12.18
✎
10:59
|
(66) Ваш код мне помог, номердоговора и правда оказался не заполненным
|
|||
73
Михаил Иванович
29.12.18
✎
10:59
|
(27) Конечно.
|
|||
74
IOANNscrp
29.12.18
✎
11:02
|
(73) хорошо держится, однако
|
|||
75
Филипп Остырко
29.12.18
✎
11:13
|
(73) я вроде бы говорил,что я начинающий в 1с. или вы считаете, что способности программировать загружаются в мозг как в фильме Матрица ?
|
|||
76
Филипп Остырко
29.12.18
✎
11:15
|
я за 2 дня неплохо подрос в понимании кода, до этого код был для меня иероглифом
|
|||
77
Михаил Иванович
29.12.18
✎
11:28
|
(76) т.е. образования нет?
|
|||
78
Филипп Остырко
29.12.18
✎
11:37
|
(77) В общем, меня приняли на работу после прохождения ученического курса при франчайзи продолжительностью в один месяц, в ходе которого мне нужно было решить все их задачи и сдать ПРОФ. я с этим справился. теперь я стажер, и мне попробовали дать реальную задачу. образование высшее, но к 1с отношения не имеет
|
|||
79
Филипп Остырко
29.12.18
✎
11:38
|
(77) компания самая сильная в регионе, поэтому ,наверно, могут себе позволить принимать с нуля
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |