Проверка ИНН при вводе нового контрагента
22.06.2011
11:19
#21
бывает, что задвоение (троение и т.д.) контриков так "достанет", что на все согласен!
Будем надеяться, что у них мысли и "задерживаются".
22.06.2011
11:23
#22
Ну я бы такой вариант рассматривал только в крайней необходимости, когда уже совсем нет возможности внести изменения в конфигурацию (одну подписку на событие и один общий модуль).
22.06.2011
12:16
#24
"Что-то я тут с Вами совсем запутался 
Есть же реквизит - ИНН.
Он заполняется - и при записи нужно проверить его уникальность. По моему, суть в том, как его проверить.
Запросом получаем все ИНН-ы, это понятно. А вот как получить свежевведенное значение?
По моему, примерно так:
Запрос = Новый запрос;
Запрос.Текст = .......
// тут мы получили все записанные ИНН , присвоив псевдоним, например, ИНН2
А дальше что-то вроде:
Если Справочники.ИНН = ВЫборка.ИНН2 Тогда
Сообщить("Запись невозможно, бла-бла-бла")
И отказ при записи
Иначе
записываем документ
КонецПроцедуры;
Как Вам?"
Есть же реквизит - ИНН.
Он заполняется - и при записи нужно проверить его уникальность. По моему, суть в том, как его проверить.
Запросом получаем все ИНН-ы, это понятно. А вот как получить свежевведенное значение?
По моему, примерно так:
Запрос = Новый запрос;
Запрос.Текст = .......
// тут мы получили все записанные ИНН , присвоив псевдоним, например, ИНН2
А дальше что-то вроде:
Если Справочники.ИНН = ВЫборка.ИНН2 Тогда
Сообщить("Запись невозможно, бла-бла-бла")
И отказ при записи
Иначе
записываем документ
КонецПроцедуры;
Как Вам?"
23.06.2011
14:25
#28
"Вот реально работающий обработчик события "ПередЗаписью", обеспечивающий уникальность комбинации ИНН/КПП/ОКПО :
Процедура XXX_ПриСозданииКонтрагентаПередЗаписью(Источник, Отказ) Экспорт
Если Источник.ЭтоГруппа тогда
возврат;
КонецЕсли;
//Проверка уникальности ИНН/КПП/ОКПО
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Контрагенты.Ссылка КАК Контрагент
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.КодПоОКПО = &ВыбКодПоОКПО
| И Контрагенты.ИНН = &ВыбИНН
| И Контрагенты.КПП = &ВыбКПП
| И Контрагенты.Ссылка <> &ВыбКонтрагент";
Запрос.УстановитьПараметр("ВыбКодПоОКПО",Источник.КодПоОКПО);
Запрос.УстановитьПараметр("ВыбИНН",Источник.ИНН);
Запрос.УстановитьПараметр("ВыбКПП",Источник.КПП);
Запрос.УстановитьПараметр("ВыбКонтрагент",Источник.Ссылка);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
ИННКППОКПОНеУникальный = Выборка.Следующий();
"
#Если Клиент Тогда
Если (ИННКППОКПОНеУникальный) и (Источник.ЭтоНовый()) тогда
Режим = РежимДиалогаВопрос.ДаНет;
Ответ = Вопрос("Контрагент с таким ИНН, КПП и ОКПО уже существует! Вы действительно хотите записать ещё один?",Режим,60,КодВозвратаДиалога.Нет);
Если Ответ = КодВозвратаДиалога.Нет тогда
отказ = истина;
возврат;
КонецЕсли;
КонецЕсли;
#КонецЕсли
Если ИННКППОКПОНеУникальный тогда
Если ПустаяСтрока(Источник.Код) Тогда
Источник.УстановитьНовыйКод();
КонецЕсли;
Источник.КодПоОКПО = Источник.Код;
КонецЕсли;
Если ПустаяСтрока(Источник.ИНН) И ПустаяСтрока(Источник.КПП) И ПустаяСтрока(Источник.КодПоОКПО) Тогда
Если ПустаяСтрока(Источник.Код) Тогда
Источник.УстановитьНовыйКод();
КонецЕсли;
Источник.КодПоОКПО = Источник.Код;
КонецЕсли;
КонецПроцедуры
Читают тему
(гостей: 1)