Проверка ИНН при вводе нового контрагента

Новая тема
Показывать по 10 20 40 сообщений
бывает, что задвоение (троение и т.д.) контриков так "достанет", что на все согласен! :-) Будем надеяться, что у них мысли и "задерживаются".
Ну я бы такой вариант рассматривал только в крайней необходимости, когда уже совсем нет возможности внести изменения в конфигурацию (одну подписку на событие и один общий модуль).
согласен, тем более, что увеличивать код все равно в конфигураторе.
"Что-то я тут с Вами совсем запутался :)

Есть же реквизит - ИНН.
Он заполняется - и при записи нужно проверить его уникальность. По моему, суть в том, как его проверить.
Запросом получаем все ИНН-ы, это понятно. А вот как получить свежевведенное значение?

По моему, примерно так:
Запрос = Новый запрос;
Запрос.Текст = .......
// тут мы получили все записанные ИНН , присвоив псевдоним, например, ИНН2
А дальше что-то вроде:
Если Справочники.ИНН = ВЫборка.ИНН2 Тогда
Сообщить("Запись невозможно, бла-бла-бла")
И отказ при записи
Иначе
записываем документ
КонецПроцедуры;

Как Вам?"
это не ко мне
Плохо!
Ладно, всем спасибо, я буду думать
"Вот реально работающий обработчик события "ПередЗаписью", обеспечивающий уникальность комбинации ИНН/КПП/ОКПО :


Процедура XXX_ПриСозданииКонтрагентаПередЗаписью(Источник, Отказ) Экспорт
 Если Источник.ЭтоГруппа тогда
   возврат;
 КонецЕсли;


 //Проверка уникальности ИНН/КПП/ОКПО
 Запрос = Новый Запрос;
 Запрос.Текст = "ВЫБРАТЬ
   |  Контрагенты.Ссылка КАК Контрагент
   |ИЗ
   |  Справочник.Контрагенты КАК Контрагенты
   |ГДЕ
   |  Контрагенты.КодПоОКПО = &ВыбКодПоОКПО
   |  И Контрагенты.ИНН = &ВыбИНН
   |  И Контрагенты.КПП = &ВыбКПП
   |  И Контрагенты.Ссылка <> &ВыбКонтрагент";


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


 ИННКППОКПОНеУникальный = Выборка.Следующий();






 #Если Клиент Тогда
   Если (ИННКППОКПОНеУникальный) и (Источник.ЭтоНовый()) тогда
     Режим = РежимДиалогаВопрос.ДаНет;
     Ответ = Вопрос("Контрагент с таким ИНН, КПП и ОКПО уже существует! Вы действительно хотите записать ещё один?",Режим,60,КодВозвратаДиалога.Нет);
     Если Ответ = КодВозвратаДиалога.Нет тогда
       отказ = истина;
       возврат;
     КонецЕсли;
   КонецЕсли;
 #КонецЕсли


 Если ИННКППОКПОНеУникальный тогда
   Если ПустаяСтрока(Источник.Код) Тогда
     Источник.УстановитьНовыйКод();
   КонецЕсли;
   Источник.КодПоОКПО = Источник.Код;
 КонецЕсли;
 Если ПустаяСтрока(Источник.ИНН) И ПустаяСтрока(Источник.КПП) И ПустаяСтрока(Источник.КодПоОКПО) Тогда
   Если ПустаяСтрока(Источник.Код) Тогда
     Источник.УстановитьНовыйКод();
   КонецЕсли;
   Источник.КодПоОКПО = Источник.Код;
 КонецЕсли;
КонецПроцедуры
"
Работает? Проверял?
А если есть контрагент с ИНН и КПП, а ОКПО не заполнен, тогда что?
Тогда в КодОКПО сохраняется код элемента справочника (который неуникальным сделать достаточно непросто).
Читают тему
(гостей: 1)

Быстрый переход