Регулярные выражения. Только буквы.

1. user1345957 18.05.20 18:20 Сейчас в теме
Я задаю через функцию проверку поля Фамилия (это реквизит справочника) на то чтобы оно было не пустым и содержало бы только буквы. Но мне 1с сообщает что фактических параметров слишком много.

Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если ПустаяСтрока(Объект.Фамилия) Тогда
	СообщитьПользователю("Объект.Фамилия", "Заполните поле Фамилия", Отказ)
ИначеЕсли ПроверитьФамилию(Отказ, Объект.Фамилия) = Ложь Тогда
	Сообщить("ерундааа!");
	Отказ = Истина;

КонецЕсли;


И функция (пока тестовая, так как я пытаюсь разобраться) :

&НаКлиенте
Функция ПроверитьФамилию()
	
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Global = Истина;
RegExp.IgnoreCase = Истина;
ИсходнаяСтрока = объект.Фамилия; //ПолеФамилия - строка
RegExp.Pattern = ""+ИсходнаяСтрока+"" + "[а-яА-Я]";
Matches = RegExp.Execute(ИсходнаяСтрока);
Результат = Matches.Count;	
	
КонецФункции // ПроверитьПолеФамилия()
Показать


Сообщение об ошибках:

{Справочник.Пользователи.Форма.Регистрация.Форма(31,28)}: Слишком много фактических параметров (ПроверитьФамилию)
ИначеЕсли ПроверитьФамилию(<<?>>Объект.Фамилия) = Ложь Тогда (Проверка: Тонкий клиент)
По теме из базы знаний
Найденные решения
10. Anastasia_ 18.05.20 19:02 Сейчас в теме
(8) Посмотрите мою. логику. Если Вам так подойдёт. Что я исправила -
RegExp.Pattern = ""+ИсходнаяСтрока+"" + "[а-яА-Я]" на
RegExp.Pattern = "[а-яА-Я]";
По логике, Вам надо проверить на соответствие буквам. Значит, мы находит, сколько букв и сколько символов. Если нет равенства, то есть какие-то дополнительные символы - знаки, цифры и т.д.
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Anastasia_ 18.05.20 18:24 Сейчас в теме
У Вас функция определена без параметров:
&НаКлиенте
Функция ПроверитьФамилию()


А вызываете с двумя параметрами -

ИначеЕсли ПроверитьФамилию(Отказ, Объект.Фамилия) = Ложь Тогда
user1345957; +1 Ответить
3. user1345957 18.05.20 18:29 Сейчас в теме
(2)эти же самые параметры должны быть и здесь ? Тип чтобы вышло так.

&НаКлиенте
Функция ПроверитьФамилию()


Поправил, но не срабатывает.
&НаКлиенте
Функция ПроверитьФамилию(Отказ, Фамилия)
	
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Global = Истина;
RegExp.IgnoreCase = Истина;
ИсходнаяСтрока = объект.Фамилия; //ПолеНаименование - строка
RegExp.Pattern = ""+ИсходнаяСтрока+"" + "[а-яА-Я]";
Matches = RegExp.Execute(ИсходнаяСтрока);
Результат = Matches.Count;	
	
КонецФункции // ПроверитьПолеФамилия()
Показать
4. Anastasia_ 18.05.20 18:42 Сейчас в теме
(3) В функции никак не обрабатывается
Отказ
. Я не знакома с RegExp, но чисто по логике кода, я думаю, надо определить функцию от одного параметра
Объект
:
&НаКлиенте
Функция ПроверитьФамилию(Объект)


И вызов делать
ИначеЕсли ПроверитьФамилию(Объект) = Ложь
5. Anastasia_ 18.05.20 18:44 Сейчас в теме
(4) Это в первом приближении. Далее что делает Matches.Count? Он возвращает число?
7. user1345957 18.05.20 18:55 Сейчас в теме
(5)Я щас как ёжик в тумане. Туплю чутка поэтому и код постоянно меняется, пока я всё доконца не пойму.
Сейчас я исправил код и пока что если в реквизите что угодно, но не буквы, то выдается ошибка.
Не хватает ошибки теперь в случае когда есть буквы и цифры.
Т.е. реквизит Фамилия содержать должен только буквы.

