Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Список значений в строку
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
salton
Прошу тапками не бросаться - я пытаюсь разобраться с 1С 8 совсем недавно. Матчасть читал. Столкнулся намедни с необходимостью: список значений (внутри может быть как 1 так и больше срок) необходимо преобразовать в строку с разделителями (пускай это будет ",").
Функции аналогичной как в 1С 7.7 не нашел. Вернее сказать нашел - ЗначениеВСтрокуВнутр(), описание которой повергло в ступор. На просторах интернета нашел кусок кода:
Функция ВСтроку(Знач Массив)    
    СтрокаВнутр=СтрЗаменить(ЗначениеВСтрокуВнутр(Массив), """}," + Символы.ПС + "{""S"",""", "");
    СтрокаВнутр2=Сред(СтрокаВнутр,Найти(СтрокаВнутр,Массив[0]));    
    Возврат Лев(СтрокаВнутр2,СтрДлина(СтрокаВнутр2)-6);
КонецФункции


А также нашел пару-тройку других вариантов на основании которых было сделано решение:
Функция ВСтроку(Массив)
    ном=0;
    Для каждого элемент Из Массив Цикл
        стр=Строка(стр)+Строка(Массив.Получить(ном).Значение)+",";
        ном=ном+1;
    КонецЦикла;
    возврат Лев(стр,СтрДлина(Стр)-1);
КонецФункции


Итак вопрос - как первый код сделать рабочим?

При условии, что:
Массив = Новый СписокЗначений;
Массив.Добавить(1);
Массив.Добавить(2);
Массив.Добавить(3);
Массив.Добавить(4);


Заранее спасибо!
Vidocq05
salton @ Сегодня, 11:55 необходимо зарегистрироваться для просмотра ссылки ,
Нужно именно со списка значений?
Если с массива то вот:

СтрСоединить (StrConcat)
Синтаксис:

СтрСоединить(<Строки>, <Разделитель>)
Параметры:

<Строки> (обязательный)

Тип: ФиксированныйМассив; Массив.
Массив, содержащий объединяемые строки.
<Разделитель> (необязательный)

Тип: Строка.
Строка, которая будет вставлена между объединяемыми строками.
Если параметр не задан, строки будут объединены слитно друг с другом.
Значение по умолчанию: Неопределено.
Возвращаемое значение:

Тип: Строка.
Строка, содержащая соединенные исходные строки с разделителем между ними.
Описание:

Соединяет массив переданных строк в одну строку с указанным разделителем.


salton @ Сегодня, 11:55 необходимо зарегистрироваться для просмотра ссылки ,
Или так

МассивЭлементов = ВашСписокЗначений.ВыгрузитьЗначения();

СоединеннаяСтрока = СтрСоединить(МассивЭлементов,",");
Flexy
Спис = Новый СписокЗначений;
Спис.Добавить(1);
Спис.Добавить(2);
Спис.Добавить(3);
Спис.Добавить(4);
Спис.Добавить(5);
Результат = "";
Для Каждого Элем Из Спис Цикл
Результат = ?(Спис.Индекс(Элем) > 0,  Результат+","+Элем.Значение, Результат+Элем.Значение)     
КонецЦикла;
salton
Flexy, спасибо! Ваш код лаконичнее моего.

Но... интересует вариант с помощью
ЗначениеВСтрокуВнутр()
Flexy
Цитата(salton @ 31.08.17, 12:07) необходимо зарегистрироваться для просмотра ссылки
Но... интересует вариант с помощью
ЗначениеВСтрокуВнутр()

А для чего это нужно?
salton
Цитата(Vidocq05 @ 31.08.17, 12:29) необходимо зарегистрироваться для просмотра ссылки
salton @ Сегодня, 11:55 ,
Или так

МассивЭлементов = ВашСписокЗначений.ВыгрузитьЗначения();

СоединеннаяСтрока = СтрСоединить(МассивЭлементов,",");


"Процедура или функция с указанным именем не определена (СтрСоединить)"

