Имя: Пароль:
1C
 
Запрет на введение символов в имени контрагента
🠗 (Волшебник 18.04.2024 22:20)
,
0 vienya
 
12.04.24
09:55
Как установить ограничение на введение цифр, латиницы и спецсимволов при заведении нового контрагента?

С сайта ИТС
https://its.1c.ru/db/bsp315doc/content/172/hdoc
составил такой код:

Функция ТолькоКириллицаВСтроке(ФИО, Ложь, "-") Экспорт
КонецФункции;

Где разместить этот код?
1 maxab72
 
12.04.24
09:57
В переопределяемом общем клиентском модуле
2 Гена
 
гуру
12.04.24
10:01
Бедная, бедная фирма 1С...
3 Zamestas
 
12.04.24
10:03
(0) Ты документацию по диагонали читаешь? Там же написано:
Результат = СтроковыеФункцииКлиентСерверРФ.ТолькоКириллицаВСтроке(СтрокаПроверки, УчитыватьРазделителиСлов, ДопустимыеСимволы)
соответственно в конфигурации уже есть функция:
ТолькоКириллицаВСтроке
которая расположена в общем модуле
СтроковыеФункцииКлиентСерверРФ
тебе только вызвать её нужно, из любого удобного места для проверки ФИО.
4 Гена
 
гуру
12.04.24
10:04
(3) Посмотрите заголовок. Автор не ФИО проверять будет, а наименование контрагента.
5 Zamestas
 
12.04.24
10:14
(4) Так в (0) он явно ФИО проверяет.
6 yopQua
 
12.04.24
10:18
(4) так он же болгарин
да? а какая разница
7 Мультук
 
гуру
12.04.24
10:20
(0)

Где разместить этот код?

Смотреть нужно в события:

"ПередЗаписью" в форме

или

"ПередЗаписью" в модуле объекта

Желательно такие проверки выносить в отдельные функции/процедуры.


Можно еще родить "Расширение" и написать туда

P.S.

А по хорошему нужно идти на курсы и читать книжки.
8 vienya
 
12.04.24
10:24
(4) (5) Верное замечание, потому что это ограничение касается только физических лиц, как их разграничить с юридическими лицами?
К ним можно обратиться через
Если ... тогда
КонецЕсли;
?
9 yopQua
 
12.04.24
10:29
(8) проверкой на перечисление в контрагенте?
пс. в типовых кажется это перечисление
10 Гена
 
гуру
12.04.24
10:30
Да хоть бы и ФИО. Это только лет 5 назад Путин подписал запрет на цифры в именах после известного суда, где родители дали сыну номер подводной лодки. Но ИП же явно не дети. У них могут быть имена хоть Людовик XIV
11 vienya
 
12.04.24
10:42
(7) На ФормеЭлемента есть "ПередЗаписью". "ПередЗаписьюНаСервере" не трогать?
12 АгентБезопасной Нацио
 
12.04.24
10:57
(10) Вот у нас в контрах есть потрясающие армяне с отчествами "Ваникович", "Сержантович" и даже "Жульвернович". а вот "нумерованных" не разу не встречал
13 Kigo_Kigo
 
12.04.24
11:10
Запрет на введение и проверка на введеные данне-это 2 разные вещи, это во первых
во вторых контролировать это можно на разных уровнях, при вводе, после ввода, перед записью, не посредственно при записи, еще вопрос - надо отругать пользователя за это и/или исправить, или предоставить это пользователю, что бы он свои "биоматериалы" оставил на это дествие, типа что он уверен что так и должно быть, потом еще есть такая фигня, когда контриков/физ лица покинувших на всегда компанию или уже закрывшиеся, или вообще минус 2, метят - каким то образом, к примеру в наименовании перед ставят ему "#" - что типа не дейсвующий
14 maxab72
 
12.04.24
11:29
Здесь скорее нужен запрет на непечатные символы, когда при заполнении контрагента копируют его название с какой-либо веб-страницы, а потом при обменах начинаются карнавалы и поиск, у кого в наименовании запретный символ есть...
15 maxab72
 
12.04.24
11:37
(12) У нас круче, есть сотрудник-татарин Данияр Рамзесович (он же для своих "Тутанхамоныч")
16 АгентБезопасной Нацио
 
12.04.24
11:45
(15) не круче. с Жульверновичем на одном уровне.
17 Garykom
 
гуру
12.04.24
11:50
(0) ПриИзменении (элемента на формах) и ПередЗаписью (обязательно после ОбменДанными.Загрузка = Истина)
18 vienya
 
12.04.24
14:08
(17) Спасибо.

Мне нужно только ПередЗаписью. Данная процедура есть в Форме Элемента и модуле объекта. Пытался и в общем модуле создать.

Помогите! Не знаю как обратиться к полю НаименованиеДляДокументов/НаименованиеВПрограмме?
Результат = СтроковыеФункцииКлиентСервер.ТолькоКириллицаВСтроке([?], Ложь, "-");

И даже как обратиться к самому справочнику Контрагенты?
    [?].ОбменДанными.Загрузка = истина;
    [?].Записать();
19 Kigo_Kigo
 
12.04.24
15:00
ЭтотОбъект.НаименованиеДляДокументов?кстати есть там такое поле вообще?
20 Kigo_Kigo
 
12.04.24
15:02
если это типовая то там есть только
НаименованиеПолное и Наименование
21 vienya
 
12.04.24
15:28
(20)В справочнике контрагенты реквизит НаименованиеПолное.
Но пишет: {Справочник.Пользователи.Форма.ФормаЭлемента.Форма(415,68)}: Переменная не определена (НаименованиеПолное)

И то же с Наименованием
22 Kigo_Kigo
 
12.04.24
15:31
если это Справочник.Пользователи.Форма.ФормаЭлемента.Форма
тогда
Объект.Наиманование
Объект.НаименованиеПолное
23 АгентБезопасной Нацио
 
12.04.24
15:31
(21) позовите уже программиста!
24 Kigo_Kigo
 
12.04.24
15:32
в модуле объекта объект превращается в ЭтотОбъект, это если делать проверку в процедуре ПередЗаписью
25 Kigo_Kigo
 
12.04.24
15:33
(23) Да ладно, пусть разбирается, мы все шишики набиваем исключительно об свой лоб :)
26 Garykom
 
гуру
12.04.24
15:36
(24) МодификацияКонфигурацииПереопределяемый же есть
27 Kigo_Kigo
 
12.04.24
15:45
(26) А где это он есть?
У меня нет
28 vienya
 
12.04.24
16:27
(22) Спасибо. На ошибки в конфигураторе код прошёл. Но в режиме предприятия спецсимволы по-прежнему вводятся!

P.S.
Странно, я думал, для запрета на ввод спецсимволов, латиницы и цифр в наименовании физлиц должен бы быть какой-нибудь универсальный инструмент.
29 Kigo_Kigo
 
12.04.24
16:40
(28) Так они и будут вводится, кудаж они денутся, если ты проверяешь уже введеные, а ты сам смотрел функцию
ТолькоКириллицаВСтроке -?
она возращает ложь или истину
РезультатПроверкиФИО = СтроковыеФункцииКлиентСерверРФ.ТолькоКириллицаВСтроке(Объект.Наиманование, Ложь, "-");
Если Не РезультатПроверкиФИО тогда
сообщить("В наименование есть не допустимые символы");
Возврат;
КонецЕсли;
30 Garykom
 
гуру
12.04.24
16:47
(27) У ТС что не УТ11 ?
31 Kigo_Kigo
 
12.04.24
17:08
(30) Не знаю, в моей УХ нет :)
32 Garykom
 
гуру
12.04.24
17:35
(31) просто УХ это на основе БП3, там да нет такого
но общие модули которые вызываются ПриСозданииНаСервере, ПередЗаписью и т.д. должны быть
33 Timon1405
 
12.04.24
17:53
34 SleepyHead
 
гуру
12.04.24
18:15
(2) 🔥🔥🔥
35 vienya
 
12.04.24
20:45
(29) Kigo_Kigo Спасибо за готовый рабочий код!
(33) Странно, но инструкцию можно понять ТОЛЬКО после рабочего кода. До этого она набор букв.
36 vienya
 
15.04.24
12:35
На локальной тестовой код работает, а на БП Корп нет.

Для рабочей базы создал внешнюю обработку, в её модуле объекта разместил по шаблону с ИТС СведенияОВнешнейОбработке

Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта();    
    ПараметрыРегистрации.Версия = "1.0";  
    
    Команда = ПараметрыРегистрации.Команды.Добавить();
    Команда.Представление = НСтр("ru = 'Ограничение Наименования Контрагента'");
    Команда.Идентификатор = "ОграничениеНаименованияКонтрагента";  
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();      
    Команда.ПоказыватьОповещение = Истина;
    
        Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина, Истина);
        ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
    
    Возврат ПараметрыРегистрации;
КонецФункции
Скрыть


и разместил указанный (29) Kigo_Kigo код в процедуру ПередЗаписью(Отказ, ПараметрыЗаписи).

Саму обработку разместил в справочник Контрагенты. Но в режиме предприятия всё по-прежнему вносится латиницей. Почему внешняя обработка не срабатывает, что я делаю не так?
37 Мультук
 
гуру
15.04.24
13:12
(36)

1) Зачем нужна внешняя обработка "Заполнение объекта" ?
Что она должна делать по вашему мнению ?
Каким кодом она должна что-то делать?
Почему и когда она должна срабатывать ?
Объясните самому себе.

2) Покажите ВСЮ процедуру  ПередЗаписью(Отказ, ПараметрыЗаписи) с кодом от Kigo_Kigo

Что за переменная "Отказ" и для чего она нужна?
Что будет если написать:

Отказ = Истина;
38 vienya
 
15.04.24
13:51
(37)
1) Зачем нужна внешняя обработка "Заполнение объекта" ?
- На локальной тестовой базе код работает, а когда его вписываешь в БП Копр нет. Пробовал  скопировать справочник Контрагенты в расширения и вписать там, результата тоже нет.
Что она должна делать по вашему мнению ?
- Ограничение на введение цифр, латиницы и спецсимволов при заведении нового контрагента.
Каким кодом она должна что-то делать?
Предполагалось несколько вариантов:
//1 вариант
&НаКлиенте
Процедура ПриИзменении (Отказ, ТекущееЗначение)
    РегВыр = Новый РегВыр ("[^a-zA-Zа-яА-Я0-9]")
    Если РегВыр.Соответствует(СтрокадляПроверки) Тогда
        Сообщить ("Имя контрагента не должно содержать спецсимволы!")
        Отказ = Истина;
    КонецЕсли
КонецПроцедуры
//2 вариант
Функция ПроверкаНаименованияЮЛ (Наименование)
    Перем РегВыр;
    РегВыр = Новый Строкой ("\d"); //регулярное выражение для проверки наличия цифр
    Если Не СтрНайти (РегВыр.Сопоставить (Наименование), 1) Тогда
        Возврат Ложь; //в намименовании есть цифры
    Иначе     
        Возврат Истина; //в наименовании нет цифр
    Конецесли;
КонецФункции
//3 вариант
Функция ПроверкаНаименованияФЛ (Наименование)
    Перем РегВыр;
    РегВыр = Новый Строкой ("^[^\p{P}\p{S}\p{Z}]=$"); //регулярное выражение для проверки на отсутствие спецсимволов
    Если Не СтрНайти (РегВыр.Сопоставить (Наименование), 1) Тогда
        Возврат Истина; //в намименовании нет спецсимволов
    Иначе     
        Возврат Ложь; //в наименовании есть спецсимволы
    Конецесли;
КонецФункции
Все они оказались нерабочими...
Почему и когда она должна срабатывать ?
Почему - я объяснить самому себе не могу.
Когда? При заполнении строки (процедура  ПередЗаписью())  

2) Покажите ВСЮ процедуру  ПередЗаписью(Отказ, ПараметрыЗаписи) с кодом от Kigo_Kigo

Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)

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

Этот вариант рабочий, но как его применить во внешней форме?
39 Kigo_Kigo
 
15.04.24
14:05
Жмакаешь ПередЗаписью - ПКМ добавить в раширение "перед"
&Перед("ПередЗаписью")
Процедура ПередЗаписьюПеред(Отказ, ПараметрыЗаписи)

Результат = СтроковыеФункцииКлиентСерверРФ.ТолькоКириллицаВСтроке(Объект.Наименование, Ложь, "-"); //ЭтотОбъект при внешней обработке
        Если Не Результат Тогда
        Сообщить("В наименовании есть недопустимые символы");
        Отказ = Истина;
        КонецЕсли;
КонецПроцедуры
и не надо никаких внешних обработок
40 Timon1405
 
15.04.24
14:17
(35) это было больше не про инструкцию, а про точку входа: процедуру обработки проверки заполнения
41 Garikk
 
15.04.24
14:18
(0) почему вы запрещаете цифры в контрагенте?
полно фирм с цифрами в названии же
42 Aleksey
 
15.04.24
14:30
(41) См (8)
43 vienya
 
15.04.24
15:15
(39) У меня через ПКМ не добавляется. Не понял магических слов &Перед("ПередЗаписью"), но добавил, как и Процедура ПередЗаписьюПеред(Отказ, ПараметрыЗаписи)
Пробовал и на ФормеЭлемента и на Модуле объекта. И отдельно и в ПередЗаписьюНаСервере. Чуда не произошло.
Kigo_Kigo, в локальной пашет, в серверной нет.

(41) Для ФЛ запрет на спецсимволы, цифры и латиницу, для ЮЛ только на спецсимволы. Следующим шагом планирую прописать условием.
44 Kigo_Kigo
 
15.04.24
15:22
я пропустил ТС говорил какая у него конфа?
45 Kigo_Kigo
 
15.04.24
15:23
Вот так пробуешь?
46 Kigo_Kigo
 
15.04.24
15:24
После добавление система тебя сама сросит когда вызвать этот модуль, надо поставить галку - перед
47 vienya
 
15.04.24
16:20
(45) О как! Спасибо.
(46) По умолчанию вызывается Вызывать вместо (уже создан), можно открыжить Вызвать вместо (с контролем), а Вызвать перед и Вызвать после - не активны.

Вот такой код на ФормеЭлемента  справочника Контрагенты:

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

Вот такой код на ФормеЭлемента Доработки справочника Контрагенты:

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

Код не работает, что можно подправить?
48 Мультук
 
гуру
15.04.24
16:32
>> Вот такой код на ФормеЭлемента  справочника Контрагенты:

У меня нет БП Корп, но в обычной БП в функции

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)

    //Куча типового кода от 1С
    
КонецПроцедуры


Вы или эти строки от 1С или прилежно удаляете, или ...
49 vienya
 
15.04.24
17:23
(48) Спасибо! У меня действительно &НаКлиенте не стояло. Жаль это не исправило ситуацию.
50 vienya
 
16.04.24
09:49
Как быть, если на локальной тестовой базе код работает, а на серверной БП Копр - нет?

Есть рабочий код на ограничение введения латиницы и спецсимволов при заведении нового контрагента:

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

Данный код разместил на форме элемента и через ПКМ (Тип вызова: Вызвать вместо) добавил в расширение Процедура ДК1_ПередЗаписьюВместо(Отказ, ПараметрыЗаписи).

Подозреваю, что не работает обработчик события формы.
51 Гена
 
гуру
16.04.24
09:55
Пятый день человек мучается. Коллеги, напишите же ему кто-нибудь этот простейший код за долю малую )
52 vienya
 
16.04.24
11:15
(51) Заработал код! - мешало слово  Возврат; (как и Отказ = Истина;)

Kigo_Kigo, спасибо за код; Мультук, спасибо за внимательность; Timon1405, спасибо за ссылку; Гена, спасибо за сердечность.
53 vienya
 
16.04.24
15:44
Кстати, как по условию обратиться в справочнике контрагенты к строке наименования Юр/ФизЛица ?

Пробую в ФормеЭлемента:

Объект.НаименованиеПолное = "";    
Если Объект.НаименованиеПолное = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо Тогда
[условие недопустимых символов физлица]
        Иначе    
[условие недопустимых символов юрлица]
КонецЕсли;

Пишет: Переменная не определена (Перечисления)
54 FIXXXL
 
16.04.24
17:05
(53) на клиенте нет "Перечисления"
есть костыль ПредопределенноеЗначение

и вот это
Объект.НаименованиеПолное = "";    
Если Объект.НаименованиеПолное = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо Тогда

что должно сделать? ты пустую строку сравниваешь со значением перечисления
55 vienya
 
16.04.24
22:41
(54) что должно сделать?
Это я от отчаяния))
Извините!
Спасибо!
А как само условие задать?
Если ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ЮридическоеЛицо") Тогда Объект.НаименованиеПолное и как-то вписать условие недопустимых символов?
Я понимаю, что это "садись, два"
56 Мимохожий Однако
 
16.04.24
23:00
ОФФ "Спокойствие Штюбинг... ваше щетина превратится в золото"
57 vienya
 
17.04.24
14:18
С учетом всех замечаний сделал такой вот код в виде функции в расширении:

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

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

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

В расширении в
&НаСервере
Процедура ДК1_ПередЗаписьюНаСервереПеред(Отказ, ТекущийОбъект, ПараметрыЗаписи)
добавил:

Результат =  ПроверкаНаименования()

Кажется, что с логикой разобрался, но код также не рабочий.
58 vienya
 
18.04.24
02:03
Пытаюсь на доработке ограничить названия контрагентов ФЛ (на спецсимволы, цифры, латиницу, в титульном регистре) и ЮЛ (только на спецсимволы) в БП Корп 8.3 Написал в Справочнике Контрагенты: ФормаЭлемента. ПКМ добавил в расширение, получилась функция с теми же потрохами.

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


1) Здесь нет цикла.
2) Хотите советов? Копи-пастите ваш код полностью.
Вашим "усеченный код" и "также для", лично я, простите, уже не верю
3) Научитесь пользоваться отладчиком
4) Когда я писал про книги и курсы, я не шутил


И главное, всё что вы делаете (код который пишите) можно чудесно обкатать
на обычной внешней обработке, написав и оттестировав нужную процедуру

P.S.
Вы кто начинающий программист?
Жадный бух, которому не хочется нанимать 1С-ника ?

Вы сейчас, вместо программирования и знаний пользуетесь "магией"
А магия вне Хогвартса, как известно, до хорошего не доведет.
60 vienya
 
18.04.24
10:56
(59) Мультик,
1) Извините, я только учусь
2) Наконец-то! Вот рабочий код в процедуре ПередЗаписью:

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

Но у него 2 недостатка:
- Нет запрета на спецсимволы;
- Не задан титульный регистр у физлиц:
[CODE]Результат = ТРег()[/CODE]

Это поправимо?
3) Спасибо
4) Я понимаю. Просто надо здесь и сейчас.

С внешней обработкой я ещё не разобрался, как Справочник в неё скопировать.

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

- Задан титульный регистр у физлиц:
Объект.Наименование = ТРег(Объект.Наименование);
Объект.НаименованиеПолное = ТРег(Объект.НаименованиеПолное);


Хочу особо поблагодарить Kigo_Kigo и Мультук за участие и подсказки.
62 Волшебник
 
18.04.24
22:20
Хватит дурдома
63 Aleksey
 
19.04.24
03:09
(61) Страшно, очень страшно, мы не знаем что это такое, если бы мы знали, что это такое, но мы не знаем, что это такое
64 Aleksey
 
19.04.24
03:14
Имхо я бы заменил проверку на безусловно удаление спецсимволов. Если ты запрещает записывать с таким наименованием, т.е. Пользователь все равно будет удалять эти символы, то почему не удалить их программно?
65 Волшебник
 
19.04.24
06:11
(61) Замените на функцию проверки или замены. Используйте рефакторинг. Все запрещённые символы должны быть перечислены в одной строке.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.