Имя: Пароль:
1C
1С v8
Получение слов из строки
0 ErrorEd88
 
29.12.11
16:19
//Создаем список артикулов
Процедура АртикулСНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
   
Элемент.СписокВыбора.Очистить();
Элемент.Ширина = 170;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Родитель", Справочники.Номенклатура.НайтиПоКоду("00000000010"));
Запрос.Текст ="ВЫБРАТЬ
|    Номенклатура.Артикул КАК Артикул,
|    Номенклатура.Наименование
|ИЗ
|    Справочник.Номенклатура КАК Номенклатура
|ГДЕ
|    Номенклатура.Родитель = &Родитель
|
|УПОРЯДОЧИТЬ ПО
|    Артикул
|АВТОУПОРЯДОЧИВАНИЕ";
Выборка = Запрос.Выполнить().Выбрать();
СписокМоделей = Новый СписокЗначений();
Пока Выборка.Следующий() Цикл
СписокМоделей.Добавить(Строка(Выборка.Артикул + "    " + Выборка.Наименование));
КонецЦикла;
Элемент.СписокВыбора = СписокМоделей;    
   
КонецПроцедуры

Теперь мне нужно, к примеру, чтобы от "РП-243   Блузка" осталось РП-243. Это нужно прописать в обработчике ПриИзмененииАртикулС. Лев(...,6) не поможет, т.к. у меня все артикулы разные по длине.
В сп спасения не нашёл.

И можно ещё ламерский вопрос? Как из одного запроса получить первую и последнюю выборку.
Делал вот так:

Выборка1 = Запрос.Выполнить().Выбрать();
Выборка2 = Запрос.Выполнить().Выбрать();

Если Выборка1.Следующий() Тогда
ПервыйАртикул = Выборка1.Артикул;
КонецЕсли;

Пока Выборка2.Следующий() Цикл
ПоследнийАртикул = Выборка2.Артикул;
КонецЦикла;

ЭтотОбъект.АртикулС = ПервыйАртикул;
ЭтотОбъект.АртикулПо = ПоследнийАртикул;
1 Alex S D
 
29.12.11
16:20
ну находи пробел после артикула
2 vicof
 
29.12.11
16:21
если в артикулах пробелов нет и вся номенклатура начинается с артикула, то ищи до первого пробела
3 GLazNik
 
29.12.11
16:21
СтрЗаменить(Артикул," ",Символы.ПС);
4 andrewks
 
29.12.11
16:23
Лев(Наим,Найти(Наим," ")-1)
5 Fish
 
гуру
29.12.11
16:24
(0)Новогодний подарок:
// Функция "расщепляет" строку на подстроки, используя заданный
//        разделитель. Разделитель может иметь любую длину.
//        Если в качестве разделителя задан пробел, рядом стоящие пробелы
//        считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр
//        игнорируются.
//        Например,
//        РазложитьСтрокуВМассивПодстрок(",ку,,,му", ",") возвратит массив значений из пяти элементов,
//        три из которых - пустые строки, а
//        РазложитьСтрокуВМассивПодстрок(" ку   му", " ") возвратит массив значений из двух элементов
//
//    Параметры:
//        Стр -            строка, которую необходимо разложить на подстроки.
//                        Параметр передается по значению.
//        Разделитель -    строка-разделитель, по умолчанию - запятая.
//
//
//    Возвращаемое значение:
//        массив значений, элементы которого - подстроки
//
Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт
   
   МассивСтрок = Новый Массив();
   Если Разделитель = " " Тогда
       Стр = СокрЛП(Стр);
       Пока 1=1 Цикл
           Поз = Найти(Стр,Разделитель);
           Если Поз=0 Тогда
               МассивСтрок.Добавить(Стр);
               Возврат МассивСтрок;
           КонецЕсли;
           МассивСтрок.Добавить(Лев(Стр,Поз-1));
           Стр = СокрЛ(Сред(Стр,Поз));
       КонецЦикла;
   Иначе
       ДлинаРазделителя = СтрДлина(Разделитель);
       Пока 1=1 Цикл
           Поз = Найти(Стр,Разделитель);
           Если Поз=0 Тогда
               МассивСтрок.Добавить(Стр);
               Возврат МассивСтрок;
           КонецЕсли;
           МассивСтрок.Добавить(Лев(Стр,Поз-1));
           Стр = Сред(Стр,Поз+ДлинаРазделителя);
       КонецЦикла;
   КонецЕсли;
   
КонецФункции
6 ErrorEd88
 
29.12.11
16:24
(4) Отлично, спасибо.
7 ErrorEd88
 
29.12.11
16:44
(5) Спасибо.
8 aleks-id
 
29.12.11
16:54
Артикул = стрПолучитьСтроку(стрЗаменить(Выборка.Артикул," ",Символы.ПС), 1);
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс