Имя: Пароль:
1C
1C 7.7
v7: Создать строку более 255 символов в текстовом файле
0 shuric_md
 
18.05.12
13:46
Доброе время суток.
Нужен совет в выгрузке данных в текстовой файл. Каждая строка текстового файла должна иметь длину 444 символа. Строки другой длины игнорируются.

Вот код:

   Текст = СоздатьОбъект("Текст");
   Текст.КодоваяСтраница(0);

   Пока Запрос.Группировка(1) = 1 Цикл
           
       тз.НоваяСтрока();
       тз.ДатаДок          = Запрос.ДатаДок;
       тз.НомерДок         = Запрос.НомерДок;

               //-- заполнил таб.значений

               стр = "";
               стр = тз.ДатаДок + "_" + тз.НомерДок + "_" + // и т.д (всё в одной строке)
               Текст.ДобавитьСтроку(стр);

       КонецЦикла;

       Текст.Записать(ВыбФайлаДанныхВыгрузки);
1 VladZ
 
18.05.12
13:48
Посмотри в сторону FSO:
oFSO = СоздатьОбъект("Scripting.FileSystemObject");
2 Полякова
 
18.05.12
13:49
Используй Scripting.FileSystemObject
3 sdv2000
 
18.05.12
13:52
(2) Оксана, зачем тебе ЭТО?
4 shuric_md
 
18.05.12
13:52
пробовал = перенос строк происходит
5 shuric_md
 
18.05.12
13:52
Выгрузка в банк клиент
6 Полякова
 
18.05.12
13:53
(3) Хобби.
7 shuric_md
 
18.05.12
13:55
(6) Точно
8 andrewks
 
18.05.12
13:57
use Write instead WriteLine
9 viktor_vv
 
18.05.12
13:58
А в чем прикол с 255 символов в текстовом файле. Вроде этот толькона вывод окно сообщений ограничивает.
10 Полякова
 
18.05.12
13:59
(8) Языком общения на форуме является русский. Сообщения, написаные на любом другом языке, ввиду незнания модератором всех языков мира, кроме русского, автоматически рассматриваются как подстрекательство к свержению правящего строя


Зачем ты пытаешься свергнуть правящий строй?
11 andrewks
 
18.05.12
13:59
(2) ок, тогда самозабанься за (2)
12 andrewks
 
18.05.12
14:00
"Каждая строка текстового файла должна иметь длину 444 символа. Строки другой длины игнорируются. "
интересно, кто такой формат придумал? расстрелять
13 Полякова
 
18.05.12
14:01
(11) Ты же не маленький мальчик и знаешь разницу.
14 andrewks
 
18.05.12
14:01
(13) хочешь поговорить об этом?
15 shuric_md
 
18.05.12
14:03
Других идей нет ???
16 andrewks
 
18.05.12
14:05
есть. adodb.Stream
17 shuric_md
 
18.05.12
14:07
Использовал - "Scripting.FileSystemObject" и "AddIn.V7TextFile" - желаемого результата не добился.
18 shuric_md
 
18.05.12
14:07
Подробнее про - adodb.Stream
19 Полякова
 
18.05.12
14:08
(17) значит неправильно использовал
20 slowpoke1C
 
18.05.12
14:08
(0) Можно ещё использовать v7plus, там длинные строки проходят, вроде бы.
21 shuric_md
 
18.05.12
14:09
(20) описание функции v7plus есть
22 shuric_md
 
18.05.12
14:10
(19) проверял несколько раз
23 andrewks
 
18.05.12
14:10
(22) печалька. забей, это судьба
24 shuric_md
 
18.05.12
14:12
(23) не пойдет. :)
25 shuric_md
 
18.05.12
14:15
(20) так как насчет описаний функций и процедур v7plus.dll - если нет то чего предлагаешь ?
26 andrewks
 
18.05.12
14:16
не, ну сам подумай: СП украли, в гугле забанили, на мисте игнорируют
27 shuric_md
 
18.05.12
14:18
(26):)
28 aka AMIGO
 
18.05.12
14:21
я думаю, нашел-бы выход из ситуации.
еще один вариант - разбивать перед записью строку на 2 строки, и читать их с конкатенацией.. просто помнить, что строки разрезаны
29 FN
 
18.05.12
14:25
(0)
   Текст=СоздатьОбъект("Текст");
   стр="";
   для х=1 по 444 Цикл
       стр=стр+"1";
   КонецЦикла;
   Для х=1 по 15 Цикл
       Текст.ДобавитьСтроку(стр);
   КонецЦикла;
   Текст.Записать("C:\test.txt");
   Текст2=СоздатьОбъект("Текст");
   Текст2.Открыть("C:\test.txt");
   Для х=1 по 15 Цикл
       Сообщить("Длина строки "+х+": "+СтрДлина(Текст2.ПолучитьСтроку(х))+" символов.");
   КонецЦикла;


выдает:

Длина строки 1: 444 символов.
Длина строки 2: 444 символов.
Длина строки 3: 444 символов.
Длина строки 4: 444 символов.
Длина строки 5: 444 символов.
Длина строки 6: 444 символов.
Длина строки 7: 444 символов.
Длина строки 8: 444 символов.
Длина строки 9: 444 символов.
Длина строки 10: 444 символов.
Длина строки 11: 444 символов.
Длина строки 12: 444 символов.
Длина строки 13: 444 символов.
Длина строки 14: 444 символов.
Длина строки 15: 444 символов.
30 viktor_vv
 
18.05.12
14:30
Вот и у меня так же. В чем прикол, понять не могу. Хотя судя по хитрому взгляду smaharbA здесь :) Ограничение на длину строки что-то в этом есть :).
31 shuric_md
 
18.05.12
14:37
(30) то есть через "scripting.filesystemobject" ? Если да - результат не тот.
32 shuric_md
 
18.05.12
14:38
(29) на таком простом примере всё в норме, ты попробуй выгрузи одно платежное поручение в 1 строку.
33 viktor_vv
 
18.05.12
14:40
(32) Так в теме из (30) есть еще про наличие спецсимволов в строке.
34 shuric_md
 
18.05.12
14:43
(33) у тебя дало желанный результат
35 Mikeware
 
18.05.12
14:44
(26) ...ЖКК сгорели...
36 viktor_vv
 
18.05.12
14:45
(34) Не пробовал. Экспериментировал как в (29).
37 shuric_md
 
18.05.12
14:48
(36) в (29) тоже что-то есть :)
38 shuric_md
 
18.05.12
15:02
(29) делаю по твоему примеру:

   колстр = 0;
   Пока Запрос.Группировка(1) = 1 Цикл

       колстр = колстр + 1;
       
       тз.НоваяСтрока();
       тз.ДатаДок          = Запрос.ДатаДок;
       тз.НомерДок         = Запрос.НомерДок;

               //-- и т.д.


       стр = "";
       Для н=1 по тз.КоличествоКолонок() Цикл
          стр = стр + тз.ПолучитьЗначение(колстр, н);
       КонецЦикла;

       Текст.ДобавитьСтроку(стр);
       
   КонецЦикла;
     
   Текст.Записать(ВыбФайлаДанныхВыгрузки);
39 shuric_md
 
18.05.12
15:03
Да-а-а больше нет идей !?
40 ЧеловекДуши
 
18.05.12
15:06
Объект "Текст" - Зло от 1С + Билла.
Используй 1С++ - BinaryData
41 shuric_md
 
18.05.12
15:09
(40) нет спасибо...
42 FN
 
18.05.12
15:10
(39) ты можешь объяснить что именно у тебя не получается?
43 shuric_md
 
18.05.12
15:18
ДАТА      |ИСП|ДАТА ДОК. |N ДОК     |ТИП|КОД|ДЕБЕТ          |КРЕДИТ         | должно быть.
44 shuric_md
 
18.05.12
15:18
ДАТА      |ИСП|ДАТА ДОК. |N ДОК     |ТИП
|КОД|ДЕБЕТ          |КРЕДИТ         | - получается
45 viktor_vv
 
18.05.12
15:19
Так попробуй.

     стр = "";
       Для н=1 по тз.КоличествоКолонок() Цикл
          стр = стр + тз.ПолучитьЗначение(колстр, н);
       КонецЦикла;

   Стр = СтрЗаменить(Стр,Симв(10),"");
       Стр = СтрЗаменить(Стр,Симв(13),"");        

       Текст.ДобавитьСтроку(стр);
46 ЧеловекДуши
 
18.05.12
15:20
(41)Зря, ну а если серьезно, то начни лучше выгрузку делать через XML :)
47 shuric_md
 
18.05.12
15:22
(45) что заменяет ? Не поиму.

   Стр = СтрЗаменить(Стр,Симв(10),"");
   Стр = СтрЗаменить(Стр,Симв(13),"");
48 ЧеловекДуши
 
18.05.12
15:23
Ты выгрузку для какой программы делаешь?
49 shuric_md
 
18.05.12
15:24
(48) для клиент банка
50 ЧеловекДуши
 
18.05.12
15:24
(49)И что у них есть прописаный формат файла?
Или ты строчишь со слов туп. Буха?
51 ЧеловекДуши
 
18.05.12
15:25
+ Приведи текст формата, они обычно на словах не общаются :)
52 chief accountant
 
18.05.12
15:25
(49) Что за банк такой странный, что ему типовая не подходит?
53 shuric_md
 
18.05.12
15:25
(51) есть описание текст.файла для импорта плат.поручений
54 ЧеловекДуши
 
18.05.12
15:26
Покажи, что ты там имеешь в виду.
Думается ты даже понятие не имеешь, что тебе надо нарисовать :)
55 chief accountant
 
18.05.12
15:27
(54) Либо не Россия, либо ТС гонит
56 shuric_md
 
18.05.12
15:27
(54) ... так, понятно спасибо за помощь.
57 shuric_md
 
18.05.12
15:28
(55) ... и тебе тоже спасибо.
58 shuric_md
 
18.05.12
15:29
(55) .. по нику мог бы определить что не Россия.
59 viktor_vv
 
18.05.12
15:30
Ну ты бы таки выложил хотя бы пару строчек из полученного тобой файла. Конфеденциальную информацию забей единичками.
60 viktor_vv
 
18.05.12
15:30
(58) Так ты из Молдовы что ли ?
61 chief accountant
 
18.05.12
15:32
(58) у меня телепат сегодня выключен.
не жми формат - выложи
62 viktor_vv
 
18.05.12
15:32
(47) Заменяет символы перевода строки CR+LF.
И у тебя всегда режет как в (44) ?
63 shuric_md
 
18.05.12
15:43
(62) спасибо сейчас попробую
64 shuric_md
 
18.05.12
16:24
(62) Большое спасибо за помощь.
Кого интересует:

     стр = "";
       Для н=1 по тз.КоличествоКолонок() Цикл
          стр = стр + тз.ПолучитьЗначение(колстр, н);
       КонецЦикла;

       стр = СтрЗаменить(Стр,РазделительСтрок,"");


       Текст.ДобавитьСтроку(стр);
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой