From 773e0d3ceeecb016782fa942b4a58719f7cb02ff Mon Sep 17 00:00:00 2001 From: levkin Date: Fri, 8 Jan 2021 17:41:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D0=BE?= =?UTF-8?q?=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=BE=D0=B4=D0=BE=D0=B2=20=D0=B2=20=D0=BC=D0=BE=D0=B4=D1=83?= =?UTF-8?q?=D0=BB=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Module.bsl" | 142 ++++++++++++++---- 1 file changed, 113 insertions(+), 29 deletions(-) diff --git "a/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/src/CommonModules/\320\240\320\222_\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/src/CommonModules/\320\240\320\222_\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" index a2a0caf..1a1265f 100644 --- "a/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/src/CommonModules/\320\240\320\222_\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217/src/CommonModules/\320\240\320\222_\320\240\320\265\320\263\321\203\320\273\321\217\321\200\320\275\321\213\320\265\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" @@ -46,7 +46,7 @@ #Область СинхронныеМетоды // Используются синхронные вызовы -// Возвращает объект компоненты работы с буфером обмена. При необходимости происходит подключение и установка компоненты +// Возвращает объект компоненты работы с регулярными выражениями. При необходимости происходит подключение и установка компоненты // // Возвращаемое значение: // ВнешняяКомпонентаОбъект - Объект внешней компоненты работы с регулярными выражениями @@ -59,17 +59,17 @@ Возврат Компонента; Исключение ТекстОшибки = НСтр( - "ru = 'Не удалось подключить внешнюю компоненту для работы с регулярными выражениями. Подробности в журнале регистрации.'"); + "ru = 'Не удалось подключить внешнюю компоненту для работы с регулярными выражениями: '"); Сообщить(ТекстОшибки + ОписаниеОшибки()); Возврат Неопределено; КонецПопытки; КонецФункции -// Возвращает версию компоненты работы с буфером обмена +// Возвращает версию компоненты работы с регулярными выражениями // // Параметры: -// ОбъектКомпоненты - ВнешняяКомпонентаОбъект - Объект внешней компоненты работы с буфером обмена (Необязательный) +// ОбъектКомпоненты - ВнешняяКомпонентаОбъект - Объект внешней компоненты работы с регулярными выражениями (Необязательный) // Возвращаемое значение: // Строка - Версия используемой компоненты Функция ВерсияКомпоненты(ОбъектКомпоненты = Неопределено) Экспорт @@ -87,13 +87,18 @@ КонецФункции -//Метод выполняет поиск в переданном тексте по переданному регулярному выражению. -//Результатом выполнения метода будет массив результатов поиска. Каждый элемент массива - найденная подгруппа поиска. -//Если подгрупп нет, то массив будет содержать один элемент - найденную строку. -//Возвращаемое значение: Ничего не возвращает. -//Для того, чтобы получить результаты выполнения метода (массив результатов), необходимо выполнить метод Следующий/Next(), -//и после этого, в свойстве ТекущееЗначение/CurrentValue будет доступно значение текущей подгруппы результата выполнения -//(текущий элемент массива результатов). Идея похожа на обход результата запроса. +// Описание +// Метод выполняет поиск в переданном тексте по переданному регулярному выражению +// Параметры: +// СтрокаДляАнализа - Строка - Строка в которой необходимо выполнить поиск по регуляному выражению +// РегулярноеВыражение - Строка - Регулярное вырашение для выполнения поиска +// ИерархическийОбходРезультатов - Булево - Если установлено в Истина, то будет выполнен поиск с учетом подгрупп, в противном случае будет выведено единым списком(Необязательный) +// ВсеСовпадения - Булево - Если установлено в Истина, то поиск будет выполняться по всем совпадениям, а не только по первому.(Необязательный) +// ИгнорироватьРегистр - Булево - Если установлено в Истина, то поиск будет осуществляться без учета регистра (Необязательный) +// ОбъектКомпоненты - ВнешняяКомпонентаОбъект - Объект внешней компоненты работы с регулярными выражениями (Необязательный) +// Возвращаемое значение: +// Соответствие - В ключах соответствия находятся найденные совпадения. +// В значениях ключей массив, содержащий найденные подгруппы, если выполняется иерархический поиск, и неопределено, если поиск неиерархический. Функция НайтиСовпадения(СтрокаДляАнализа, РегулярноеВыражение, ИерархическийОбходРезультатов = Ложь, ВсеСовпадения = Ложь, ИгнорироватьРегистр = Ложь, ОбъектКомпоненты = Неопределено) Экспорт @@ -129,7 +134,16 @@ Возврат Совпадения; КонецФункции -//Возвращает количество результатов поиска, после выполнения метода НайтиСовпадения / Matches +// Описание +// Возвращает количество результатов поиска +// Параметры: +// СтрокаДляАнализа - Строка - Строка в которой необходимо выполнить поиск по регуляному выражению +// РегулярноеВыражение - Строка - Регулярное вырашение для выполнения поиска +// ВсеСовпадения - Булево - Если установлено в Истина, то поиск будет выполняться по всем совпадениям, а не только по первому.(Необязательный) +// ИгнорироватьРегистр - Булево - сли установлено в Истина, то поиск будет осуществляться без учета регистра (Необязательный) +// ОбъектКомпоненты - ВнешняяКомпонентаОбъект - Объект внешней компоненты работы с регулярными выражениями (Необязательный) +// Возвращаемое значение: +// Число - Количество совпадений Функция КоличествоСовпадений(СтрокаДляАнализа, РегулярноеВыражение, ВсеСовпадения = Ложь, ИгнорироватьРегистр = Ложь, ОбъектКомпоненты = Неопределено) Экспорт ОчищатьКомпоненту=ОбъектКомпоненты = Неопределено; @@ -137,7 +151,7 @@ ОбъектКомпоненты=ОбъектКомпонентыРегулярныхВыражений(ОбъектКомпоненты); ОбъектКомпоненты.ВсеСовпадения=ВсеСовпадения; ОбъектКомпоненты.ИгнорироватьРегистр=ИгнорироватьРегистр; - + ОбъектКомпоненты.НайтиСовпадения(СтрокаДляАнализа, РегулярноеВыражение); КоличествоСовпадений=ОбъектКомпоненты.Количество(); @@ -153,9 +167,16 @@ Возврат ОбъектКомпоненты.ОписаниеОшибки; КонецФункции -//Метод Совпадает/IsMatch(<Текст для анализа>, <Регулярное выражение>) -//Делает проверку на соответствие текста регулярному выражению. -//Возвращаемое значение: Булево. Возвращает значение Истина если текст соответствует регулярному выражению. +// Описание +// Делает проверку на соответствие текста регулярному выражению. +// Параметры: +// СтрокаДляАнализа - Строка - Строка в которой необходимо выполнить поиск по регуляному выражению +// РегулярноеВыражение - Строка - Регулярное вырашение для выполнения поиска +// ВсеСовпадения - Булево - Если установлено в Истина, то поиск будет выполняться по всем совпадениям, а не только по первому.(Необязательный) +// ИгнорироватьРегистр - Булево - Если установлено в Истина, то поиск будет осуществляться без учета регистра (Необязательный) +// ОбъектКомпоненты - ВнешняяКомпонентаОбъект - Объект внешней компоненты работы с регулярными выражениями (Необязательный) +// Возвращаемое значение: +// Булево - Возвращает значение Истина если текст соответствует регулярному выражению. Функция Совпадает(СтрокаДляАнализа, РегулярноеВыражение, ВсеСовпадения = Ложь, ИгнорироватьРегистр = Ложь, ОбъектКомпоненты = Неопределено) Экспорт ОчищатьКомпоненту=ОбъектКомпоненты = Неопределено; @@ -174,10 +195,18 @@ КонецФункции -//Метод Заменить/Replace(<Текст для анализа>, <Регулярное выражение>, <Значение для замены>) -//Заменяет в переданном тексте часть, соответствующую регулярному выражению, значением, переданным третьим параметром. -//Возвращаемое значение: Строка, результат замены. -Функция Заменить(ТекстДляАнализа, РегулярноеВыражение, ЗначениеДляЗамены, ВсеСовпадения = Ложь, +// Описание +// Заменяет в переданном тексте часть, соответствующую регулярному выражению +// Параметры: +// ТекстДляАнализа - Строка - Строка в которой необходимо выполнить поиск по регуляному выражению +// РегулярноеВыражение - Строка - Регулярное вырашение для выполнения поиска +// ЗначениеДляЗамены - Строка - Строка, на которую необходимо заменить найденные совпадения +// ВсеСовпадения - Булево - Если установлено в Истина, то поиск будет выполняться по всем совпадениям, а не только по первому.(Необязательный) +// ИгнорироватьРегистр - Булево - Если установлено в Истина, то поиск будет осуществляться без учета регистра (Необязательный) +// ОбъектКомпоненты - ВнешняяКомпонентаОбъект - Объект внешней компоненты работы с регулярными выражениями (Необязательный) +// Возвращаемое значение: +// Строка - результат замены. +Функция Заменить(СтрокаДляАнализа, РегулярноеВыражение, ЗначениеДляЗамены, ВсеСовпадения = Ложь, ИгнорироватьРегистр = Ложь, ОбъектКомпоненты = Неопределено) Экспорт ОчищатьКомпоненту=ОбъектКомпоненты = Неопределено; @@ -185,7 +214,7 @@ ОбъектКомпоненты.ВсеСовпадения=ВсеСовпадения; ОбъектКомпоненты.ИгнорироватьРегистр=ИгнорироватьРегистр; - Результат= ОбъектКомпоненты.Заменить(ТекстДляАнализа, РегулярноеВыражение, ЗначениеДляЗамены); + Результат= ОбъектКомпоненты.Заменить(СтрокаДляАнализа, РегулярноеВыражение, ЗначениеДляЗамены); Если ОчищатьКомпоненту Тогда ОбъектКомпоненты=Неопределено; @@ -208,11 +237,12 @@ НачатьИнициализациюКомпоненты(ОписаниеОповещения, Истина); КонецПроцедуры -// Начинает получение версии используемой компоненты работы с буфером обмена +// Начинает получение версии используемой компоненты работы с регулярными выражениями // // Параметры: // ОписаниеОповещения - ОписаниеОповещения - Содержит описание процедуры, которая будет вызвана после завершения со следующими параметрами: // <ВерсияКомпоненты> – Версия используемой компоненты, Тип: Строка. Неопределено- если не удалось подключить компоненту +// <Параметры> - Параметры вызова метода компоненты. // <ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения. // ОбъектКомпоненты - ВнешняяКомпонентаОбъект - Объект компоненты работы с регулярными выражениями (Необязательный) Процедура НачатьПолучениеВерсииКомпоненты(ОписаниеОповещения, ОбъектКомпоненты = Неопределено) Экспорт @@ -228,6 +258,19 @@ КонецЕсли; КонецПроцедуры +// Описание +// начинает поиск в переданном тексте по переданному регулярному выражению +// Параметры: +// ОписаниеОповещения - ОписаниеОповещения - Содержит описание процедуры, которая будет вызвана после завершения со следующими параметрами: +// <НайденныеСоответствия> – Соответствие - В ключах соответствия находятся найденные совпадения. +// В значениях ключей массив, содержащий найденные подгруппы, если выполняется иерархический поиск, и неопределено, если поиск неиерархический. +// <ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения. +// СтрокаДляАнализа - Строка - Строка в которой необходимо выполнить поиск по регуляному выражению +// РегулярноеВыражение - Строка - Регулярное вырашение для выполнения поиска +// ИерархическийОбходРезультатов - Булево - Если установлено в Истина, то будет выполнен поиск с учетом подгрупп, в противном случае будет выведено единым списком(Необязательный) +// ВсеСовпадения - Булево - Если установлено в Истина, то поиск будет выполняться по всем совпадениям, а не только по первому.(Необязательный) +// ИгнорироватьРегистр - Булево - Если установлено в Истина, то поиск будет осуществляться без учета регистра (Необязательный) +// ОбъектКомпоненты - ВнешняяКомпонентаОбъект - Объект внешней компоненты работы с регулярными выражениями (Необязательный) Процедура НачатьНахождениеСовпадений(ОписаниеОповещения, СтрокаДляАнализа, РегулярноеВыражение, ИерархическийОбходРезультатов = Ложь, ВсеСовпадения = Ложь, ИгнорироватьРегистр = Ложь, ОбъектКомпоненты = Неопределено) Экспорт @@ -250,7 +293,19 @@ КонецЕсли; КонецПроцедуры -//Возвращает количество результатов поиска, после выполнения метода НайтиСовпадения / Matches +// Описание +// Начинает получение количество совпадений в строке по регулярному выражению +// Параметры: +// ОписаниеОповещения - ОписаниеОповещения - Содержит описание процедуры, которая будет вызвана после завершения со следующими параметрами: +// <Количество совпадений> – Число - Количество совпадений в строке регулярному выражению +// <Параметры> - Массив - Массив параметров вызова метода компоненты. +// <ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения. +// СтрокаДляАнализа - Строка - Строка в которой необходимо выполнить поиск по регуляному выражению +// РегулярноеВыражение - Строка - Регулярное вырашение для выполнения поиска +// ВсеСовпадения - Булево - Если установлено в Истина, то поиск будет выполняться по всем совпадениям, а не только по первому.(Необязательный) +// ИгнорироватьРегистр - Булево - Если установлено в Истина, то поиск будет осуществляться без учета регистра (Необязательный) +// ИерархическийОбходРезультатов - Булево - Если установлено в Истина, то будет выполнен поиск с учетом подгрупп, в противном случае будет выведено единым списком(Необязательный) +// ОбъектКомпоненты - ВнешняяКомпонентаОбъект - Объект внешней компоненты работы с регулярными выражениями (Необязательный) Процедура НачатьПолучениеКоличестваСовпадений(ОписаниеОповещения, СтрокаДляАнализа, РегулярноеВыражение, ВсеСовпадения = Ложь, ИгнорироватьРегистр = Ложь, ИерархическийОбходРезультатов = Ложь, ОбъектКомпоненты = Неопределено) Экспорт @@ -273,20 +328,37 @@ КонецЕсли; КонецПроцедуры +// Описание +// Начинает получение ошибки при выполнении метода компоненты +// Параметры: +// ОписаниеОповещения - ОписаниеОповещения - Содержит описание процедуры, которая будет вызвана после завершения со следующими параметрами: +// <ОписаниеОшибки> – Строка - Ошибка зафиксированная компонентой +// <Параметры> - Массив - Массив параметров вызова метода компоненты. +// <ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения. +// ОбъектКомпоненты - ВнешняяКомпонентаОбъект - Объект внешней компоненты работы с регулярными выражениями (Необязательный) Процедура НачатьПолучениеОписанияОшибкиКомпоненты(ОписаниеОповещения, ОбъектКомпоненты) Экспорт ОбъектКомпоненты.НачатьПолучениеОписаниеОшибки(ОписаниеОповещения); КонецПроцедуры -//Возвращает количество результатов поиска, после выполнения метода НайтиСовпадения / Matches +// Описание +// Начинает выполнение проверки на соответствие текста регулярному выражению. +// Параметры: +// ОписаниеОповещения - ОписаниеОповещения - Содержит описание процедуры, которая будет вызвана после завершения со следующими параметрами: +// <Соответствует> – Булево - Признак соответствия строки регулярному выражению +// <Параметры> - Массив - Массив параметров вызова метода компоненты. +// <ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения. +// СтрокаДляАнализа - Строка - Строка в которой необходимо выполнить поиск по регуляному выражению +// РегулярноеВыражение - Строка - Регулярное вырашение для выполнения поиска +// ВсеСовпадения - Булево - Если установлено в Истина, то поиск будет выполняться по всем совпадениям, а не только по первому.(Необязательный) +// ИгнорироватьРегистр - Булево - Если установлено в Истина, то поиск будет осуществляться без учета регистра (Необязательный) +// ОбъектКомпоненты - ВнешняяКомпонентаОбъект - Объект внешней компоненты работы с регулярными выражениями (Необязательный) Процедура НачатьПолучениеПризнакаСовпадает(ОписаниеОповещения, СтрокаДляАнализа, РегулярноеВыражение, - ВсеСовпадения = Ложь, ИгнорироватьРегистр = Ложь, ИерархическийОбходРезультатов = Ложь, - ОбъектКомпоненты = Неопределено) Экспорт + ВсеСовпадения = Ложь, ИгнорироватьРегистр = Ложь, ОбъектКомпоненты = Неопределено) Экспорт ДопПараметры=Новый Структура; ДопПараметры.Вставить("ОписаниеОповещенияОЗавершении", ОписаниеОповещения); ДопПараметры.Вставить("СтрокаДляАнализа", СтрокаДляАнализа); ДопПараметры.Вставить("РегулярноеВыражение", РегулярноеВыражение); - ДопПараметры.Вставить("ИерархическийОбходРезультатов", ИерархическийОбходРезультатов); ДопПараметры.Вставить("ВсеСовпадения", ВсеСовпадения); ДопПараметры.Вставить("ИгнорироватьРегистр", ИгнорироватьРегистр); @@ -301,6 +373,19 @@ КонецЕсли; КонецПроцедуры +// Описание +// Начинает выполнение замены в переданном тексте часть, соответствующую регулярному выражению +// Параметры: +// ОписаниеОповещения - ОписаниеОповещения - Содержит описание процедуры, которая будет вызвана после завершения со следующими параметрами: +// <РезультатЗамены> – Строка - Строка, получившаяся в результате замены +// <Параметры> - Массив - Массив параметров вызова метода компоненты. +// <ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения. +// СтрокаДляАнализа - Строка - Строка в которой необходимо выполнить поиск по регуляному выражению +// РегулярноеВыражение - Строка - Регулярное вырашение для выполнения поиска +// ЗначениеДляЗамены - Строка - Строка, на которую необходимо заменить найденные совпадения +// ВсеСовпадения - Булево - Если установлено в Истина, то поиск будет выполняться по всем совпадениям, а не только по первому.(Необязательный) +// ИгнорироватьРегистр - Булево - Если установлено в Истина, то поиск будет осуществляться без учета регистра (Необязательный) +// ОбъектКомпоненты - ВнешняяКомпонентаОбъект - Объект внешней компоненты работы с регулярными выражениями (Необязательный) Процедура НачатьЗамену(ОписаниеОповещения, СтрокаДляАнализа, РегулярноеВыражение, ЗначениеДляЗамены, ВсеСовпадения = Ложь, ИгнорироватьРегистр = Ложь, ОбъектКомпоненты = Неопределено) Экспорт @@ -519,8 +604,7 @@ Иначе НачатьПолучениеПризнакаСовпадает(ДополнительныеПараметры.ОписаниеОповещенияОЗавершении, ДополнительныеПараметры.СтрокаДляАнализа, ДополнительныеПараметры.РегулярноеВыражение, - ДополнительныеПараметры.ВсеСовпадения, ДополнительныеПараметры.ИгнорироватьРегистр, - ДополнительныеПараметры.ИерархическийОбходРезультатов, Результат); + ДополнительныеПараметры.ВсеСовпадения, ДополнительныеПараметры.ИгнорироватьРегистр, Результат); КонецЕсли; КонецПроцедуры