Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 16:05

Запрет на введение символов в имени контрагента

Автор vienya, 12 апр 2024, 14:54

0 Пользователей и 1 гость просматривают эту тему.

Максим75

должно работать

можете дать полный код.
как с клиента вызываете и т.д.

vienya

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

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

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

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

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

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

Максим75

vienya, получается, что не работает конструкция
Если Объект.ЮридическоеФизическоеЛицо = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо") Тогда

ну не знаю, проверьте Тип левой и правой части проверки, что возвращает ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо")

vienya

Наконец-то! Вот рабочий код в процедуре ПередЗаписью:
Если Объект.ЮридическоеФизическоеЛицо = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо") Тогда
        РезультатПроверкиФЛ = СтроковыеФункцииКлиентСерверРФ.ТолькоКириллицаВСтроке(Объект.Наименование, Ложь); 
            Если Не РезультатПроверкиФЛ Тогда
               Сообщить("В наименовании ФЛ недопустимые символы");
               Отказ = Истина;
            КонецЕсли;                                                                                     
КонецЕсли;
       
Если Объект.ЮридическоеФизическоеЛицо = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ЮридическоеЛицо") Тогда
        РезультатПроверкиЮЛ = СтроковыеФункцииКлиентСерверРФ.ТолькоЛатиницаВСтроке(Объект.Наименование, Ложь, "абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ");
            Если Не РезультатПроверкиЮЛ Тогда
               Сообщить("В наименовании ЮЛ недопустимые символы");
               Отказ = Истина;
            КонецЕсли;
КонецЕсли;
Но у него 2 недостатка:
- Нет запрета на спецсимволы;
- Не задан титульный регистр у физлиц:
Результат = ТРег()Это поправимо?

LexaK

для ТРег(), найдете сами куда эту команду добавить в свой рабочий код?
Объект.Наименование = ТРег(Объект.Наименование);
если помогло нажмите: Спасибо!

vienya

LexaK, спасибо!  :ooifh:

- Запрет на спецсимволы сделал без массива, перечислением:
Если Найти (Объект.Наименование, "!") >0 ИЛИ Найти (Объект.Наименование, "@") >0 ИЛИ Найти (Объект.Наименование, "#") >0 ИЛИ Найти (Объект.Наименование, "$") >0 ИЛИ Найти (Объект.Наименование, "%") >0 ИЛИ Найти (Объект.Наименование, "^") >0 ИЛИ Найти (Объект.Наименование, "*") >0 ИЛИ Найти (Объект.Наименование, "_") >0 ИЛИ Найти (Объект.Наименование, "=") >0 ИЛИ Найти (Объект.Наименование, "{") >0 ИЛИ Найти (Объект.Наименование, "}") >0 ИЛИ Найти (Объект.Наименование, "[") >0 ИЛИ Найти (Объект.Наименование, "]") >0 ИЛИ Найти (Объект.Наименование, ";") >0 ИЛИ Найти (Объект.Наименование, "'") >0 ИЛИ Найти (Объект.Наименование, "\") >0 ИЛИ Найти (Объект.Наименование, "<") >0 ИЛИ Найти (Объект.Наименование, ">") >0 ИЛИ Найти (Объект.Наименование, ",") >0 ИЛИ Найти (Объект.Наименование, "?") >0 Тогда
            Сообщить("В наименовании ФЛ недопустимые символы");
            Отказ = Истина;
        КонецЕсли;
:zebzdr:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск