Имя: Пароль:
1C
1С v8
Проверка уникальности наименования в справочнике
0 Масянька
 
23.04.12
12:45
День добрый!
Вопрос: справочник (самописный). Нужно проверять уникальность наименования. Засунула запрос в ПередЗаписью(). Столкнулась с тем, что при редактировании - не дает записать. Получается, что нужно обязательно делать проверку на новый.
Или может есть какой-то более простой путь?
Спасибо.
1 Ненавижу 1С
 
гуру
23.04.12
12:46
(0) проверить на уникальность среди записей не равных данной ссылки
2 ILM
 
гуру
23.04.12
12:51
(0) Если только наименование, то после ввода поле наименование.

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


Заменила "=" на "<>". Теперь пишет все подряд....
4 Wobland
 
23.04.12
12:55
Если Запрос.Выполнить().Пустой() - ну как-то элегантней что-ли ;)
5 Ненавижу 1С
 
гуру
23.04.12
12:55
ЗапросПоДублям.Текст =  
"ВЫБРАТЬ
|    Теплоходы.Наименование,
|    Теплоходы.Примечание
|ИЗ
|    Справочник.элТеплоходы КАК Теплоходы
|ГДЕ
|    Теплоходы.Наименование = &Наименование
|И   Теплоходы.Ссылка<>&Ссылка;
   
ЗапросПоДублям.УстановитьПараметр("Наименование", Наименование);
ЗапросПоДублям.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапросаПоДублям     = ЗапросПоДублям.Выполнить();
6 Масянька
 
23.04.12
13:02
(4) Спасибо!
(5) При редактировании не дает записать....
7 Масянька
 
23.04.12
13:09
(5) Извини :) Чуть не доглядела :))) Работает!!!!!!

PS Мужчины! Всем спасибо!!!!!!!!!!!!!
2 + 2 = 3.9999999999999999999999999999999...