|
Контроль уникальности наименования | ☑ | ||
---|---|---|---|---|
0
ЧайнаяРоза
29.11.13
✎
09:49
|
Здравствуйте!
Есть обработчик события,который проверяет уникальность наименования элемента справочника Группа: Процедура ПередЗаписью(Отказ)группы Если ЭтоНовый()Тогда Запрос=Новый Запрос ("ВЫБРАТЬ Наименование ИЗ Справочник.Группа ГДЕ Наименование=&Наименование"); Запрос.УстановитьПараметр("Наименование", Наименование); Результат=Запрос.Выполнить(); Если НЕ Результат.Пустой() Тогда Сообщить("Группа с таким наименованием уже есть!"); Отказ=Истина; КонецЕсли; КонецЕсли; КонецПроцедуры Вставила его в модуль объекта справочника Группа. Все работает верно, но при попытке записи элемента с неуникальным наименованием появляется не только сообщение:"Группа с таким наименованием уже есть!", но и появляется окно 1С:Предприятие - "Не удалось записать:"Группа!". Подскажите,пожалуйста, как устранить это окно |
|||
1
tixis
29.11.13
✎
09:54
|
Так в самом справочнике стоит конроль уникальности, в принцыпе ваша проверка не нужна
|
|||
2
Ненавижу 1С
гуру
29.11.13
✎
09:55
|
(1) не бреши ))
|
|||
3
Галахад
гуру
29.11.13
✎
09:55
|
Отказ = Ложь; :-)
|
|||
4
craxx
29.11.13
✎
09:56
|
(1) Уникальность наименования!
|
|||
5
stix2010
29.11.13
✎
09:57
|
это системное сообщение при Отказ=Ложь
|
|||
6
ЧайнаяРоза
29.11.13
✎
09:57
|
Если Отказ=Ложь поставить, то не будет смысла в процедуре)
|
|||
7
Defender aka LINN
29.11.13
✎
09:58
|
(0) А если я содам группу, запишу, а потом изменю ей имя на уже существующее?
|
|||
8
ЧайнаяРоза
29.11.13
✎
09:58
|
И как можно сделать так, чтобы это системное сообщение не выдавалось?
|
|||
9
hhhh
29.11.13
✎
09:58
|
(5) нет
|
|||
10
ЧайнаяРоза
29.11.13
✎
09:59
|
А как же тогда организовать контроль уникальности наименования?
|
|||
11
stix2010
29.11.13
✎
09:59
|
курить обработчик в форме
|
|||
12
stix2010
29.11.13
✎
10:02
|
или подписку
|
|||
13
ЧайнаяРоза
29.11.13
✎
10:03
|
Если в модуль формы элемента поместить процедуру, то выдаются ошибки:
Запрос.УстановитьПараметр("Наименование", <<?>>Наименование); (Проверка: Сервер) {Справочник.Группа.Форма.ФормаЭлемента.Форма(18,8)}: Процедура или функция с указанным именем не определена (ЭтоНовый) Если <<?>>ЭтоНовый()Тогда (Проверка: Сервер) |
|||
14
ЧайнаяРоза
29.11.13
✎
10:07
|
stix2010, Подписку - это как?)
|
|||
15
stix2010
29.11.13
✎
10:09
|
Вам бы книжек почитать
|
|||
16
stix2010
29.11.13
✎
10:10
|
из серии ЖКК
|
|||
17
Kupogun
29.11.13
✎
10:16
|
по меньшей мере надо проверить изменение наименования там же
если Ссылка.Наименование <> Наименование тогда Запрос=Новый Запрос ("ВЫБРАТЬ Наименование ИЗ Справочник.Группа ГДЕ Наименование=&Наименование"); Запрос.УстановитьПараметр("Наименование", Наименование); Результат=Запрос.Выполнить(); Если НЕ Результат.Пустой() Тогда Сообщить("Группа с таким наименованием уже есть!"); Отказ=Истина; КонецЕсли; КонецЕсли; |
|||
18
kosts
29.11.13
✎
10:16
|
А в чем проблема то. Это же наверное редкое событие, запись группы с совпадающим наименованием. Пусть себе появляется предупреждение...
Забей. Лучше определи как сказали возможность переименовать существующий |
|||
19
mzelensky
29.11.13
✎
10:17
|
(0) Еще небось и в модуле формы это делаете... :(
|
|||
20
Kupogun
29.11.13
✎
10:19
|
где фото?
|
|||
21
kosts
29.11.13
✎
10:19
|
(19) а почему бы и нет зависит от общей задачи
|
|||
22
mzelensky
29.11.13
✎
10:21
|
(21) Потому что это ЛАЖА! Получается разное поведение в зависимости от того, откуда записывается справочник.
|
|||
23
mzelensky
29.11.13
✎
10:22
|
(20) Что-то я смотрю на форуме прям наплыв женской части начеления...и все без фото...
Даже не знаю - радоваться или опечалиться. |
|||
24
stix2010
29.11.13
✎
10:23
|
это бородатые админы
|
|||
25
mzelensky
29.11.13
✎
10:26
|
(24) Судя по вопросам очень может быть
|
|||
26
stix2010
29.11.13
✎
10:26
|
Запрос.УстановитьПараметр("Наименование", <<?>>Наименование); (Проверка: Сервер)
Это чо УФ? Не знать, что такое подписки стыдно на сегодня, Общие-> подписки и события |
|||
27
kosts
29.11.13
✎
10:29
|
(22) И че. Это не документ, что бы по разному проводиться. Часть реквизитов проверяем в форме, часть в объекте, зависит от задачи и целей.
|
|||
28
mzelensky
29.11.13
✎
10:31
|
(27) Извините, коллега, но вынужден не согласиться.
|
|||
29
stix2010
29.11.13
✎
10:42
|
(17) у Вас методы объектов + видимость не выполняются/видятся скорее всего по причине отсутствия основного реквизита объекта в данной форме
(28) с точки зрения кошерности кода при поставленных условиях я бы проверял в подписке ПередЗаписью |
|||
30
kosts
29.11.13
✎
10:43
|
(28) Немного изменим изначальную задачу, скажем, нужно предупредить пользователя о существовании совпадающего элемента и выдать подтверждение записи. Как через модуль объекта это сделать?
|
|||
31
Рэйв
29.11.13
✎
10:45
|
(10)Сделай код строковым и подставляй его вместо наименования.Система сама будет следить за уникальностью .
|
|||
32
stix2010
29.11.13
✎
10:53
|
(30) Хы, а что нельзя?
Что мешает в модуле объекта Вопрос() использовать? Хотя за такое руки надо сразу отрывать, потому как метод в транзакции идет. Хотя при Отказ=истина, второе сообщение так и останется |
|||
33
zakidonoff
29.11.13
✎
10:54
|
(0) Сообщить(Не удалось записать:""Группа!""");
Тогда предупреждением будет: не удалось записать, а в строке - почему не удалось. Или УФ? |
|||
34
ЧайнаяРоза
29.11.13
✎
20:17
|
Всем спасибо за ответы!
Проблема решена! В форме объекта написала процедуру: &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Отказ=НЕ (Справочники.Группа.ПустаяСсылка()=Справочники.Группа.НайтиПоНаименованию(СокрЛП(Объект.Наименование),Истина)); Если Отказ=Истина Тогда Сообщить("Группа с таким наименованием уже есть!"); КонецЕсли; КонецПроцедуры |
|||
35
Мимохожий Однако
29.11.13
✎
21:01
|
Вместо НЕ Справочники.Группа.ПустаяСсылка()=Справочники.Группа.НайтиПоНаименованию(СокрЛП(Объект.Наименование)
логичнее использовать НЕ Справочники.Группа.НайтиПоНаименованию(СокрЛП(Объект.Наименование) = Неопределено ... так в СП |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |