Если хочется упросить парсинг строк, то можно воспользоваться этой функцией
Как-то потребовалось мне написать функцию разбора URL (она опубликована тут) и сразу захотелось упросить себе жизнь. В результате несколькоих итераций и родилась данная функция
Функция РаспарситьСтроку(Строка,
Знач ПозицияСЛева = Неопределено, ПодстрокаСЛева = Неопределено, ВключаетПодстрокуСЛева = Ложь,
Знач ПозицияСПрава = Неопределено, ПодстрокаСПрава = Неопределено, ВключаетПодстрокуСПрава = Ложь)
РезультатПарсинга = Новый Структура;
РезультатПарсинга.Вставить("Успех", Ложь);
РезультатПарсинга.Вставить("ВырезНачало", 0);
РезультатПарсинга.Вставить("ВырезКонец", 0);
РезультатПарсинга.Вставить("Вырез", "");
Если ПозицияСЛева = Неопределено и ПодстрокаСЛева = Неопределено и
ПозицияСПрава = Неопределено и ПодстрокаСПрава = Неопределено Тогда
Возврат РезультатПарсинга;
КонецЕсли;
// Ищем начальную позицию
ПозицияСЛеваДляПоиска = Неопределено;
Если ПозицияСЛева = Неопределено и ПодстрокаСЛева = Неопределено Тогда
ПозицияСЛева = 1; // Критериев начала выреза не задано, значит берем начало строки
ИначеЕсли ПодстрокаСЛева <> Неопределено Тогда
ПозицияСЛева = СтрНайти(Строка, ПодстрокаСЛева,, ?(ПозицияСЛева = Неопределено, 1, ПозицияСЛева));
ПозицияСЛеваДляПоиска = ПозицияСЛева + СтрДлина(ПодстрокаСЛева);
Если ПозицияСЛева = 0 Тогда
Возврат РезультатПарсинга;
ИначеЕсли Не ВключаетПодстрокуСЛева Тогда
ПозицияСЛева = ПозицияСЛева + СтрДлина(ПодстрокаСЛева);
КонецЕсли;
КонецЕсли;
// Ищем конечную позицию
Если ПозицияСПрава = Неопределено и ПодстрокаСПрава = Неопределено Тогда
ПозицияСПрава = СтрДлина(Строка) + 1; // Критериев окончания выреза не задано, значит берем до конца строки
ИначеЕсли ПодстрокаСПрава <> Неопределено Тогда
НачальнаяПозицияПоиска = ?(ПозицияСЛеваДляПоиска = Неопределено, ПозицияСЛева, ПозицияСЛеваДляПоиска);
Если ПозицияСПрава <> Неопределено и ПозицияСПрава > НачальнаяПозицияПоиска Тогда
НачальнаяПозицияПоиска = ПозицияСПрава;
КонецЕсли;
ПозицияСПрава = СтрНайти(Строка, ПодстрокаСПрава,, НачальнаяПозицияПоиска);
Если ПозицияСПрава = 0 Тогда
Возврат РезультатПарсинга;
ИначеЕсли ВключаетПодстрокуСПрава Тогда
ПозицияСПрава = ПозицияСПрава + СтрДлина(ПодстрокаСПрава);
КонецЕсли;
КонецЕсли;
РезультатПарсинга.Успех = Истина;
РезультатПарсинга.ВырезНачало = ПозицияСЛева;
РезультатПарсинга.ВырезКонец = ПозицияСПрава;
РезультатПарсинга.Вырез = Сред(Строка, ПозицияСЛева, ПозицияСПрава - ПозицияСЛева);
Возврат РезультатПарсинга;
КонецФункции
Строка - Подаем ей на вход исходную строку, после задаем параметры выреза из строки:
ПозицияСЛева - Начиная с какого смивола с левой стороны вырезать, может сочетаться со следующим параметром, а так-же может быть опущен, тогда берется начало строки
ПодстрокаСЛева - Подстрока поиска начала выреза, если указан ещё и параметр ПозицияСЛева, то ищет начиная от указанной позиции. Может быть опущен.
Внимание! Если ПозицияСЛева и ПодстрокаСЛева опущены - берется начало строки
ВключаетПодстрокуСЛева - В случае поиска левой позиции по подстроке, указывает на необходимость включать искомое значение в возвращаемое значение
ПозицияСПрава - До какого символа с правой стороны вырезать, может сочетаться со следующим параметром. Может быть опущен
ПодстрокаСПрава - Подстрока поиска окончания выреза, если указан ещё и параметр ПозицияСПрава, то ищет начиная с указанной позиции. Может быть опущен.
Внимание! Если ПозицияСПрава и ПодстрокаСПрава опущены, то берется значение до конца строки
ВключаетПодстрокуСПрава - В случае поиска правой позиции по подстроке, указывает на необходимость включать искомое значение в возвращаемое значение
Функция возвращает структуру со следующими свойствами:
Успех - Удалось ли получить значение по переданным параметрам
ВырезНачало - Позиция исходной строки, с которой произведен вырез
ВырезКонец - Позиция исходной строки, до которой произведен вырез
Вырез - Собственно вырезанное значение по заданным параметрам
Пример использования регулярных выражений RegExp в 1С
УпрощенныйИнтерфейсНастройкиПравДоступа (БСП)
Строка в дату по форматной строке
ФорматированнаяСтрокаИзHTML (БСП)
Определение длины строки в запросе