Вход | Регистрация
 

Продолжаю тему про xml и сsv . Набросал код, есть явные ошибки?

Продолжаю тему про xml и сsv . Набросал код, есть явные ошибки?
Я
   Филипп Остырко
 
28.12.18 - 13:58
Запрос = Новый Запрос;
Запрос.Текст =
          "ВЫБРАТЬ
         |    ЗаявкаНаОткрытиеСчетов.Дата,
         |    ЗаявкаНаОткрытиеСчетов.Номер,
         |    ЗаявкаНаОткрытиеСчетов.Организация.Наименование,
         |    ЗаявкаНаОткрытиеСчетов.Организация.ИНН
         |ИЗ
         |    Документ.ЗаявкаНаОткрытиеСчетов КАК ЗаявкаНаОткрытиеСчетов" ;
    Результат = Запрос.Выполнить();
    ТЗ = Результат.Выгрузить();
  
    ТД = Новый ТекстовыйДокумент;
    СтрокаШапки = " СчетаПК_Id,ДатаФормирования,НомерДоговора,НаименованиеОрганизации,ИНН,РасчетныйСчетОрганизации,БИК,ИдПервичногоДокумента";
    ТД.ДобавитьСтроку(СтрокаШапки+Символы.ВК);
Разделитель = ";";
Для каждого ТекСтрока из ТЗ Цикл
     Если ТекСтрока = 0 Тогда
                Продолжить;
     КонецЕсли;
      СтрокаТекста =  ТекСтрока.Дата +
            + разделитель + ТекСтрока.Номер
            + разделитель + ТекСтрока.Организация.Наименование
            + разделитель + ТекСтрока.Организация.ИНН
            + Символы.ПС;
      ТД.ДобавитьСтроку(СтрокаТекста);
КонецЦикла;
  ТД.Записать(КаталогВременныхФайлов()+".csv", КодировкаТекста.ANSI);
 
 
   Филипп Остырко
 
1 - 28.12.18 - 13:59
для теста взял только 4 реквизита
   dka80
 
2 - 28.12.18 - 14:00
Запускал?
   Ёпрст
 
3 - 28.12.18 - 14:01
чего уж там, пиши сразу в json
   Филипп Остырко
 
4 - 28.12.18 - 14:02
(2) запустил. выдал ошибку "Преобразование значения к типу Число не может быть выполнено
      СтрокаТекста =  ТекСтрока.Дата +"
   RomanYS
 
5 - 28.12.18 - 14:02
(2) а вдруг миста не одобрит?
   Филипп Остырко
 
6 - 28.12.18 - 14:04
ошибка вроде  здесь   "Если ТекСтрока = 0 Тогда
" ,НО это не точно
   RomanYS
 
7 - 28.12.18 - 14:09
(6) тебе же в (4) прямым текстом написано, что не умеет к дате строки прибавлять
   IOANNscrp
 
8 - 28.12.18 - 14:14
Разделитель = ";";
СтрокаТекста  = "";
Либо
 СтрокаТекста =""+  ТекСтрока.Дата +
            + разделитель + ТекСтрока.Номер
            + разделитель + ТекСтрока.Организация.Наименование
            + разделитель + ТекСтрока.Организация.ИНН
            + Символы.ПС;
   IOANNscrp
 
9 - 28.12.18 - 14:16
ТД.ДобавитьСтроку(СтрокаТекста); и так добавляет перенос строки, а Вы еще свой лепите
 ТД.ДобавитьСтроку(""+ ТекСтрока.Дата +
            + разделитель + ТекСтрока.Номер
            + разделитель + ТекСтрока.Организация.Наименование
            + разделитель + ТекСтрока.Организация.ИНН);
   Филипп Остырко
 
10 - 28.12.18 - 14:27
исправил. не ругается, но и файл не сохраняет никакой
   IOANNscrp
 
11 - 28.12.18 - 14:28
Имя дайте файлу)
   IOANNscrp
 
12 - 28.12.18 - 14:28
КаталогВременныхФайлов()+"test.csv"
   Филипп Остырко
 
13 - 28.12.18 - 14:29
(12) ну Вы ванга, мой файл назывался "тест"
   IOANNscrp
 
14 - 28.12.18 - 14:30
(13) ¯ \ _ (ツ) _ / ¯
   Mikeware
 
15 - 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" а так?
   13_Mult
 
