Имя: Пароль:
1C
1С v8
Выбрать подстроку по шаблону в запросе.
0 farion5
 
11.07.16
20:34
Есть ли способ выбрать из строки оформленной по шаблону КонтрагентНаименование#НомерДоговора#ДатаДоговора выбрать НомерДоговора и ДатаДоговора в запросе?

Например: "ООО" Вектор#в3-п001#26.05.2016 00:00:00 получить в3-п001 и  26.05.2016 00:00:00
1 hhhh
 
11.07.16
21:03
(0) нет такого способа
2 jsmith
 
11.07.16
21:04
Есть

ВЫБРАТЬ
    "_" КАК Симв,
    1 КАК КолСимв
ПОМЕСТИТЬ тзКоличествоСимволов9
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    "__",
    2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    "___",
    3
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    "____",
    4
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    "_____",
    5
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    "______",
    6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    "_______",
    7
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    "________",
    8
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    "_________",
    9
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
    "",
    0
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    тзКоличествоСимволов9_Лев.Симв + тзКоличествоСимволов9_Лев.Симв + тзКоличествоСимволов9_Лев.Симв + тзКоличествоСимволов9_Лев.Симв + тзКоличествоСимволов9_Лев.Симв + тзКоличествоСимволов9_Лев.Симв + тзКоличествоСимволов9_Лев.Симв + тзКоличествоСимволов9_Лев.Симв + тзКоличествоСимволов9_Лев.Симв + тзКоличествоСимволов9_Лев.Симв + тзКоличествоСимволов9_Прав.Симв КАК Симв,
    тзКоличествоСимволов9_Лев.КолСимв * 10 + тзКоличествоСимволов9_Прав.КолСимв КАК КолСимв
ПОМЕСТИТЬ тзКоличествоСимволов100
ИЗ
    тзКоличествоСимволов9 КАК тзКоличествоСимволов9_Лев,
    тзКоличествоСимволов9 КАК тзКоличествоСимволов9_Прав
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ Различные
    Контрагенты.Ссылка,                                                                                                                                                                                
    Выразить(ПОДСТРОКА(Контрагенты.Наименование, КоличествоСимволовДоОткрытия.КолСимв+2, КоличествоСимволовДоЗакрытия.КолСимв-КоличествоСимволовДоОткрытия.КолСимв-1) как строка(100)) КАК НомерДоговора,
    Выразить(ПОДСТРОКА(Контрагенты.Наименование, КоличествоСимволовДоЗакрытия.КолСимв+2, ДлинаСтроки.КолСимв-КоличествоСимволовДоЗакрытия.КолСимв+2) как строка(100)) КАК ДатаДоговора    
ИЗ
    Справочник.Контрагенты КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ тзКоличествоСимволов100 КАК КоличествоСимволовДоОткрытия
        ПО (Контрагенты.Наименование ПОДОБНО КоличествоСимволовДоОткрытия.Симв + "#%")
        ЛЕВОЕ СОЕДИНЕНИЕ тзКоличествоСимволов100 КАК КоличествоСимволовДоЗакрытия
        ПО (Контрагенты.Наименование ПОДОБНО КоличествоСимволовДоЗакрытия.Симв + "#%")
        ЛЕВОЕ СОЕДИНЕНИЕ тзКоличествоСимволов100 КАК ДлинаСтроки
        ПО (Контрагенты.Наименование ПОДОБНО ДлинаСтроки.Симв)        
ГДЕ
    Контрагенты.Наименование ПОДОБНО "%#%#%" И НЕ Выразить(ПОДСТРОКА(Контрагенты.Наименование, КоличествоСимволовДоОткрытия.КолСимв+2, КоличествоСимволовДоЗакрытия.КолСимв-КоличествоСимволовДоОткрытия.КолСимв-1) как строка(100)) = "" И НЕ Выразить(ПОДСТРОКА(Контрагенты.Наименование, КоличествоСимволовДоЗакрытия.КолСимв+2, ДлинаСтроки.КолСимв-КоличествоСимволовДоЗакрытия.КолСимв+2) как строка(100)) = ""
3 hhhh
 
11.07.16
21:31
может как-то так

       ЛЕВОЕ СОЕДИНЕНИЕ тзКоличествоСимволов100 КАК КоличествоСимволовДоОткрытия
        ПО ПОДСТРОКА(Контрагенты.Наименование,  КоличествоСимволовДоОткрытия.КолСимв+1, 1) = ""#""

а то подобно - очень тормозная штука
4 jsmith
 
11.07.16
21:36
А ты прав.
ИЗ
    Справочник.Контрагенты КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ тзКоличествоСимволов100 КАК КоличествоСимволовДоОткрытия
        ПО ПОДСТРОКА(Контрагенты.Наименование,  КоличествоСимволовДоОткрытия.КолСимв+1, 1) = "#"
        ЛЕВОЕ СОЕДИНЕНИЕ тзКоличествоСимволов100 КАК КоличествоСимволовДоЗакрытия
        ПО ПОДСТРОКА(Контрагенты.Наименование,  КоличествоСимволовДоЗакрытия.КолСимв+1, 1) = "#"
        ЛЕВОЕ СОЕДИНЕНИЕ тзКоличествоСимволов100 КАК ДлинаСтроки
        ПО (Контрагенты.Наименование ПОДОБНО ДлинаСтроки.Симв)
5 Tateossian
 
11.07.16
21:51
(3) То есть, быстрее будет итеративно в цикле парсить текст?
6 youalex
 
11.07.16
21:55
(0) изначально какая задача стоит?
7 Fram
 
11.07.16
21:56
(5) по крайней начать лучше с этого, а там уже по смотреть устраивает не устривает скорость
8 Fram
 
11.07.16
21:56
*по крайней мере
9 Tateossian
 
11.07.16
21:59
(8) Мне кажется, надо всегда стремиться к самому оптимальному варианту, а то вырастает один эсник тупым и ленивым, мыслящим "И так сойдет", а потом везде будет сквозить эта концепция. Априори конечно скорость устроит.
10 jsmith
 
11.07.16
22:02
По чесноку надо в цикле обрабатывать