Функции 1С ВРег(Строка) и 1С НРег(Строка) приводит все символы в строке к верхнему (АБВГД) или нижнему (абвгд) регистру.
Функция 1С ТРег(Строка) приводит все символы в строке к нижнему (абвгд) регистру, а первую букву в каждом слове к верхнему (АБВГД).
Например:
- Выполняем 1С ВРег(«ПРИвет»)
- 1С возвращает «ПРИВЕТ»
- Выполняем 1С НРег(«приВЕТ»)
- 1С возвращает «привет»
- Выполняем 1С ТРег(«СЕРГЕЕВ-лопатин андрей с»)
- 1С возвращает «Сергеев-Лопатин Андрей С»
Функция 1С ТРег() используется при обработке полей, где пользователь должен ввести ФИО. Например в обработчике ПриИзменении у текстового поля на форме, с именем реквизита формы ФиоКонтактногоЛица:
ФиоКонтактногоЛица = ТРег(СокрЛП(ФиоКонтактногоЛица));
Функции 1С ВРег() и 1С НРег() используются чаще всего в условиях (сравнении) данных, введенных пользователем с шаблоном. Например – во многих типовых конфигурациях есть справочник стран мира, а в нем элемент «РОССИЯ». При работе документа нам известно, что если выбрана «РОССИЯ», то поле ГТД «не видно».
Если мы напишем:
Если СтранаСсылка.Наименование = "Россия" Тогда
То эта строка может не сработать. Программируя, мы не знаем как точно будет называться элемент — «Россия», «россия» или «РОССИЯ». При сравнении же учитывается регистр букв.
Поэтому при сравнении лучше использовать 1С ВРег:
Если ВРЕГ(СокрЛП(СтранаСсылка.Наименование)) = "РОССИЯ" Тогда
Тогда мы точно будем уверены, что как бы не ввел пользователь – сравнение сработает.
На примере нашего анализатор текста сделаем с помощью 1С ВРег, 1С НРег и 1С ТРег – «нормализации» ФИО – первая буква в фамилии, имени и отчестве с большой, а остальные с маленькой, а к сокращениям добавим точку (про анализатор текста см. выше «Функции работы со строками 1С»). Примерно также работает 1С ТРег(), кроме добавления точки к сокращениям.
Допустим:
- что нам на «входе» подается строка, содержащая ФИО в «неизвестном нам виде, как ввел пользователь»
- ФИО может быть как полная фамилия, а имя и отчество в сокращенном, так и полностью
- регистр букв неизвестен
Пример использования созданных нами функций:
НормализацияФИО("ПЕТРОВ-немерович сергей александрович");
НормализацияФИО("бегемотов с а");
Сообщения от 1С в результате выполнения этого кода:
ФИО было: ПЕТРОВ-немерович сергей александрович
ФИО стало: Петров-Немерович Сергей Александрович
ФИО было: бегемотов с а
ФИО стало: Бегемотов С. А.
Обратите внимание на следующие использованные конструкции.
Момент 1:
НормализированныйТекст = НРЕГ(СтрЗаменить(СокрЛП(ФИО), ".", ""));
Мы могли написать это так:
НормализированныйТекст = СокрЛП(ФИО);
НормализированныйТекст = СтрЗаменить(НормализированныйТекст, ".", "");
НормализированныйТекст = НРЕГ(НормализированныйТекст);
Но вызов функции можно «вкладывать» друг в друга, для экономии текста программы.
Момент 2:
РазрешенныйСимвол = Найти(РазрешенныеСимволы, Буква);
Если не РазрешенныйСимвол Тогда
Мы могли написать это так:
Позиция = Найти(РазрешенныеСимволы, Буква);
Если Позиция = 0 Тогда
Но значения «булево» (истина, ложь) можно выразить в числах (ложь – 0, истина – остальное), и наоборот. Чем мы и воспользовались, получив более читаемый текст.
Момент 3:
Результат = Результат + ?(ЗапрещенныйСимвол, ВРЕГ(НормализированныйТекст), НормализированныйТекст) + ?(ДлинаСлова = 0, ".", "");
Мы могли написать это так:
Если ЗапрещенныйСимвол Тогда
Результат = Результат + ВРЕГ(НормализованныйТекст);
Иначе
Результат = Результат + НормализованныйТекст;
КонецЕсли;
Если ДлинаСлова = 0 Тогда
Результат = Результат + ".";
КонецЕсли;
Но оператор ?(условие, что делать если да, что делать если нет) позволяет прописывать условные действия в более компактном виде.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.