|
|
|
Загрузка строки с разделителем в СписокЗначений! в семерке получалось)) а в | ☑ | ||
|---|---|---|---|---|
|
0
Aleksey_wscb
12.07.07
✎
16:19
|
СписокЗначений.ИзСтрокиСРазделителями(СтрокаТекста);
Далее СписокЗначений.ПолучитьЗначение(1); А как организовать в восьмере? не нашел подобия |
|||
|
1
Salvador Limones
12.07.07
✎
16:20
|
Используй СтрЗаменить
|
|||
|
2
AversDik2
12.07.07
✎
16:20
|
(0) Самому написать процедуру получения списка
|
|||
|
3
Aleksey_wscb
12.07.07
✎
16:24
|
(1) А причем тут СТрЗаменить?
(2) Самому написать одно, а использовать написанное другое.Тем более раньше была. Преемственность слабовата. |
|||
|
4
Salvador Limones
12.07.07
✎
16:25
|
(3) Не понимаешь? Жаль. :-(
|
|||
|
5
AversDik2
12.07.07
✎
16:38
|
(3) В семерке можно было получить список толко по разделителям ";" (точка с запятой), а при использовании (1) можно любые разделители использовать.
|
|||
|
6
Aleksey_wscb
13.07.07
✎
08:38
|
Не о том речь, стрЗаменить меняет разделители на другие. это понятно.
Вопрос в том, как загрузить строку в списокЗначений без лишних рукодвижений)) Ладно, смотрю в восьмере так не создашь спЗнач. Вопрос в следующем, как работать со строкой с разделителями. Как их отсекать, в других языках есть функции поиска С КОЛИЧЕСТВОМ ВХОЖДЕНИЙ. А ТУТ ТОЛЬКО ПОИСК ВИЖУ: найти("строка","подсктрока") а кол-ва вхождений нет. И как работать? т е в функцию Сред(начНОмер, кол-во). как тут определить колво. есть извращенческий способ: искать ";", удалять этот символ. потом брать разницу общей длины и первое вхождение ";", таким образом получать колво вырезаемых символов. не нравится мне эта метода.. |
|||
|
7
чертенок13
13.07.07
✎
09:44
|
Стр = СтрЗаменить(Стр,Символы.Таб,Символы.ПС);
НоваяСтрочка = Тз.Добавить(); НоваяСтрочка.Код = СтрПолучитьСтроку(Стр, 1); НоваяСтрочка.Наименование = СтрПолучитьСтроку(Стр, 2); НоваяСтрочка.ЭтоГруппа = ?(Число(СтрПолучитьСтроку(Стр, 3)) = 1, Истина, Ложь); |
|||
|
8
чертенок13
13.07.07
✎
09:45
|
Смысл - замена в строке символа разделителя на перенос строки, а дальше доступ к отдельным строкам этой переменной.
|
|||
|
9
Aleksey_wscb
13.07.07
✎
09:51
|
Спасибо Чертенок, ты чертовски помогла!
|
|||
|
10
чертенок13
13.07.07
✎
09:54
|
:)) тогда уж помог!
СтрЧислоСтрок(<Строка>) - количество строк в переменной |
|||
|
11
Aleksey_wscb
13.07.07
✎
09:57
|
)) и тут верно, помог. Почему-то мои ассоциации с чертенками указывают на женский пол))
|
|||
|
12
Гений 1С
гуру
13.07.07
✎
10:06
|
(6) Надо использовать библиотеку готовых функций, например, мою библиотеку на инфостарте, а не юзать только готовые функции. Повышай свой класс
|
|||
|
13
Salvador Limones
13.07.07
✎
10:08
|
Мдаа....
(9) Сам так и не захотел подумать? |
|||
|
14
Живой Ископаемый
13.07.07
✎
10:09
|
По-моему в каждой типовой есть такая функция:
// Функция "расщепляет" строку на подстроки, используя заданный // разделитель. Разделитель может иметь любую длину. // Если в качестве разделителя задан пробел, рядом стоящие пробелы // считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр // игнорируются. // Например, // РазложитьСтрокуВМассивПодстрок(",ку,,,му", ",") возвратит массив значений из пяти элементов, // три из которых - пустые строки, а // РазложитьСтрокуВМассивПодстрок(" ку му", " ") возвратит массив значений из двух элементов // // Параметры: // Стр - строка, которую необходимо разложить на подстроки. // Параметр передается по значению. // Разделитель - строка-разделитель, по умолчанию - запятая. // // // Возвращаемое значение: // массив значений, элементы которого - подстроки // Функция глРазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") МассивСтрок = Новый Массив(); Если Разделитель = " " Тогда Стр = СокрЛП(Стр); Пока 1 = 1 Цикл Поз = Найти(Стр,Разделитель); Если Поз = 0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = СокрЛ(Сред(Стр,Поз)); КонецЦикла; Иначе ДлинаРазделителя = СтрДлина(Разделитель); Пока 1 = 1 Цикл Поз = Найти(Стр,Разделитель); Если Поз = 0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = Сред(Стр,Поз + ДлинаРазделителя); КонецЦикла; КонецЕсли; КонецФункции // глРазложить |
|||
|
15
Живой Ископаемый
13.07.07
✎
10:12
|
потом пишем МассивПосдстрок=глРазложитьСтрокуВМассивПодстрок("5,678,178,9934, майфун,раскривушка,фости", ",")
Сообщить(МассивПосдстрок[0]) выведет "5" Сообщить(МассивПосдстрок[7]) выведет "фости" |
|||
|
16
Живой Ископаемый
13.07.07
✎
10:47
|
Просто многие (и я тоже) в в77 привыкли к списку значений, а в в8 массив дает подобную же гибкость...
Видел код, в котором человек результат запроса сначала выгружает в Массив (ну просто метод возвращает его в массив), а потом специально создает список значений и делает из массива список значений.. Для чего? Для того чтобы потом список значений использовать в качестве Значения Параметра в запросе - в условии типа ТМЦ в СпиоскТМЦ Но самое смешное то, что запросы в в8 позволяют в качестве такого значения как раз передавать массив!! Об этом нужно как-то помнить... Ну и вообще, быть ленивым и экономить силы - не писать ненужный код |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |