![]() |
|
Получение слов из строки | ☑ | ||
---|---|---|---|---|
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);
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |