Имя: Пароль:
1C
 
Загрузка строки с разделителем в СписокЗначений! в семерке получалось)) а в
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 позволяют в качестве такого значения как раз передавать массив!! Об этом нужно как-то помнить... Ну и вообще, быть ленивым и экономить силы - не писать ненужный код
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс