helpf.pro
Регистрация
 +1 
Распечатать

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

В 7.7 Откройте Справочник Контрагенты - Форма Элемента, двойным щелчком по полю ИНН, на закладке Дополнительно в поле формула введите ПроверкаИНН()
И в Модуль добавьте процедуру ПроверкаИНН()
Код 1C v 7.x
 Процедура ПроверкаИНН() 
СпрКонтрагенты = СоздатьОбъект("Справочник.Контрагенты");
Если СпрКонтрагенты.НайтиПоРеквизиту("ИНН",ИНН,1) = 1 Тогда
Предупреждение("Найден контрагент с таким же ИНН :"+РазделительСтрок+Строка(СпрКонтрагенты.Код)+" - "+Строка(СпрКонтрагенты));
КонецЕсли;
КонецПроцедуры


В 8- ой версии, откройте Справочник Контрагенты - Форму Элемента, двойным щелчком по полю ИНН, в событиях ПриИзменении введите ПроверкаИНН()
И в Модуль добавьте процедуру ПроверкаИНН()
Код 1C v 8.х
 Процедура ПроверкаИНН() 
СпрКонтрагенты = Справочники.Контрагенты;
Если СпрКонтрагенты.НайтиПоРеквизиту("ИНН",ИНН) Тогда
Предупреждение("Найден контрагент с таким же ИНН :"+РазделительСтрок+Строка(СпрКонтрагенты.Код)+" - "+Строка(СпрКонтрагенты));
КонецЕсли;
КонецПроцедуры


Теперь при вводе ИНН происходит проверка, если Контрагент с таким ИНН уже есть в базе, то выдается Предупреждение!

Код 1C v 8.2 УП
 СпрКонтрагенты = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН",Запись.ИНН);
Если Не СпрКонтрагенты=Справочники.Контрагенты.ПустаяСсылка() Тогда
Предупреждение("Найден контрагент с таким же ИНН : "+Строка(СпрКонтрагенты.Код)+" - "+Строка(СпрКонтрагенты));
КонецЕсли;
Разместил:   Версии: | 7.x | 8.x | 8.2 УП |  Дата:   Прочитано: 32049
 +1 
Распечатать
Возможно, вас также заинтересует
COM-соединение не обнаружило свободной лицензии / ключ защиты 0
Иногда при подключении к 1С возникает ошибка: COM-соединение не обнаружило свободной лицензии! COM-соединение не обнаружило ключ защиты программы! https://helpf.pro/uploads/img/_1-UsuyAg6E2P.jpg В таких случаях, иногда, может помочь следующий с
Google maps, поиск оптимального маршрута 5
В данном посте хочу коснуться основных аспектов построения оптимального маршрута с использованием API Google maps. Исходные данные для построения маршрута: * Географические координаты объектов, которые хранятся в базе; * Координаты начальной и коне
Ввод договоров ГПХ в ЗУП (счет 76) 9
Часто меня спрашивают: Как правильно отразить договор ГПХ в ЗУП? Ниже небольшая, последовательная инструкция: Прием на работу Сведения о физическом лице, выполняющем работы по договору подряда, должны быть внесены в справочник Сотрудники организ
Загрузка данных в 1С из PDF 5
В данной статье описан пример реализации загрузки данных накладных из PDF файлов для одного крупного Ритейла... И так у Нас есть несколько файлов в формате pdf, которые нам необходимо загрузить в 1С. Чтение PDF файлов из 1С Первым дело я стал
Загрузка данных из XML файла в Таблицу Значений и вывод в Табличный документ 1
Перем ИмяПути,ИмяФайла; Перем xmlParser; //пример чтения xml файла. Функция УстановитьКомпоненту() Если ЗагрузитьВнешнююКомпоненту(КаталогИБ()+" ExtFormsv7plus.dll" )=0 Тогда Если ЗагрузитьВнешнююКомпоненту(" v7plus.dll" )=0 Тогда Сообщит
Посмотреть все результаты поиска похожих
Комментарии
all4cf
28.05.2017 21:00Комментарий: 5
all4cf

Еще вариант проверки ИНН на дубли для 1С 8.3

Код 1C v 8.3
 // Проверка осуществляется только для контрагентов с заполненным ИНН и КПП
Если Не ЗначениеЗаполнено(Источник.ИНН) ИЛИ Не ЗначениеЗаполнено(Источник.КПП) Тогда
Возврат;
КонецЕсли;

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
| ПРЕДСТАВЛЕНИЕ(Контрагенты.Код) КАК Код,
| ПРЕДСТАВЛЕНИЕ(Контрагенты.КПП) КАК КПП
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ИНН =ИНН
| И Контрагенты.КПП =КПП";

Если Не Источник.ЭтоНовый() Тогда
Запрос.Текст = Запрос.Текст + "
|И Контрагенты.Ссылка <>ссылкаТекущийКонтрагент";
КонецЕсли;

Запрос.УстановитьПараметр("ИНН", Источник.ИНН);
Запрос.УстановитьПараметр("КПП", Источник.КПП);
Запрос.УстановитьПараметр("ссылкаТекущийКонтрагент", Источник.Ссылка);

РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
ТекстСообщения = "Существуют контрагенты с таким же ИНН/КПП ("+Источник.ИНН+"/"+Источник.КПП+"). Их коды:";
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ТекстСообщения = ТекстСообщения + Символы.ПС + ВыборкаДетальныеЗаписи.Код; 
КонецЦикла;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ТекстСообщения;
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
E_Migachev
23.12.2009 18:47Комментарий: 4
E_Migachev
Хороший пример с запросом!
А у себя я использую следующую конструкцию, в процедуру ПередЗаписью Элемента справочника контрагенты добавляю:
Код 1C v 8.х
 Процедура ПередЗаписью(Отказ)
если ЭтоНовый() тогда
если (ПустаяСтрока(ОКПО)) или (ПустаяСтрока(КПП)) или (ПустаяСтрока(ИНН)) тогда
предупреждение("Не указано ОКПО или ИНН или КПП!");
Отказ=истина;
иначе
РезультатПоиска = Справочники.Контрагенты.НайтиПоРеквизиту("ОКПО", СокрЛП(ОКПО));
Если не результатПоиска.Пустая() Тогда
Предупреждение(" Контрагент с таким кодом ОКПО уже существует!
| Контрагент - "+ результатПоиска.Наименование+ " код - "+результатПоиска.Код+"!
| Сохранить невозможно! Если вы уверены, что введенная информация верна, и контрагент
| не совпадает с уже введенным "+ результатПоиска.Наименование+ " обратитесь в отдел Безопасности!");
отказ=истина;
//Запишем это в журнал регистрации, вдруг потом понадобится.
ЗаписьЖурналаРегистрации("Контрагент совпадает",УровеньЖурналаРегистрации.Информация,,,"Контрагент ("+Наименование+") с таким кодом ОКПО уже существует! Контрагент - "+ результатПоиска.Наименование+ " код - "+результатПоиска.Код);
КонецЕсли;
конецесли;
конецесли;
КонецПроцедуры

Здесь проверка идет на совпадение ОКПО, т.к ИНН у контрагентов может совпадать!
IKSparrow
23.12.2009 14:07Комментарий: 3
IKSparrow
Вот как то так:
Код 1C v 8.х
 
Функция ПроверкаИНН(ИНН)
ЗапросКонтрагентов = Новый Запрос;
ЗапросКонтрагентов.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| Контрагенты.ИНН
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ИНН = &ИНН";
ЗапросКонтрагентов.УстановитьПараметр("ИНН",ИНН);
РезультатВыполненияЗапроса = ЗапросКонтрагентов.Выполнить();

// Если возвращает Истину - значит уже есть контрагент в базе с таким же ИНН
// Если возвращает Ложь - значит нет контрагента в базе с таким ИНН
Возврат РезультатВыполненияЗапроса.Пустой();
КонецФункции
IKSparrow
23.12.2009 14:01Комментарий: 2
IKSparrow
И кстати, в восьмёрочном коде, вторая строка лишняя
Код 1C v 8.х
 СпрКонтрагенты = Справочники.Контрагенты;   

Ведь можно же сразу использовать конструкцию:
Код 1C v 8.х
 Справочники.Контрагенты.НайтиПоРеквизиту();   

Или я чего то не понял? )
IKSparrow
23.12.2009 13:56Комментарий: 1
IKSparrow
А разве за подобное не дают по рукам на экзамене, да и вообще при реализации в коде? В самый раз тут использовать запрос. По этому причине, надо бы привести вариант и с запросом.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.