&НаКлиенте
Функция ПроверитьФамилию(Отказ, Фамилия)
	
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Global = Истина;
RegExp.IgnoreCase = Истина;
ИсходнаяСтрока = ""+ИсходнаяСтрока+"" +объект.Фамилия; //ПолеФамилия - строка
RegExp.Pattern = "[а-яА-Я]";
	Если RegExp.Test(Фамилия) Тогда
		Возврат Истина;
	Иначе
		Возврат Ложь;
	КонецЕсли; 	
	
КонецФункции // ПроверитьПолеФамилия()
Показать


Пока что работает так:
Прикрепленные файлы:
8. Anastasia_ 18.05.20 18:59 Сейчас в теме
(5) Я сейчас посмотрела, получается, Matches.Count выводит количество символов, соответствующих шаблону.

Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если ПустаяСтрока(Объект.Фамилия) Тогда
    СообщитьПользователю("Объект.Фамилия", "Заполните поле Фамилия", Отказ)
ИначеЕсли ПроверитьФамилию(Объект) = Ложь Тогда
    Сообщить("ерундааа!");
    Отказ = Истина;

КонецЕсли;


&НаКлиенте
Функция ПроверитьФамилию(Объект)
    
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Global = Истина;
RegExp.IgnoreCase = Истина;
Фамилия = Объект.Фамилия;
RegExp.Pattern = "[а-яА-Я]";
Matches = RegExp.Execute(Фамилия);
КоличествоБукв = Matches.Count; 
КоличествоСимволов = СтрДлина(Фамилия);
Если КоличествоБукв<>КоличествоСимволов  Тогда
Результат = Ложь;
Иначе
Результат = Истина;
КонецЕсли;
    
КонецФункции // ПроверитьПолеФамилия()
Показать
user1345957; +1 Ответить
9. user1345957 18.05.20 19:01 Сейчас в теме
11. Anastasia_ 18.05.20 19:05 Сейчас в теме
(9) А также такое замечание - у Вас функция возвращает количество соответствий шаблону. Например, Иванов - 6. Но это если исправить шаблон. А Вы, обращаясь к функции, анализируете на ложь...
user1345957; +1 Ответить
10. Anastasia_ 18.05.20 19:02 Сейчас в теме
(8) Посмотрите мою. логику. Если Вам так подойдёт. Что я исправила -
RegExp.Pattern = ""+ИсходнаяСтрока+"" + "[а-яА-Я]" на
RegExp.Pattern = "[а-яА-Я]";
По логике, Вам надо проверить на соответствие буквам. Значит, мы находит, сколько букв и сколько символов. Если нет равенства, то есть какие-то дополнительные символы - знаки, цифры и т.д.
12. Anastasia_ 18.05.20 19:05 Сейчас в теме
(9) Ну Вы проверьте, как работает. На мой взгляд так и надо оставить).
13. user1345957 18.05.20 19:09 Сейчас в теме
(12) Отлично работает, я вот изначально хотел проверять регулярным выражением фамилию, имя, отчество. Стоит ли на каждое поле делать функцию ? Так как проверка у всех полей одинакова - должны быть только буквы.
14. Anastasia_ 18.05.20 19:11 Сейчас в теме
(13) Добавьте тогда в функцию проверку на имя и на отчество.
15. user1345957 18.05.20 19:14 Сейчас в теме
(14) Функция не работает если вместе с буквами есть спец символы или цифры.

У меня работает всё. Поправил снова.

&НаКлиенте
Функция ПроверитьФамилию(Отказ, Фамилия)
	
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Global = Истина;
RegExp.IgnoreCase = Истина;
Фамилия = Объект.Фамилия; //ПолеФамилия - строка
RegExp.Pattern = "[а-яА-Я]";
Matches = RegExp.Execute(Фамилия);
КоличествоБукв = Matches.Count; 
КоличествоСимволов = СтрДлина(Фамилия);
Если КоличествоБукв<>КоличествоСимволов  Тогда
Результат = Ложь;
Иначе
Результат = Истина;
КонецЕсли;
	Если RegExp.Test(Результат) Тогда
		Возврат Истина;
	Иначе
		Возврат Ложь;
	КонецЕсли;
КонецФункции // ПроверитьПолеФамилия()
Показать


Но вашу логику я понял. Поэтому объединил всё лучшее)
16. Anastasia_ 18.05.20 19:19 Сейчас в теме
(15) Да, надо добавить
Возврат Результат;
Упустила

