Имя: Пароль:
1C
1С v8
Как собрать строку из массива
🠗 (Asmody 20.03.2016 21:02)
,
0 ФруктовыйКефир
 
20.03.16
11:13
Добрый день, подскажите как собрать в строку значение динамического массива( кол-во элементов массива генерируется функцией).
1 Chameleon1980
 
20.03.16
11:18
чегой?
2 Лефмихалыч
 
20.03.16
11:19
Строка = "";
Для каждого Значение из ДинамическийМассив Цикл
  Строка = Строка + Значение;
КонецДля
3 Chameleon1980
 
20.03.16
11:19
циклом, вестимо
4 kosts
 
20.03.16
11:49
(0) Я сам не пробовал, но попробуй так (со списком значений вроде у кого-то прокатывало).

Строка = "" + ДинамическийМассив;
5 ФруктовыйКефир
 
20.03.16
12:12
(2) Это понятно, но он мне вернет значение последнего элемента, а мне нужно, что бы цикл вернул в строку значение всех элементов
6 ФруктовыйКефир
 
20.03.16
12:13
Условный код :
Процедура СформироваСтроку()
КолВоСимволов = 4;
Строка = Новый Массив;
Для сч = 0 По КолВоСимволов цикл
Строка.Добавить(СоздатьСтрокуИзASCI);
КонецЦикла;

КонецПроцедуры


Функция СодатьСтрокуИзASCI ()
СоздатьСимвол = Новый ГенераторСлучайныхЧисел();
Возврат Строка(Символ(СоздатьСимвол.СлучайноеЧисло(Мин,Макс);
КонецФункции
7 ФруктовыйКефир
 
20.03.16
12:14
КолВоСимволов  - 1
8 Serginio1
 
20.03.16
12:37
Лучше использовать ЗаписьXML

Процедура ВывестиВремя(врап,stopWatch)
    ts = stopWatch.Elapsed;
    String=Врап.ПолучитьТип("System.String");
    // Format and display the TimeSpan value.
    elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
    ts.Hours, ts.Minutes, ts.Seconds,
    ts.Milliseconds / 10,0);
    Сообщить(elapsedTime);
КонецПроцедуры    
Процедура StringBuilderНажатие(Элемент)
    // Вставить содержимое обработчика.
    врап=новый COMОбъект("NetObjectToIDispatch45");

    КоличествоИтераций=200000;
    stopWatch = Врап.СоздатьОбъект("System.Diagnostics.Stopwatch");
    
    стр="";
    
    НачВремя=ТекущаяДата();
    stopWatch.Start();
    
    Для сч=1 по КоличествоИтераций Цикл
        стр=стр+Строка(сч);
    КонецЦикла;
    stopWatch.Stop();
    
    ВремяВыполнения=ТекущаяДата()-НачВремя;
    Сообщить("Конкатенация ="+ВремяВыполнения+" сек. ДлинаСтр="+СтрДлина(Стр));
    
    ВывестиВремя(врап,stopWatch);
    стр="";
    НачВремя=ТекущаяДата();
    stopWatch.Restart();
    SB =  врап.СоздатьОбъект("System.Text.StringBuilder");
    Для сч=1 по КоличествоИтераций Цикл
        SB.Append(Строка(сч));
    КонецЦикла;
    
    стр=SB.ToString();
    stopWatch.Stop();
    
    ВремяВыполнения=ТекущаяДата()-НачВремя;
    Сообщить("StringBuilder ="+ВремяВыполнения+" сек. ДлинаСтр="+СтрДлина(Стр));
    ВывестиВремя(врап,stopWatch);
    
    НачВремя=ТекущаяДата();
    stopWatch.Restart();
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку();
    
    Для сч = 1 по КоличествоИтераций Цикл
        ЗаписьXML.ЗаписатьБезОбработки(Строка(сч));
    КонецЦикла;
    Стр = ЗаписьXML.Закрыть();
    stopWatch.Stop();
    
    ВремяВыполнения=ТекущаяДата()-НачВремя;
    Сообщить("ЗаписьXML ="+ВремяВыполнения+" сек. ДлинаСтр="+СтрДлина(Стр));
    ВывестиВремя(врап,stopWatch);
    
//Конкатенация =96 сек. ДлинаСтр=1 287 896
//00:01:36.22
//StringBuilder =10 сек. ДлинаСтр=1 287 896
//00:00:09.91
//ЗаписьXML =4 сек. ДлинаСтр=1 287 896
//00:00:04.40
9 Лефмихалыч
 
20.03.16
13:51
(5) чего? В переменной Строка будут все значения, какие есть в массиве.

(8) да уж, на много лучше, ага. Дотнэты еще прикрути свои к этой задаче на 4 строчки.
10 Aleksey
 
20.03.16
14:38
(9) Так вроде как в и (8) вроде немного строк

   ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку();
    
    Для сч = 1 по КоличествоИтераций Цикл
        ЗаписьXML.ЗаписатьБезОбработки(Строка(сч));
    КонецЦикла;
    Стр = ЗаписьXML.Закрыть();
11 Aleksey
 
20.03.16
14:39
Там просто 3 разных варианта + счетчик времени и сравнения 3-вариантов
12 Serginio1
 
20.03.16
16:20
(9) Там как раз сравнивается и вариант с StringBuilder.
13 MishaD
 
20.03.16
17:00
У меня иногда складывается ощущение, что Serginio1 написал бота на Дот.Нет, и этот бот во все темы, где написано про строки и HTTP пихает код на Дот.Нет, или ссылки на него же.
14 Serginio1
 
20.03.16
17:14
(13) Тв мне льстишь. Но стоит подумать.
Я просто привел пример из статьи. http://catalog.mista.ru/public/448668/

Где приводится пример, что соединять строки лучше через ЗаписьXML
15 Serginio1
 
20.03.16
17:19
16 su_mai
 
20.03.16
17:40
(0) c 8.3.7 есть методы:
СтрРазделить
СтрСоединить
17 Лефмихалыч
 
20.03.16
17:45
(15) больше похоже на навязывание
18 Записьдампа
 
20.03.16
19:16
(15) Это тебе так кажется. На самом деле ты даже не удосужился понять, кто же является твоей целевой аудиторией.

Вместо того, чтобы разьяснять недотепам, которые два и два сложить не могут, предметную область (тот же http протокол), ты тупо даешь ссылки на свои статьи. Они и так простейший цикл написать не могут, а ты подсовываешь им еще одну одну прослойку-абстракцию, написанную на каком-то русско-английском диалекте и требующую регистрации COM-сервера. И как это оценивать, кроме как "навязвание"?
19 Serginio1
 
20.03.16
19:30
(18) Ну ты же понимаешь, но не применяешь. Некоторые кстати понимают и берут на вооружение
http://catalog.mista.ru/public/434345/
20 Записьдампа
 
20.03.16
20:05
(19) Не спрыгивай. Персонально я потому и не применяю, что могу обойтись без этого барахла.

Так кто же является твоей целевой аудиторией? Для кого же ты вещаешь? Счастье всем, и чтобы, не дай бог, никто не ушел? =]
21 Asmody
 
