Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Обсуждение к заданию: 1c 7.7 ТиС ред.9.2 Проверка уникальности артикула.

    • #1
    • 18.11.2014 09:15
    0
    Необходимо сделать так, что бы при создании новой номенклатуры проверялся артикул на уникальность  Подробнее>>
    • #2
    • 18.11.2014 09:34
    0
    Вот корявый, но рабочий код, размещенный ПриЗаписи()
    Делал лет 10 назад, когда начинал программировать в 1С
    		Если ПустоеЗначение(Арт)=0 Тогда
    			ПрНом=СоздатьОбъект("Справочник.Номенклатура"); 
    			ПЦ=1;
    			Для п=1 По ПЦ Цикл
    			    Если ПрНом.НайтиПоРеквизиту("Арт",Арт,1)=1 Тогда
    					//Если ПрНом.Код=ТекущийЭлемент().Код Тогда
                                               Если ПрНом.Код=Код Тогда
    						ПЦ=ПЦ+1;
    					Иначе
    						Сообщить("Номенклатура с таким артикулом уже существует!!!");
    			        	СтатусВозврата(0);
    						Возврат;
    					КонецЕсли;	
    			    КонецЕсли;
    			КонецЦикла;	
    		КонецЕсли;
    


    можно конечно же сделать через ВыбратьЭлементы() и перебор
    но быстрее, лучше и красивее будет если переложить процедуру в Прямой запрос типа
    	ПрЗапрос = СоздатьОбъект("ПрямойЗапрос");	
    	ТекстЗапроса = "
    	|ВЫБРАТЬ
    	|	$СпрТов.ТекущийЭлемент [Товар $Справочник.Номенклатура]	
    	|ИЗ 
    	|	Справочник.Номенклатура КАК СпрТов $nolock
    	|ГДЕ	
    	//|	СпрТов.Арт ПОДОБНО :смАрт
    	|	СпрТов.Арт =:смАрт
    	|";
    	
    	
            //вариант для частичного совпадения
    	//ПрЗапрос.УстановитьТекстовыйПараметр("смАрт", "%" + СокрЛП(Арт) + "%");
    	
           //для полного совпадения
             ПрЗапрос.УстановитьТекстовыйПараметр("смАрт", СокрЛП(Арт));
    	ТЗТов = прЗапрос.Выполнить("ТаблицаЗначений", ТекстЗапроса);	
    

    а дальше проверяй на количество строк в таблице
    • #3
    • 18.11.2014 12:59
    0
    Umix
    но быстрее, лучше и красивее будет если переложить процедуру в Прямой запрос типа


    коллега, если вызвались помочь, то тогда уже делайте это до конца....
    почему не написали, что в этом случае нужно подключать дополнительную библиотеку 1СPP.dll с классом "ПрямойЗапрос" ?
    в противном случае, автор поста может сильно удивиться, когда 1С не найдет объекта "ПрямойЗапрос" у себя в "кладовочке" ;)
Яндекс-директ
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться