|   |   | 
| 
 | Продолжаю тему про 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) компания самая сильная в регионе, поэтому ,наверно, могут себе позволить принимать с нуля     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |