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