20.03.16
20:48
Это задача по информатике для 8 класса.
22 Serginio1
 
20.03.16
21:30
(20) А с чего я должен спрыгивать?

Я показываю людям решение задачи, которые нельзя решить на 1С или проверку того, что у них не получается.
Как с помощью .Net можно решать кучу задач без написания ВК.
Например это не моя разработка но аналогичная.
http://catalog.mista.ru/public/503059/

Но вот интересно почему это то тебя так коробит?
23 VladimirVK120
 
20.03.16
22:33
(22) Скрин в личке глянь.
24 Записьдампа
 
20.03.16
22:56
(22) Меня не коробит. Я просто тебя информирую, как ты выглядишь со стороны.
25 Serginio1
 
20.03.16
23:34
(24) Спасибо. Учту.
26 Serginio1
 
20.03.16
23:44
(24) На самом деле я делюсь тем, на что потратил кучу времени. И оно реально помогает мне в работе. А например в 7.7 так она применяется на каждом шагу.
Просто смотрю, как люди мучаются, что легко сделать используя классы .Net
27 ФруктовыйКефир
 
21.03.16
11:34
Всем спасибо, вопрос решен. Я еще учусь 1с, в PHP есть предопределенные функции для сбора элементов массива в одну строку, вот почему и спросил. Просто я искал функцию, а не цикл foreach...
28 Xecutor
 
23.03.16
13:34
СтрСоединить()