Сам читал за эту функцию.... но не работает почему-то...

Цитата(Flexy @ 31.08.17, 13:13) необходимо зарегистрироваться для просмотра ссылки
А для чего это нужно?

Чисто ради интереса...

Свою задачу я решил методом который описал выше в теме. Но принцип есть принцип!
Flexy
Цитата(salton @ 31.08.17, 12:14) необходимо зарегистрироваться для просмотра ссылки
Чисто ради интереса...

Свою задачу я решил методом который описал выше в теме. Но принцип есть принцип!

Данный метод не рекомендуется использовать.
Примечание:
Используется для сохранения функциональной совместимости с 1С:Предприятием 7.7. Использовать для других целей не рекомендуется.

Ради интереса, для 8-ки, могу посоветовать сериализацию в/из XDTO
Vidocq05
Цитата(salton @ 31.08.17, 13:14) необходимо зарегистрироваться для просмотра ссылки
"Процедура или функция с указанным именем не определена (СтрСоединить)"

Сам читал за эту функцию.... но не работает почему-то...

Какая у Вас платформа? Данной функции в 8.2 нету. Она появилась в 8.3.
salton
Vidocq05 @ Сегодня, 13:24 необходимо зарегистрироваться для просмотра ссылки ,
у меня 8.3.8.2322
в синтаксис-помощнике нет.
на выполнение кода ругается.
Bernet
salton @ Сегодня, 13:26 необходимо зарегистрироваться для просмотра ссылки ,
релиз платформы тоже имеет значение, данная функция появилась не то в 8.3.9 не то в 8.3.10, это уже в описаниях к релизам надо смотреть
Vidocq05
Цитата(Bernet @ 31.08.17, 14:18) необходимо зарегистрироваться для просмотра ссылки
релиз платформы тоже имеет значение, данная функция появилась не то в 8.3.9 не то в 8.3.10, это уже в описаниях к релизам надо смотреть

Появилась она в 8.3.6, на сколько я знаю.
Цитата(salton @ 31.08.17, 13:26) необходимо зарегистрироваться для просмотра ссылки
у меня 8.3.8.2322
в синтаксис-помощнике нет.
на выполнение кода ругается.

Скорее всего стоит режим совместимости с 8.2, поэтому она и не работает.
salton
Цитата(Vidocq05 @ 01.09.17, 9:30) необходимо зарегистрироваться для просмотра ссылки
Скорее всего стоит режим совместимости с 8.2, поэтому она и не работает.

Режим совместимости включен...
Сейчас выключу и проверю! А потом отпишусь!

Наверное я поспешил.... как пошло обновление - висит на реструктуризации Справоничка ЦеновыеГруппы. Или же просто процесс идет, но у меня интерфейс висит!
Подожду часок-полтора... База небольшая - 35 гигов.
Vidocq05
Цитата(salton @ 31.08.17, 13:14) необходимо зарегистрироваться для просмотра ссылки
Чисто ради интереса...

Свою задачу я решил методом который описал выше в теме. Но принцип есть принцип!

Если чисто ради интереса, то создайте пустую конфигурацию и там пробуйте внешней обработкой.
salton
Цитата(Vidocq05 @ 01.09.17, 10:41) необходимо зарегистрироваться для просмотра ссылки
Если чисто ради интереса, то создайте пустую конфигурацию и там пробуйте внешней обработкой.


Я попробую.... На тестовой - вот как обновиться - так и попробую 64000000.gif
salton
Цитата(Vidocq05 @ 31.08.17, 12:29) необходимо зарегистрироваться для просмотра ссылки
salton @ Сегодня, 11:55 ,
Или так

МассивЭлементов = ВашСписокЗначений.ВыгрузитьЗначения();
СоединеннаяСтрока = СтрСоединить(МассивЭлементов,",");


Спасибо! Проверил - работает!

зы. Но мне лично нужна совместимость с 8.2 upset.gif потому вариант возьму на заметку, на будущее!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.