19 - 28.12.18 - 14:42
(17) Как проверял?
   Филипп Остырко
 
20 - 28.12.18 - 14:48
(18) даже так E:\Desktop\test.csv
   13_Mult
 
21 - 28.12.18 - 14:48
(19) + C:\Users\ФилиппОстырко\AppData\Local\Temp\
Там смотрел?
   Филипп Остырко
 
22 - 28.12.18 - 14:49
(19) выбираю папку для выгрузки, отмечаю нужны данные, нажимаю "выгрузить"
   IOANNscrp
 
23 - 28.12.18 - 14:50
Локальная база и серверная?
   Филипп Остырко
 
24 - 28.12.18 - 14:51
(21) для меня будет приятно,если  в мою честь windods будет папки создавать
   Филипп Остырко
 
25 - 28.12.18 - 14:52
(23) локальная
   IOANNscrp
 
26 - 28.12.18 - 14:52
Создаст, если будет пользователь такой заведён ..(24)
   13_Mult
 
27 - 28.12.18 - 14:52
(22) (24) Ты троль что ли?
   Филипп Остырко
 
28 - 28.12.18 - 14:54
(27) нет,с чего вы взяли
   Дмитрий
 
29 - 28.12.18 - 14:54
а где xml?
   IOANNscrp
 
30 - 28.12.18 - 14:55
тек = ПолучитьИмяВременногоФайла("csv");
    тет = новый ТекстовыйДокумент;
    тет.Записать(тек,КодировкаТекста.ANSI);
    ЗапуститьПриложение(тек);
Если не откроет, то троль
 
 
   IOANNscrp
 
31 - 28.12.18 - 14:55
надеюсь через проводник проверяете наличие файла, а не через выбор папки с фильтром = видимость только папок
   13_Mult
 
32 - 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)
   IOANNscrp
 
37 - 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
Колонки ТЗ будут вот так называться, если их в явном виде в запросе не обозвать:
    СтрокаТекста =  "" + ТекСтрока.Дата +
            + разделитель + ТекСтрока.Номер
            + разделитель + ТекСтрока.ОрганизацияНаименование
            + разделитель + ТекСтрока.ОрганизацияИНН
            + Символы.ПС;



А зачем нужно:
     Если ТекСтрока = 0 Тогда
                Продолжить;
     КонецЕсли;
Что ты этим кодом хотел сказать?
   Филипп Остырко
 
42 - 29.12.18 - 07:56
(41) Спасибо за первое замечание, а то ругался ,что (организация) не определено.
 Я составил код из нескольких примеров, поэтому поставил, там везде был этот момент
 Если ТекСтрока = 0 Тогда
                Продолжить;
     КонецЕсли;
   Лодырь
 
43 - 29.12.18 - 07:58
(42) У тебя ТекСтрока имеет тип СтрокаТаблицыЗначений и она никогда не будет равна Числу 0
   Филипп Остырко
 
44 - 29.12.18 - 08:54
(43) Благодарю, я убрал эту часть совсем
   IOANNscrp
 
45 - 29.12.18 - 08:55
Зря, это вносило изюминку в код(44)
   Филипп Остырко
 
46 - 29.12.18 - 09:34
тут новая проблема. я собираю строку : реквизиты с типом строка собирает, а типом число -нет. как тут быть?

СтрокаТекста =  "" + ТекСтрока.Дата +
            + разделитель + ТекСтрока.Номер
   Kigo_Kigo
 
47 - 29.12.18 - 09:37
(46) Строка должна быть строкой- всегда, преобразуй типы в строку
   IOANNscrp
 
48 - 29.12.18 - 09:43
(46) Строка(ТекСтрока.Номер) или в запросе выразить как строка
   Филипп Остырко
 
49 - 29.12.18 - 09:52
(48) ": Преобразование значения к типу Число не может быть выполнено
    ТД.ДобавитьСтроку(""+ Строка(ТекСтрока.НомерДоговора)"
   IOANNscrp
 
50 - 29.12.18 - 09:56
полную строчку кода в студию (49)
   Филипп Остырко
 
51 - 29.12.18 - 09:59
(50)  ТД.ДобавитьСтроку(""+ Строка(ТекСтрока.НомерДоговора)
             + разделитель + ТекСтрока.ОрганизацияНаименование,
             + разделитель + ТекСтрока.ОрганизацияИНН,
              + разделитель + ТекСтрока. Дата
            + Символы.ПС);
   IOANNscrp
 
52 - 29.12.18 - 10:00
Эм, это что еще такое?ТекСтрока.ОрганизацияНаименование,
   IOANNscrp
 
53 - 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
а нет, не решена, хоть ошибку не выдает, но в файле номер договора не отражается
   IOANNscrp
 
58 - 29.12.18 - 10:22
(57) а он заполнен?))) в договоре
   13_Mult
 
59 - 29.12.18 - 10:29
(57) У тебя в (0) нет "НомерДоговора", а есть "Номер".
И нет "ОрганизацияНаименование", а есть "Организация.Наименование".
И убери приведение к строке у Номера оно там уже не нужно.
   IOANNscrp
 
60 - 29.12.18 - 10:30
(59) может задача поменялась и запрос уже изменен на нужные реквизиты, так бы уже ругалось на поля
   13_Mult
 
61 - 29.12.18 - 10:33
(60) Пусть выложит тогда текущий вариант :)
   Филипп Остырко
 
62 - 29.12.18 - 10:35
(61) ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);

        Запрос = Новый Запрос;
Запрос.Текст =
          "ВЫБРАТЬ
          |    ЗаявкаНаОткрытиеСчетов.НомерДоговора,
          |    ЗаявкаНаОткрытиеСчетов.Организация.Наименование,
          |    ЗаявкаНаОткрытиеСчетов.Организация.ИНН,
          |    ЗаявкаНаОткрытиеСчетов.Дата
          |ИЗ
          |    Документ.ЗаявкаНаОткрытиеСчетов КАК ЗаявкаНаОткрытиеСчетов" ;
    Результат = Запрос.Выполнить();
    ТЗ = Результат.Выгрузить();
     ТД = Новый ТекстовыйДокумент;
    ИмяФайла = "test" +".csv" ;
    Если ДиалогВыбораФайла.Выбрать() Тогда
        ФайлНаДиске = Новый Файл(ДиалогВыбораФайла.Каталог + "\" + ИмяФайла);

    СтрокаШапки = " СчетаПК_Id,ДатаФормирования,НомерДоговора,НаименованиеОрганизации,ИНН,РасчетныйСчетОрганизации,БИК,ИдПервичногоДокумента";
    ТД.ДобавитьСтроку(СтрокаШапки+Символы.ПС);
    Разделитель = "|";
    Для каждого ТекСтрока из ТЗ Цикл

     
    ТД.ДобавитьСтроку(""+ Строка(ТекСтрока.НомерДоговора)
             
             + разделитель + ТекСтрока.ОрганизацияНаименование
             + разделитель + ТекСтрока.ОрганизацияИНН
             + Символы.ПС);
        КонецЦикла;
        //ТД.Записать(КаталогВременныхФайлов() + "test.txt", КодировкаТекста.ANSI);

 ТД.Записать(ФайлНаДиске.ПолноеИмя, КодировкаТекста.ANSI);    
        Сообщить("Сформирован файл: " + ФайлНаДиске.ПолноеИмя);
КонецЕсли;
   IOANNscrp
 
63 - 29.12.18 - 10:36
ИмяФайла = "test" +".csv"; красотище
   Филипп Остырко
 
64 - 29.12.18 - 10:37
(63) главное, что сохраняет. это для теста сойдет
   IOANNscrp
 
65 - 29.12.18 - 10:39
Если не значениеЗаполнено(ТекСтрока.НомерДоговора) Тогда
Сообщить("Не заполнен номер договора "+ТекСтрока.ОрганизацияНаименование)
КонецЕсли ТД.ДобавитьСтроку() в цикле и запускайте для проверки
   IOANNscrp
 
66 - 29.12.18 - 10:39
(64) еще бы он не сохранил))
 
 Рекламное место пустует
   13_Mult
 
67 - 29.12.18 - 10:39
(62) Значит реквизит "НомерДоговора" не заполнен в документах "ЗаявкаНаОткрытиеСчетов "
   Филипп Остырко
 
68 - 29.12.18 - 10:42
(67) понятно. хотя этот реквизит есть ,так и назывался "НомерДоговора"
   13_Mult
 
69 - 29.12.18 - 10:44
(68) Ну Всё, теперь я тоже всё понял. ))
   Eiffil123
 
70 - 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) Конечно.
   IOANNscrp
 
74 - 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) компания самая сильная в регионе, поэтому ,наверно, могут себе позволить принимать с нуля


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.