&НаКлиенте
Функция ПроверитьФамилию(Объект)
    
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Global = Истина;
RegExp.IgnoreCase = Истина;
Фамилия = Объект.Фамилия;
RegExp.Pattern = "[а-яА-Я]";
Matches = RegExp.Execute(Фамилия);
КоличествоБукв = Matches.Count; 
КоличествоСимволов = СтрДлина(Фамилия);
Если КоличествоБукв<>КоличествоСимволов  Тогда
Результат = Ложь;
Иначе
Результат = Истина;
КонецЕсли;

Возврат Результат;
    
КонецФункции
Показать
17. user1345957 18.05.20 19:26 Сейчас в теме
(14)но будет тогда результат1, результат2, результат3 ?
20. Anastasia_ 18.05.20 19:32 Сейчас в теме
(17) Зависит от задачи. Возможно, достаточно выводить сразу по всем трём полям, ок/не ок. Если нужно по каждому полю, то тогда отдельно надо расписывать.
21. user1345957 18.05.20 19:33 Сейчас в теме
(20) Я пока представляю себе это вот так:

&НаКлиенте
Функция ПроверитьФамилиюИмяОтчество(Отказ, Фамилия, Имя, Отчество)
	
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Global = Истина;
RegExp.IgnoreCase = Истина;
Фамилия = Объект.Фамилия; //ПолеФамилия - строка
RegExp.Pattern = "[а-яА-Я]"; //Проверяем на соответвствие буквам, т.е. должны быть только и только буквы
Matches = RegExp.Execute(Фамилия); //если есть цифры, спец символы вместе/раздельно букв
КоличествоБукв = Matches.Count; //то сообщим пользователю об ошибке. 
КоличествоСимволов = СтрДлина(Фамилия); //Сначала находим, сколько букв и сколько символов.

Имя = Объект.Имя; //ПолеФамилия - строка
RegExp.Pattern = "[а-яА-Я]"; //Проверяем на соответвствие буквам, т.е. должны быть только и только буквы
Matches = RegExp.Execute(Имя); //если есть цифры, спец символы вместе/раздельно букв
КоличествоБукв = Matches.Count; //то сообщим пользователю об ошибке. 
КоличествоСимволов = СтрДлина(Имя); //Сначала находим, сколько букв и сколько символов.

Фамилия = Объект.Отчество; //ПолеФамилия - строка
RegExp.Pattern = "[а-яА-Я]"; //Проверяем на соответвствие буквам, т.е. должны быть только и только буквы
Matches = RegExp.Execute(Отчество); //если есть цифры, спец символы вместе/раздельно букв
КоличествоБукв = Matches.Count; //то сообщим пользователю об ошибке. 
КоличествоСимволов = СтрДлина(Отчество); //Сначала находим, сколько букв и сколько символов.
Если КоличествоБукв<>КоличествоСимволов  Тогда  //Если нет равенства, то есть какие-то дополнительные символы - знаки, цифры и т.д.
Результат = Ложь;
Иначе
Результат = Истина;
КонецЕсли;
	Если RegExp.Test(Результат) Тогда
		Возврат Истина;
	Иначе
		Возврат Ложь;
	КонецЕсли;
КонецФункции
Показать
18. Anastasia_ 18.05.20 19:27 Сейчас в теме
(13) Вы можете в функцию добавить проверку имени и отчества:

&НаКлиенте
Функция ПроверитьФИО(Объект)
    
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Global = Истина;
RegExp.IgnoreCase = Истина;
Фамилия = Объект.Фамилия; 
Имя = Объект.Имя;
Отчество = Объект.Отчество;
ФИО = Фамилия + Имя + Отчество;
RegExp.Pattern = "[а-яА-Я]";
Matches = RegExp.Execute(ФИО);
КоличествоБукв = Matches.Count; 
КоличествоСимволов = СтрДлина(ФИО);
Если КоличествоБукв<>КоличествоСимволов  Тогда
Результат = Ложь;
Иначе
Результат = Истина;
КонецЕсли;

Возврат Результат;
КонецФункции 
Показать


Как-то так. Ну или можно еще предусмотреть, вдруг лишний пробел стоит)).
19. user1345957 18.05.20 19:32 Сейчас в теме
(18) Не совсем так, я проверяю все поле по отдельности.
22. Anastasia_ 18.05.20 19:34 Сейчас в теме
(19) Хорошо, всё зависит от задачи. Можно и так сделать. Я думаю, Вы теперь справитесь!)
23. user1345957 18.05.20 19:36 Сейчас в теме
(22)
Тогда мне говорят будто не хватает параметров:

{Справочник.Пользователи.Форма.Регистрация.Форма(31,11)}: Недостаточно фактических параметров (ПроверитьФамилиюИмяОтчество)
ИначеЕсли <<?>>ПроверитьФамилиюИмяОтчество(Отказ, Объект.Фамилия) = Ложь Тогда (Проверка: Тонкий клиент)
{Справочник.Пользователи.Форма.Регистрация.Форма(37,11)}: Недостаточно фактических параметров (ПроверитьФамилиюИмяОтчество)
ИначеЕсли <<?>>ПроверитьФамилиюИмяОтчество(Отказ, Объект.Имя) = Ложь Тогда (Проверка: Тонкий клиент)
{Справочник.Пользователи.Форма.Регистрация.Форма(43,11)}: Недостаточно фактических параметров (ПроверитьФамилиюИмяОтчество)
ИначеЕсли <<?>>ПроверитьФамилиюИмяОтчество(Отказ, Объект.Отчество) = Ложь Тогда (Проверка: Тонкий клиент)


Если ПустаяСтрока(Объект.Фамилия) Тогда
	СообщитьПользователю("Объект.Фамилия", "Заполните поле Фамилия", Отказ)
ИначеЕсли ПроверитьФамилиюИмяОтчество(Отказ, Объект.Фамилия) = Ложь Тогда
	Сообщить("В поле Фамилия недопустимы цифры и специальные символы!");
	Отказ = Истина;
КонецЕсли;
Если ПустаяСтрока(Объект.Имя) Тогда
	СообщитьПользователю("Объект.Имя", "Заполните поле Имя", Отказ)
ИначеЕсли ПроверитьФамилиюИмяОтчество(Отказ, Объект.Имя) = Ложь Тогда
	Сообщить("В поле Имя недопустимы цифры и специальные символы!");
	Отказ = Истина;	
КонецЕсли; 
Если ПустаяСтрока(Объект.Отчество) Тогда
	СообщитьПользователю("Объект.Отчество", "Заполните поле Отчество", Отказ)
ИначеЕсли ПроверитьФамилиюИмяОтчество(Отказ, Объект.Отчество) = Ложь Тогда
	Сообщить("В поле Отчество недопустимы цифры и специальные символы!");
	Отказ = Истина;
КонецЕсли; 

Показать
25. Anastasia_ 18.05.20 19:41 Сейчас в теме
(23) Я немного запуталась. Выложите весь код, включая функцию.
26. user1345957 18.05.20 19:42 Сейчас в теме
(25) Пожалуйста:
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если ПустаяСтрока(Объект.Фамилия) Тогда
	СообщитьПользователю("Объект.Фамилия", "Заполните поле Фамилия", Отказ)
ИначеЕсли ПроверитьФамилиюИмяОтчество(Отказ, Объект.Фамилия) = Ложь Тогда
	Сообщить("В поле Фамилия недопустимы цифры и специальные символы!");
	Отказ = Истина;
КонецЕсли;
Если ПустаяСтрока(Объект.Имя) Тогда
	СообщитьПользователю("Объект.Имя", "Заполните поле Имя", Отказ)
ИначеЕсли ПроверитьФамилиюИмяОтчество(Отказ, Объект.Имя) = Ложь Тогда
	Сообщить("В поле Имя недопустимы цифры и специальные символы!");
	Отказ = Истина;	
КонецЕсли; 
Если ПустаяСтрока(Объект.Отчество) Тогда
	СообщитьПользователю("Объект.Отчество", "Заполните поле Отчество", Отказ)
ИначеЕсли ПроверитьФамилиюИмяОтчество(Отказ, Объект.Отчество) = Ложь Тогда
	Сообщить("В поле Отчество недопустимы цифры и специальные символы!");
	Отказ = Истина;
КонецЕсли; 
Если ПустаяСтрока(Объект.Почта) Тогда
	СообщитьПользователю("Объект.Почта", "Заполните поле Почта", Отказ)
ИначеЕсли
	ПроверкаПочты(Отказ, Объект.Почта) = Ложь Тогда
	Сообщить("Некорректный адрес почты!");
	Отказ = Истина;
КонецЕсли; 
Если ПустаяСтрока(Объект.Пароль) Тогда
	СообщитьПользователю("Объект.Пароль", "Заполните поле Пароль", Отказ)
КонецЕсли; 
Если ПустаяСтрока(Объект.Телефон) Тогда
	СообщитьПользователю("Объект.Телефон", "Заполните поле Телефон", Отказ)
КонецЕсли; 
Объект.Фамилия = Объект.Фамилия+Объект.ОкончанияФамилий;
Объект.Отчество = Объект.Отчество+Объект.ОкончаниеОтчества;
Объект.Наименование = Объект.Фамилия+Объект.ОкончанияФамилий+" "+Объект.Имя+" "+Объект.Отчество+Объект.ОкончаниеОтчества;
КонецПроцедуры

&НаКлиенте
Функция ПроверитьФамилиюИмяОтчество(Отказ, Фамилия, Имя, Отчество)
	
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Global = Истина;
RegExp.IgnoreCase = Истина;
Фамилия = Объект.Фамилия; //ПолеФамилия - строка
RegExp.Pattern = "[а-яА-Я]"; //Проверяем на соответвствие буквам, т.е. должны быть только и только буквы
Matches = RegExp.Execute(Фамилия); //если есть цифры, спец символы вместе/раздельно букв
КоличествоБукв = Matches.Count; //то сообщим пользователю об ошибке. 
КоличествоСимволов = СтрДлина(Фамилия); //Сначала находим, сколько букв и сколько символов.

Имя = Объект.Имя; //ПолеФамилия - строка
RegExp.Pattern = "[а-яА-Я]"; //Проверяем на соответвствие буквам, т.е. должны быть только и только буквы
Matches = RegExp.Execute(Имя); //если есть цифры, спец символы вместе/раздельно букв
КоличествоБукв = Matches.Count; //то сообщим пользователю об ошибке. 
КоличествоСимволов = СтрДлина(Имя); //Сначала находим, сколько букв и сколько символов.

Фамилия = Объект.Отчество; //ПолеФамилия - строка
RegExp.Pattern = "[а-яА-Я]"; //Проверяем на соответвствие буквам, т.е. должны быть только и только буквы
Matches = RegExp.Execute(Отчество); //если есть цифры, спец символы вместе/раздельно букв
КоличествоБукв = Matches.Count; //то сообщим пользователю об ошибке. 
КоличествоСимволов = СтрДлина(Отчество); //Сначала находим, сколько букв и сколько символов.
Если КоличествоБукв<>КоличествоСимволов  Тогда  //Если нет равенства, то есть какие-то дополнительные символы - знаки, цифры и т.д.
Результат = Ложь;
Иначе
Результат = Истина;
КонецЕсли;
	Если RegExp.Test(Результат) Тогда
		Возврат Истина;
	Иначе
		Возврат Ложь;
	КонецЕсли;
КонецФункции // ПроверитьПолеФамилиюИмяОтчество()
Показать
27. Anastasia_ 18.05.20 19:49 Сейчас в теме
(26)

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Фамилия = Объект.Фамилия;
Имя = Объект.Имя;
Отчество = Объект.Отчество;
Если ПустаяСтрока(Фамилия) Тогда
    СообщитьПользователю("Объект.Фамилия", "Заполните поле Фамилия", Отказ)
ИначеЕсли ПроверитьФамилиюИмяОтчество(Фамилия) = Ложь Тогда
    Сообщить("В поле Фамилия недопустимы цифры и специальные символы!");
    Отказ = Истина;
КонецЕсли;
Если ПустаяСтрока(Имя) Тогда
    СообщитьПользователю("Объект.Имя", "Заполните поле Имя", Отказ)
ИначеЕсли ПроверитьФамилиюИмяОтчество(Имя) = Ложь Тогда
    Сообщить("В поле Имя недопустимы цифры и специальные символы!");
    Отказ = Истина;    
КонецЕсли; 
Если ПустаяСтрока(Отчество) Тогда
    СообщитьПользователю("Объект.Отчество", "Заполните поле Отчество", Отказ)
ИначеЕсли ПроверитьФамилиюИмяОтчество(Отчество) = Ложь Тогда
    Сообщить("В поле Отчество недопустимы цифры и специальные символы!");
    Отказ = Истина;
КонецЕсли; 
Если ПустаяСтрока(Объект.Почта) Тогда
    СообщитьПользователю("Объект.Почта", "Заполните поле Почта", Отказ)
ИначеЕсли
    ПроверкаПочты(Отказ, Объект.Почта) = Ложь Тогда
    Сообщить("Некорректный адрес почты!");
    Отказ = Истина;
КонецЕсли; 
Если ПустаяСтрока(Объект.Пароль) Тогда
    СообщитьПользователю("Объект.Пароль", "Заполните поле Пароль", Отказ)
КонецЕсли; 
Если ПустаяСтрока(Объект.Телефон) Тогда
    СообщитьПользователю("Объект.Телефон", "Заполните поле Телефон", Отказ)
КонецЕсли; 
Объект.Фамилия = Объект.Фамилия+Объект.ОкончанияФамилий;
Объект.Отчество = Объект.Отчество+Объект.ОкончаниеОтчества;
Объект.Наименование = Объект.Фамилия+Объект.ОкончанияФамилий+" "+Объект.Имя+" "+Объект.Отчество+Объект.ОкончаниеОтчества;
КонецПроцедуры

&НаКлиенте
Функция ПроверитьФамилиюИмяОтчество(СтрокаАнализа)
    
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Global = Истина;
RegExp.IgnoreCase = Истина;
RegExp.Pattern = "[а-яА-Я]"; //Проверяем на соответвствие буквам, т.е. должны быть только и только буквы
Matches = RegExp.Execute(СтрокаАнализа); //если есть цифры, спец символы вместе/раздельно букв
КоличествоБукв = Matches.Count; //то сообщим пользователю об ошибке. 
КоличествоСимволов = СтрДлина(СтрокаАнализа); //Сначала находим, сколько букв и сколько символов.

Если КоличествоБукв<>КоличествоСимволов  Тогда  //Если нет равенства, то есть какие-то дополнительные символы - знаки, цифры и т.д.
Результат = Ложь;
Иначе
Результат = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции // ПроверитьПолеФамилиюИмяОтчество()
Показать
28. Anastasia_ 18.05.20 19:54 Сейчас в теме
(26) А что за конфигурация? Для чего эти строки?
Объект.Фамилия = Объект.Фамилия+Объект.ОкончанияФамилий;
Объект.Отчество = Объект.Отчество+Объект.ОкончаниеОтчества;
Объект.Наименование = Объект.Фамилия+Объект.ОкончанияФамилий+" "+Объект.Имя+" "+Объект.Отчество+Объект.ОкончаниеОтчества;
user1345957; +1 Ответить
30. user1345957 18.05.20 19:55 Сейчас в теме
(28) Это я формирую Наименование, сделал небольшое удобство - окончания. Они по желанию.
Появляются в зависимости от пола.
31. Anastasia_ 18.05.20 19:58 Сейчас в теме
(30) Ок, не буду вдаваться в детали!) "Облегчите" тогда функцию, чтоб анализировала одну строку и обращайтесь к ней три раза, для проверки фамилии, имени и отчества, как в комментарии 27. Тем более Вы в функции, получается, сравниваете только для отчества соответствие количества символов количеству букв, и в зависимости от этого получаете результат.
32. user1345957 18.05.20 20:00 Сейчас в теме
(31) И поэтому вы использовали параметр СтрокаАнализа ?
33. Anastasia_ 18.05.20 20:02 Сейчас в теме
(32) Да, назвала так нейтрально, так как можно любую строку передать.
user1345957; +1 Ответить
34. Anastasia_ 18.05.20 20:05 Сейчас в теме
(33) Вообще можно и функцию переименовать будет как-нибудь, раз задача расширилась, а то вдруг еще расширится, и будете еще какие-то строки проверять!))) Думаю, когда проверите механизм, можно уже всё еще раз просмотреть и оптимизировать).
29. Anastasia_ 18.05.20 19:55 Сейчас в теме
(26) У Вас функция тут определена от четырёх параметров, а вызываете от двух. Поэтому ошибка.
6. antz 18.05.20 18:53 Сейчас в теме
Функция должна возвращать результат. У вас она только что-то там внутри себя делает.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот