Имя: Пароль:
1C
 
как организовать запрет создания элемента справочника с наименованием , существующим в спр
0 alpha78
 
13.07.22
11:24
Здравствуйте, скажите пожалуйста, как организовать запрет создания элемента справочника с наименованием элемента, который существует в справочнике (интерактивно или если нет то - программно), то есть чтоб была блокирновка задваивания Наименования элемента справочника. Спасибо.
1 Kigo_Kigo
 
13.07.22
11:27
В Форме менеждера
Процедура ПередЗаписью()
Если Не ЭтоГруппа Тогда
Если Справочники.Номенклатура.НайтиПоНаименованию(Наименование) Тогда
Отказ = Истина
2 Kigo_Kigo
 
13.07.22
11:28
Сообщить("Номенклатура с наименованием: " + Нименование + "уже существует")
3 Kigo_Kigo
 
13.07.22
11:29
тьфу , в модуле объекта конечно же
4 Фрэнки
 
13.07.22
11:34
(3) А если костыльно лепить, то можно обработчике события формы ПередЗаписью
5 Мультук
 
гуру
13.07.22
11:35
(0)

Программист -- нельзя одинаковые!
Пользователь -- ок, нельзя так нельзя:

Молоко.
Молоко..
Мoлоко
Mолоко
6 arsik
 
гуру
13.07.22
11:36
(1) Ужас. Он себя найдет
7 Мультук
 
гуру
13.07.22
11:37
(6) Не найдет, его еще нет
8 DimVad
 
13.07.22
11:37
(1) Вот Вы создали элемент справочника с наименованием "Валенок".
Записали.
Потом зашли снова и установили галочку какую-нибудь... :-)

Опс, меня опередили (6)
9 arsik
 
гуру
13.07.22
11:37
(7) Еще один. Или тренируйся на котятах.
10 Фрэнки
 
13.07.22
11:38
(7) Перезапись уже существующего элемента запрещена?
11 Мультук
 
гуру
13.07.22
11:38
(6) Но-но где в условии задачи "изменение" ? Написано - создание
12 Kigo_Kigo
 
13.07.22
11:38
(6) да еще надо вставить Не ЭтоНовый(), тогда не найдет :)
13 arsik
 
гуру
13.07.22
11:40
(11) Просто кто то уже сталкивался с подобными задачами, а кто то не подумал.
14 DimVad
 
13.07.22
11:40
(12) Т.е. я смогу спокойно изменить в старом элементе справочника наименование так, чтобы оно стало как у существующего ?
Умора...
15 alpha78
 
13.07.22
11:40
Kigo_Kigo, премного благодарен, удачи
16 Kigo_Kigo
 
13.07.22
11:40
(11) вся проблема мисты, то что люди код написанный на коленке вомпринимают всерьез и не рассматривают, что люди дают пинок в нужном направлении, а дель сам пусть себе мозг ибет, как и что :)
17 Aleksey
 
13.07.22
11:40
А потом начнется - почему у меня при обмене не создается номенклатура
18 Aleksey
 
13.07.22
11:41
По сабжу, это реализовано в типовой УТ, возъми оттуда и скопипасть
19 Kigo_Kigo
 
13.07.22
11:42
(14)  создания элемента справочника с наименованием элемента, который существует в справочнике, речи о созданных и переименованных нет, можно найти элемент и проверить на ссылку, вче проблема?
Читай (16)
20 6awkup_true
 
13.07.22
11:42
можно запросом через ПОДОБНО %Наименование% дернуть. избежим добавления точек или доп символов.
21 Aleksey
 
13.07.22
11:44
(20) это если ставить точки в конце, а не в середине.
22 DimVad
 
13.07.22
11:44
Пишется функция проверки на дубль.
Проверка выполняется запросом.
Если элемент не новый - то в запросе проверяется совпадение ссылки
Функция вызывается из процедуры "ПередЗаписью" объекта но естественно уже после проверки на ОбменДанными.Загрузка.

Усё.
23 DimVad
 
13.07.22
11:47
(19) // вче проблема
Например в том, что НайтиПоНаименованию найдёт первый встречный. Который может быть "он же", а может - и другой элемент справочника.
И работать такая провека будет "как повезёт".
24 6awkup_true
 
13.07.22
11:49
(21) таки если точки в середине, то это уже другое наименование получается, не?
25 Масянька
 
13.07.22
11:50
(0) Дать права на работу со справочником (внесение новых, редактирование, удаление) одному-двум человекам. Плюс четкие правила по формированию наименования.
А все дописки - раз на раз не приходится.
26 DimVad
 
13.07.22
12:11
На ОФ :

Процедура ПроверкаДубля(Отказ)
    
    Запрос = Новый Запрос;
    Если ЭтоНовый() Тогда
        
        Запрос.Текст =
        "ВЫБРАТЬ
        |    1 КАК Поле1
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.Наименование = &Наименование";
        
    Иначе
        
        Запрос.Текст =
        "ВЫБРАТЬ
        |    1 КАК Поле1
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.Наименование = &Наименование
        |    И Номенклатура.Ссылка <> &Ссылка";
        
        Запрос.УстановитьПараметр("Ссылка", Ссылка);
        
    КонецЕсли;
    
    Запрос.УстановитьПараметр("Наименование", Наименование);
    Рез = Запрос.Выполнить();
    
    Если НЕ Рез.Пустой() Тогда
        Отказ = Истина;

        #Если Клиент Тогда
            Сообщить("Дубль, мать Вашу", СтатусСообщения.ОченьВажное)
        #КонецЕсли
    КонецЕсли;
        
КонецПроцедуры
2 + 2 = 3.9999999999999999999999999999999...