ОБСУЖДЕНИЕ

Помогите с кодом!

7 ответов 6,2 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Вот есть такой кусок кода. Надо дописать чтоб программа не давала записывать данные если ИНН повторяется! Как это сделать???

// Список найденных элементов с таким же ИНН.
Список = СоздатьОбъект("СписокЗначений");

Объект = СоздатьОбъект("Справочник.ЮрЛица");
Объект.ВыбратьЭлементыПоРеквизиту("ИНН", ИНН, 0, 1);

// Поиск элементов с таким же ИНН.
Пока Объект.ПолучитьЭлемент(1) = 1 Цикл
Если Объект.ТекущийЭлемент() = ТекущийЭлемент() Тогда
Возврат; // элемент уже был записан
Иначе
Список.ДобавитьЗначение(Объект.ТекущийЭлемент());
КонецЕсли;
КонецЦикла;

// Найдены элементы с таким же ИНН.
Если 0 < Список.РазмерСписка() Тогда
Стр = "В справочнике """+Объект.ПредставлениеВида()+""" уже есть элементы с таким же ИНН1111!";

КонецЕсли;

КонецПроцедуры // ПриИзмененииИНН()
 
Реально работающий кусок кода:
Код:
Процедура ПриЗаписи()
Если Константа.КонтрольИНН=Перечисление.ДаНет.Да Тогда
Спр = СоздатьОбъект ("Справочник.Контрагенты"); 
Если ПустоеЗначение(ИНН)=1 Тогда 
Предупреждение("Пустой ИНН");
СтатусВозврата(0);
Иначе 
Спр.ВыбратьЭлементыПоРеквизиту("ИНН",ИНН,0,0);
Пока Спр.ПолучитьЭлемент()=1 Цикл 
Если Спр.Код=Код Тогда
Продолжить;
КонецЕсли; 
Предупреждение("Не уникальный ИНН!");
СтатусВозврата(0); 
КонецЦикла;
КонецЕсли;
КонецЕсли;

КонецПроцедуры //ПриЗаписи
 
Народ может вам и нравиться работать с циклами и переборами, мне например больше по душе поставить признак отбор по реквизиту и написать такой вот код

Код:
спр = создатьобъект("Справочник.Контрагенты");
если спр.найтипореквизиту("ИНН",ИНН) = 1 тогда
..... ругнуться по неуникальности!!!
статусвозврата(0);
конецЕсли;
 
Надо чтоб он после того как ругнулся на неуникальность ИНН===> очистил это поле или не дал сохранить результат!!!
 
Народ может вам и нравиться работать с циклами и переборами, мне например больше по душе поставить признак отбор по реквизиту и написать такой вот код
Честно скажу, код не мой, знаю только, что работает, сам таким вопросом задался, пока постил... но разбираться времени небыло. (первое правило программиста: работает, не трогай :) )
Надо чтоб он после того как ругнулся на неуникальность ИНН===> очистил это поле или не дал сохранить результат!!!
он так и делает, при попытке записать элемент


PS: а, ну да, не очищает только

PPS: но это, думаю, не будет проблемой самому реализовать? )))

PPPS: Typhoon переборка для того, чтобы себя (текущий элемент) была возможность пропустить, вот :)
 
По поводу не будет проблеммой самому реализовать===> Покопался в книжках не могу найти с помощь какого оператора это сделать, ВОТ!!!!
Если Кто знает подскажите!!!!
 
По поводу не будет проблеммой самому реализовать===> Покопался в книжках не могу найти с помощь какого оператора это сделать, ВОТ!!!!
Если Кто знает подскажите!!!!
Свой код проверки ставишь в процедуре ПриЗаписи
А для отмены действия (записи) пиши
СтатусВозврата (0)
Для очищения ИНН напиши
ИНН=""; (иль как у тебя реквизит там называется.... :) )
пример тебе уже приводили
 
Спасибо помогло!!! ))))