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