Имя: Пароль:
1C
1С v8
Поиск подстроки в строке (Конструктор запросов)
,
0 Andrey2C
 
09.03.15
18:36
Добрый день. Подскажите как в строке в запросе выбрать только то, что начинается с определенного символа ("/"). Все что после нужно выбрать. Есть функция ПОДСТРОКА(1,1,1). Но как найти номер символа в строке? Заранее благодарен.
1 Крошка Ру
 
09.03.15
18:44
ПОДОБНО "/%"
2 Крошка Ру
 
09.03.15
18:44
Оу, неверно прочитал
3 Andrey2C
 
09.03.15
18:54
Ну если так сделать не получится, то хотя бы подскажите как выбрать 6 крайних слева символов. Хотя там может быть и 3 и 4 и 6 символов. Разные варианты но все точно начинается с символа "/" и он встречается в строке строго 1 раз.
4 PR
 
09.03.15
18:58
(3) ВЫБОР
5 Andrey2C
 
09.03.15
19:02
(4) А если можно чуть более подробно описать.
6 PR
 
09.03.15
19:06
(5) ВЫБОР
КОГДА ПОДСТРОКА(Строка, 1, 1) = "/" ТОГДА ПОДСТРОКА(Строка, 2)
КОГДА ПОДСТРОКА(Строка, 2, 1) = "/" ТОГДА ПОДСТРОКА(Строка, 3)
КОГДА ПОДСТРОКА(Строка, 3, 1) = "/" ТОГДА ПОДСТРОКА(Строка, 4)
КОГДА ПОДСТРОКА(Строка, 4, 1) = "/" ТОГДА ПОДСТРОКА(Строка, 5)
КОГДА ПОДСТРОКА(Строка, 5, 1) = "/" ТОГДА ПОДСТРОКА(Строка, 6)
КОГДА ПОДСТРОКА(Строка, 6, 1) = "/" ТОГДА ПОДСТРОКА(Строка, 7)
ИНАЧЕ "Да ну нафиг это неблагодарное дело"
КОНЕЦ
7 Andrey2C
 
09.03.15
19:17
(6) Спасибо большое! Это сколько же у меня строк в запросе будет теперь.))
8 Garykom
 
гуру
09.03.15
19:19
А может не надо это в запросе делать?
9 Andrey2C
 
09.03.15
19:27
(8) Да вот именно в запросе и надо. По другому никак. Отчет написан в конструкторе запросов и выбирается из внешних данных. А он довольно таки большой. Если бы по другому, то было бы куда проще.
10 ShoGUN
 
09.03.15
19:44
(9) Могу предложить только компоновку и тамошний вызов функций глобальных модулей. В обычном запросе увы - только(6)
11 Andrey2C
 
10.03.15
15:05
(10) Значит пробую еще так. Создал вычисляемое поле с произвольным названием в Путь к данным: "Номер символа"
В Выражение пишу: ОбщийМодуль1.ВычислитьНомерСимвола(СсылкаНаОбъект //Ссылку получаю из запроса)

В Общем модуле пишу:
Функция ВычислитьНомерСимвола(СсылкаНаОбьект) ЭКСПОРТ
             
     Запрос = Новый Запрос;
      Запрос.Текст =
       "ВЫБРАТЬ
       |Emp.Name КАК ИмяСотр
       |ИЗ ВнешнийИсточникДанных.TPS.Таблица.Emp КАК Emp
       |ГДЕ  Emp.Ссылка = &ВыбСсылка";
      
       Запрос.УстановитьПараметр("ВыбСсылка", СсылкаНаОбьект);
        Выборка = Запрос.Выполнить().Выбрать();
        Пока Выборка.Следующий() Цикл
        Значение = Найти(Выборка.ИмяСотр," ");
        КонецЦикла;
        
     Возврат Значение;
КонецФункции

Но выдает ошибку:
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата'
по причине:
{ВнешнийОтчет.Отчет.МодульОбъекта(11)}: Ошибка при вызове метода контекста (Вывести)

по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка "ОбщийМодуль1.ВычислитьНомерСимвола"

1. Может я что-то делаю не так?
2. Возможно ли вообще такое с внешними источниками данных в конструкторе запроса?
12 karabas11
 
10.03.15
18:18
ADO вместо внешнего источника не пойдет?
Если можно, тогда если это MSSQL, то там есть куча строковых функций типа Charindex
13 ShoGUN
 
10.03.15
21:15
(11) Модуль должен быть глобальным(!)
14 Andrey2C
 
11.03.15
08:41
(13) Сделал глобальным. Отрабатывает точно также(
15 shuhard
 
11.03.15
08:44
(11)[ Возможно ли вообще такое с внешними источниками данных в конструкторе запроса?]
каким боком инструмент -  конструктор запроса соотноситься с СКД ?
AdBlock убивает бесплатный контент. 1Сергей