Проверка на дубликты

1. B3avi5 28.07.15 10:54 Сейчас в теме
Как можно в справочнике запретить создавать документы с одним и тем же наименованием?
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. NewYork 28.07.15 11:04 Сейчас в теме
Вы контекст вашей разработки расскажите подробнее
3. B3avi5 28.07.15 11:31 Сейчас в теме
(2) NewYork, просто справочник с нами планов закупок, наименование - Это план закупок, мне надо чтоб они не заводили 2 одинаковых
4. MyPuK_OLD 28.07.15 11:34 Сейчас в теме
(3) B3avi5, Вероятнее всего, надо добавить проверку на наличие аналогичного наименования ПередЗаписью нового элемента справочника.
5. B3avi5 28.07.15 11:41 Сейчас в теме
(4) MyPuK_OLD, Оно понятно ))))), вопрос как это написать
6. vdenu 28.07.15 12:13 Сейчас в теме
Вам код нужен или пояснение? Выбираете (запросом ли, по объектам ли) все элементы справочника и сверяете наименования. Лучше запросом, т.к. наименование можно установить параметром запроса. Если есть хотя бы один элемент, то Отказ = Истина и всё.
7. B3avi5 28.07.15 13:12 Сейчас в теме
(6) vdenu, Не могу сообразить, можете дать пример кода?
8. dvm1 28.07.15 14:04 Сейчас в теме
Примерно так:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|	ВашСправочник.Ссылка
|ИЗ
|	Справочник.ВашСправочник КАК ВашСправочник
|ГДЕ
|	ВашСправочник.Наименование = &Наименование";
	
Запрос.УстановитьПараметр("Наименование", Наименование);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
	Отказ = Истина;
КонецЕсли;
Показать
B3avi5; vdenu; +2 Ответить
9. B3avi5 28.07.15 15:38 Сейчас в теме
(8) dvm1, походу я чтото очень не так делаю

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

Запрос.УстановитьПараметр("Наименование", Наименование); 
Результат = Запрос.Выполнить(); 
Если НЕ Результат.Пустой() Тогда 
Отказ = Истина; 
КонецЕсли;

КонецПроцедуры
Показать


Ошибка
{Справочник.ПланЗакупок.Форма.ФормаЭлемента.Форма(5,16)}: Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
11. dvm1 28.07.15 16:40 Сейчас в теме
(9) B3avi5, в модуль объекта код вставлять нужно
12. Чарик 2 28.07.15 17:01 Сейчас в теме
(9) B3avi5, вставляй в свою программку и пользуй:
&НаСервереБезКонтекста
Функция ПоискДублей(Парам)
	
	Запрос = Новый Запрос; 
	Запрос.Текст = 
		"ВЫБРАТЬ 
		|    ПланЗакупок.Ссылка 
		|ИЗ 
		|    Справочник.ПланЗакупок КАК ПланЗакупок 
		|ГДЕ 
		|    ПланЗакупок.Наименование = &Наименование"; 

	Запрос.УстановитьПараметр("Наименование", Парам); 
	
	Результат = Запрос.Выполнить(); 
	
	Возврат Результат.Пустой();
	
КонецФункции

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	//только для новых элементов!
	//иначе будет ругаться на сохранение изменненых
        //или менять проверку
	Если Объект.Ссылка.Пустая() Тогда
				
		Отказ = ПоискДублей(Наименование);
		
	КонецЕсли;
КонецПроцедуры
Показать
14. B3avi5 29.07.15 08:59 Сейчас в теме
(12) Чарик, Что-то пошло не так ))
Все наоборот, дубль он создать дает а новый объект нет ))))
15. Чарик 2 29.07.15 15:41 Сейчас в теме
(14) B3avi5, в спешке "не" пропустил)))
замени строку:
 Возврат Результат.Пустой();

на:
 Возврат НЕ Результат.Пустой();

мог бы и сам додумать)))))
10. Чарик 2 28.07.15 16:10 Сейчас в теме
выноси проверку с запросом на сервер, запрос не работает на клиенте!
13. e2_shmidt 28.07.15 20:40 Сейчас в теме
В конфе есть проверка уникальности контрагента по инн и документов по рег.номеру. Можете оттуда взять.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот