Вход | Регистрация

1С:Предприятие ::

Метки: 

Поиск позиции подстроки в строке

Я
   NastyNasty
 
27.12.12 - 13:00
Дорогие 1Сники! Нужна Ваша помощь. Я в запросе получаю строку (формат у нее такой: тутненужнаястрока@НУЖНАЯСТРОКА@тутненужнаястрока). Длина ненужных строк переменная, но я наверняка знаю, что строка, которая мне нужна отделена символами @. Мне нужно ИМЕННО в запросе отбросить ненужные части (отчет СКД). В голову пришел глупый вариант поиска в каждом символе строки подстроку @, чтобы выявить позицию, но это очень глупо...
 
 
   НЕА123
 
1 - 27.12.12 - 13:04
(0)
а что делать? в запросе только так.
   HouseCD
 
2 - 27.12.12 - 13:05
Посмотри операцию Подобно (Like)
   NastyNasty
 
3 - 27.12.12 - 13:05
(1) я не могу поверить, что никто не придумал адекватного решения
   DrShad
 
4 - 27.12.12 - 13:07
(2) всю ветку не читал ПОДОБНО уже было?
   salvator
 
5 - 27.12.12 - 13:08
(0) ПОДСТОРОКА. Но она тебе не поможет.
   НЕА123
 
6 - 27.12.12 - 13:09
(3)
пардон. в (1) про запросы.
если СКД, тогда спрошу - зачем?
   NastyNasty
 
7 - 27.12.12 - 13:09
(5)ПОДСТРОКА я использую в своем деревянном решении
   МихаилМ
 
8 - 27.12.12 - 13:11
   НЕА123
 
9 - 27.12.12 - 13:13
НУЖНАЯСТРОКА - максимальная длина какая?
   Reset
 
10 - 27.12.12 - 13:13
По нормальному в запросе никак.

По ненормальному - соединять с таблицей чисел по 
Подстрока(Строка,Числа.Значение,1)="@",
используя минимум(), получить только первые вхождения.
а затем выводить Подстрока(Строка,Числа.Значение) КАК БезПервойНенужно части
затем аналогично отрезать вторую (уже минимум() не нужен будет)
 
 Рекламное место пустует
   Ursus maritimus
 
11 - 27.12.12 - 13:15
Если СКД, можно внешнюю функцию использовать
   NastyNasty
 
12 - 27.12.12 - 13:17
(9) неограниченная длина
   dimaldinho
 
13 - 27.12.12 - 13:49
(0) >> Мне нужно ИМЕННО в запросе отбросить ненужные части (отчет СКД).

Программно формируешь отчет. С помощью ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений выводишь результат в таблицу значений. Таблицу значений алгоритмически обрабатываешь, отрезая ненужные части строк. Получившуюся таблицу значений с правильными строками используешь как внешний источник данных в компоновке.
   Infsams654
 
14 - 27.12.12 - 14:20
(0) МассивПодстрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ВсяСтрока,"@");
в типовых БП, БГУ и пр.
   NastyNasty
 
15 - 28.12.12 - 13:23
(14) ваше решение мне нравится, всё хорошо, спасибо, я как раз в вдгб искала подобную функцию, но у меня снова тупняк. прописываю вызов функции в вычисляемом поле. возвращается у меня массив. Но я не могу обратиться к элменту по индексу. Пишу так ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ВсяСтрока,"@")[1]. при формировании отчета говорит "Отчет не сформирован. ожидается ) ")"". Как я могу получить элемент массива?
   Infsams654
 
16 - 28.12.12 - 14:41
(15) так нельзя (в 1С к сожалению, нет хранимых процедур и пользовательских функций, как в порядочных СУБД). Поэтому нужно программно обрабатывать результат, см. например, v8: перехват результата СКД
   NastyNasty
 
17 - 10.01.13 - 08:25
Нашла такой же внешний отчет, сделанный построителем. Если конфа была бы дописанная, можно было бы в свой модуль функцию засунуть, которая возвращает не массив, как стандартная, а строку


Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует