Проблема с записью элемента справочника
23.06.2004
11:57
#1
Здравствуйте, коллеги! Как можно средствами языка 1С осуществить проверку на уникальность наименования или другого реквизита справочника при записи? Т.е. в случае, если такое наименование уже есть в справочнике, выдавалось бы сообщение типа "Такое наименование уже есть в справочнике".
Заранее спасибо.
Заранее спасибо.
24.06.2004
09:03
#4
"ЗАДАЧА: Есть справочник телефонных номеров, необходимо организовать контроль за вводом номеров, чтобы избежать дублей.
РЕШЕНИЕ:
1. В предопределенной процедуре формы элемента справочника ПриОткрытии() пишем:
Если ПустоеЗначение(Наименование) = 1 Тогда
ПроверятьДубль = 1;
КонецЕсли;
Это для того, чтобы проверка не включалась в случае, если мы просто открываем существующий элемент справочника, а потом его сохраняем. Если не сделать такой проверки, то всегда при сохранении существующего элемента справочника будет выдаваться сообщение "Такой номер уже есть" и т.д.
2. В предопределенной процедуре элемента справочника ПриЗаписи() пишем:
Если ПроверятьДубль = 1 Тогда
Если ПроверкаДублей(Наименование) = 1 Тогда
Сообщить("Такой номер телефона уже имеется в базе");
Наименование = """";
СтатусВозврата(0);
КонецЕсли;
КонецЕсли;
Ну здесь вроде все понятно без комментариев. А функция ПроверкаДублей() выглядит так:
спр = СоздатьОбъект("Справочник.ТелефонныеНомера");
спр.ВыбратьЭлементы();
Если спр.НайтиПоНаименованию(Телефон) = 1 Тогда
Возврат 1;
Иначе
Возврат 0;
КонецЕсли;
Ничего сложного:)) Тут есть один нюанс, но т.к. в моей задаче такой ситуации не возникнет, я не стал делать дополнительные проверки, хотя, это не совсем правильно - нужно по максимуму все предусматривать и поддерживать логическую целостность независимо от того, кто работает с программой. Обязательно допишу чуть позже. С удовольствием посмотрю любой другой способ(-ы)
Один из простейших способов - сделать номер телефона кодом, тогда будет автоматическая проверка на уникальность, но в моей задаче так не получится. Мне нужно именно наименование. Специфика такая
))"
РЕШЕНИЕ:
1. В предопределенной процедуре формы элемента справочника ПриОткрытии() пишем:
Если ПустоеЗначение(Наименование) = 1 Тогда
ПроверятьДубль = 1;
КонецЕсли;
Это для того, чтобы проверка не включалась в случае, если мы просто открываем существующий элемент справочника, а потом его сохраняем. Если не сделать такой проверки, то всегда при сохранении существующего элемента справочника будет выдаваться сообщение "Такой номер уже есть" и т.д.
2. В предопределенной процедуре элемента справочника ПриЗаписи() пишем:
Если ПроверятьДубль = 1 Тогда
Если ПроверкаДублей(Наименование) = 1 Тогда
Сообщить("Такой номер телефона уже имеется в базе");
Наименование = """";
СтатусВозврата(0);
КонецЕсли;
КонецЕсли;
Ну здесь вроде все понятно без комментариев. А функция ПроверкаДублей() выглядит так:
спр = СоздатьОбъект("Справочник.ТелефонныеНомера");
спр.ВыбратьЭлементы();
Если спр.НайтиПоНаименованию(Телефон) = 1 Тогда
Возврат 1;
Иначе
Возврат 0;
КонецЕсли;
Ничего сложного:)) Тут есть один нюанс, но т.к. в моей задаче такой ситуации не возникнет, я не стал делать дополнительные проверки, хотя, это не совсем правильно - нужно по максимуму все предусматривать и поддерживать логическую целостность независимо от того, кто работает с программой. Обязательно допишу чуть позже. С удовольствием посмотрю любой другой способ(-ы)
Один из простейших способов - сделать номер телефона кодом, тогда будет автоматическая проверка на уникальность, но в моей задаче так не получится. Мне нужно именно наименование. Специфика такая
Читают тему
(гостей: 1)