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

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

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

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

vienya

Максим75, Вот и столкнулся  :xfbnsdfb:

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

LexaK

народ! только меня одного напрягает такое сравнение?
Если Объект.НаименованиеПолное = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ЮридическоеЛицо")
если помогло нажмите: Спасибо!

Максим75

LexaK, да меня тоже напрягает.
не мешало бы весь код увидеть.
есть предложение, что можно с клиента вызвать функцию на сервере, там все сравнить, вернуть что-то (типа отказ Истина или Ложь), ну и потом на клиенте принимать решение.

vienya

LexaK, Если я пишу:
ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ЮридическоеЛицо")
то Переменная не определена (ЮрФизЛицо)
К тому же она то ЮЛ, то ФЛ

Я должен как-то задать условие для строки Объект.НаименованиеПолное в зависимоти от того это ЮЛ или ФЛ
Как это можно сделать?

vienya

Максим75,
ЮрФизЛицо  = Объект.НаименованиеПолное;

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

LexaK

vienya, попробуйте такую функцию использовать (в указанные места добавьте свои проверки)
&НаСервере
Функция ПроверкаНаименования()

РезультатПроверки = Ложь;

Если Объект.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо Тогда
//это Юр лицо. Вставить проверку для Юрлиц

ИначеЕсли Объект.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо Тогда
//это Физ лицо. Вставить проверку для ФизЛиц

Иначе
//это не юрики и не физики, не проверяем
КонецЕсли;

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

КонецФункции
если помогло нажмите: Спасибо!

Максим75

Цитата: vienya от 17 апр 2024, 10:55Максим75,
ЮрФизЛицо  = Объект.НаименованиеПолное;

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


вот вангую, что у Вас НаименованиеПолное имеет тип Строка, а Вы пытаетесь строку сравнить с Перечислением. Как-то не кошерно это, не будет работать.

vienya

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

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

Результат = ПродолжитьВызов();
Возврат Результат;
КонецФункции;


Однако вылезает ошибка {Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(498,1)}: Неопознанный оператор
<<?>>&НаСервере (Проверка: Сервер) и <<?>>&НаСервере (Проверка: Тонкий клиент)
Точки с запятыми вроде везде правильно поставил. Пробовал и Экспорт ставить. Есть ещё какая причина?


ls600


ls600

Функция ДК1_ПроверкаНаименования()
    РезультатПроверки = Ложь;
 Если Объект.ЮридическоеФизическоеЛицо = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо") Тогда

         /// остальной код
   КонецЕсли // <<== Не хватает
     Возврат РезультатПроверки;

    Результат = ПродолжитьВызов();
    Возврат Результат;
КонецФункции;

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

Рейтинг@Mail.ru

Поиск