Как отдельно ограничить названия контрагентов физлиц и юрлиц в 1С

ТЗ на доработке ограничить названия контрагентов ФЛ (на спецсимволы, цифры, латиницу, в титульном регистре) и ЮЛ (только на спецсимволы) в БП Корп 8.3 Написал в Справочнике Контрагенты: ФормаЭлемента

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

  

И также с условием для ЮрЛица. ПКМ добавил в расширение, получилась функция с теми же потрохами.

Причём усечённый код цикла работает. А вот код условного оператора не работает. Что не так?


Ответы (2 шт):

Автор решения: Andrejew Pawel

Рабочий код вышел таким:

Если Объект.ЮридическоеФизическоеЛицо = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо") Тогда
        РезультатПроверкиФЛ = СтроковыеФункцииКлиентСерверРФ.ТолькоКириллицаВСтроке(Объект.Наименование, Ложь);  
            Если Не РезультатПроверкиФЛ Тогда
            Сообщить("В наименовании ФЛ недопустимые символы");
            Отказ = Истина;
        КонецЕсли; 
Объект.Наименование = ТРег(Объект.Наименование);
Объект.НаименованиеПолное = ТРег(Объект.НаименованиеПолное); 
Если Найти (Объект.Наименование, "!") >0 ИЛИ Найти (Объект.Наименование, "@") >0 ИЛИ Найти (Объект.Наименование, "#") >0 ИЛИ Найти (Объект.Наименование, "$") >0 ИЛИ Найти (Объект.Наименование, "%") >0 ИЛИ Найти (Объект.Наименование, "^") >0 ИЛИ Найти (Объект.Наименование, "*") >0 ИЛИ Найти (Объект.Наименование, "_") >0 ИЛИ Найти (Объект.Наименование, "=") >0 ИЛИ Найти (Объект.Наименование, "{") >0 ИЛИ Найти (Объект.Наименование, "}") >0 ИЛИ Найти (Объект.Наименование, "[") >0 ИЛИ Найти (Объект.Наименование, "]") >0 ИЛИ Найти (Объект.Наименование, ";") >0 ИЛИ Найти (Объект.Наименование, "'") >0 ИЛИ Найти (Объект.Наименование, "\") >0 ИЛИ Найти (Объект.Наименование, "<") >0 ИЛИ Найти (Объект.Наименование, ">") >0 ИЛИ Найти (Объект.Наименование, ",") >0 ИЛИ Найти (Объект.Наименование, "?") >0 Тогда
            Сообщить("В наименовании ФЛ недопустимые символы");
            Отказ = Истина;
        КонецЕсли;                                                                                    
КонецЕсли;
    
Если Объект.ЮридическоеФизическоеЛицо = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ЮридическоеЛицо") Тогда
        РезультатПроверкиЮЛ = СтроковыеФункцииКлиентСерверРФ.ТолькоЛатиницаВСтроке(Объект.Наименование, Ложь, "абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ");
            Если Не РезультатПроверкиЮЛ Тогда
              Сообщить("В наименовании ЮЛ недопустимые символы");
            Отказ = Истина;
            КонецЕсли;
Если Найти (Объект.Наименование, "!") >0 ИЛИ Найти (Объект.Наименование, "@") >0 ИЛИ Найти (Объект.Наименование, "#") >0 ИЛИ Найти (Объект.Наименование, "$") >0 ИЛИ Найти (Объект.Наименование, "%") >0 ИЛИ Найти (Объект.Наименование, "^") >0 ИЛИ Найти (Объект.Наименование, "*") >0 ИЛИ Найти (Объект.Наименование, "_") >0 ИЛИ Найти (Объект.Наименование, "=") >0 ИЛИ Найти (Объект.Наименование, "{") >0 ИЛИ Найти (Объект.Наименование, "}") >0 ИЛИ Найти (Объект.Наименование, "[") >0 ИЛИ Найти (Объект.Наименование, "]") >0 ИЛИ Найти (Объект.Наименование, ";") >0 ИЛИ Найти (Объект.Наименование, "'") >0 ИЛИ Найти (Объект.Наименование, "\") >0 ИЛИ Найти (Объект.Наименование, "<") >0 ИЛИ Найти (Объект.Наименование, ">") >0 ИЛИ Найти (Объект.Наименование, ",") >0 ИЛИ Найти (Объект.Наименование, "?") >0 Тогда
            Сообщить("В наименовании ФЛ недопустимые символы");
            Отказ = Истина;
        КонецЕсли;
КонецЕсли;
→ Ссылка
Автор решения: Sagittarius

Видимо у вас не такая БСП, как у меня. Вот копия метода "УдалитьСимволы()":

// Убирает указанные символы из строки.
//
// Параметры:
//    Строка           - Строка - Исходная строка.
//    УдаляемыеСимволы - Строка - Удаляемые символы.
//
// Возвращаемое значение:
//     Строка - Строка без указанных символов.
//
Функция УдалитьСимволы(Строка, УдаляемыеСимволы) Экспорт
    Возврат СтрСоединить(СтрРазделить(Строка, УдаляемыеСимволы, Ложь), "");
КонецФункции
→ Ссылка