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

Проверка на дублирование контрагентов по ИНН и КПП

Часто клиенты просят включить при записи контрагента проверку на дублирование, в некоторых конфигурациях это встроенный функционал, а если этого нет, то:

1. Создаем общий модуль

и помещаем в него процедуру:

Код 1C v 8.3
 //Проверка ИНН на дублирование
Процедура ЗапретДублированияКонтрагентовОбработкаПроверкиЗаполнения(ИНН, КПП, Источник, Отказ) Экспорт
	
 	// Проверка осуществляется только для контрагентов с заполненным ИНН и КПП
	Если Не ЗначениеЗаполнено(ИНН) ИЛИ Не ЗначениеЗаполнено(КПП) Тогда
		Возврат;
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ПРЕДСТАВЛЕНИЕ(Контрагенты.Код) КАК Код,
		|	Контрагенты.Наименование,
		|	ПРЕДСТАВЛЕНИЕ(Контрагенты.КПП) КАК КПП
		|ИЗ
		|	Справочник.Контрагенты КАК Контрагенты
		|ГДЕ
		|	Контрагенты.ИНН =ИНН
		|	И Контрагенты.КПП =КПП";
	
	Если Не ЗначениеЗаполнено(Источник) Тогда
		Запрос.Текст = Запрос.Текст + "
		|И Контрагенты.Ссылка <>ссылкаТекущийКонтрагент";
	КонецЕсли;
	Запрос.УстановитьПараметр("ссылкаТекущийКонтрагент", Источник);
	Запрос.УстановитьПараметр("ИНН", ИНН);
	Запрос.УстановитьПараметр("КПП", КПП);
		
	РезультатЗапроса = Запрос.Выполнить();
	Если Не РезультатЗапроса.Пустой() Тогда
		ТекстСообщения = "ВНИМАНИЕ! Существуют контрагенты с таким же ИНН/КПП ("+ИНН+"/"+КПП+"):";
		ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
		Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
			ТекстСообщения = ТекстСообщения + Символы.ПС + Строка(ВыборкаДетальныеЗаписи.Код)+" "+ Строка(ВыборкаДетальныеЗаписи.Наименование); 
		КонецЦикла;
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = ТекстСообщения;
		Сообщение.Сообщить();
		Отказ = Истина;
	КонецЕсли;  
КонецПроцедуры   

2. в форме контрагента в процедуру перед записью добавляем:

Код 1C v 8.3
 Процедура ПередЗаписью(Отказ)
	
	мЭтоНовый = ЭтоНовый();
	мИНН = Ссылка.ИНН;
	
	Если ОбособленноеПодразделение И ЗначениеЗаполнено(ГоловнойКонтрагент) И ГоловнойКонтрагент <> Ссылка Тогда
		ИНН = ГоловнойКонтрагент.ИНН;
	КонецЕсли;
	//all4cf проверка на дубли
	all4cf.ЗапретДублированияКонтрагентовОбработкаПроверкиЗаполнения(ИНН, КПП, Ссылка, Отказ);	
	
КонецПроцедуры // ПередЗаписью()   

Результат:

Разместил:   Версии: |  Дата:   Прочитано: 14256
 +1 
Распечатать
Возможно, вас также заинтересует
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 53
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
COM-подключение к базе 7.7 из 8.2 1С 7
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь=
Excel файл как Внешний источник данных 17
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . https://helpf.pro/uploads/img
Автоматическая установка ширины колонки табличного документа. 0
Процедура, которая " примерно" делает автоширину колонок (навроде, как если бы выделить все колонки и дважды щелкнуть мышкой по границе заголовка колонки). Привожу текст, работает неахти, но лучше чем ничего: Процедура РасчетШириныКолонок(Табличный
Быстрый отбор в справочнике по первой букве 0
В статье описан способ быстрой организации отбора в списке справочника по первой букве наименования. Механизм легко дотачивается под собственные нужды. https://helpf.pro/uploads/img/_1-T4ZDj6uNPX.png // ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ НаКлиенте
Посмотреть все результаты поиска похожих
Комментарии
deutsch2016
07.10.2017 23:14Комментарий: 4
deutsch2016

{ОбщийМодуль.AII4CF.Модуль(30)}: Ошибка при вызове метода контекста (Выполнить)

РезультатЗапроса = Запрос.Выполнить();

по причине:

{(10, 25)}: Поле не найдено "ссылкаТекущийКонтрагент"

И Контрагенты.Ссылка <> <<?>>ссылкаТекущийКонтрагент

deutsch2016
07.10.2017 23:13Комментарий: 3
deutsch2016

Ошибка! (((( что то пошло не так! ))))

Что такое "ссылкаТекущийКонтрагент" еще и всех контрагентов выводит (список 7000 шт.)

all4cf
07.09.2017 05:30Комментарий: 2
all4cf

Точно )  НЕ нужно убрать!

srv7
06.09.2017 21:45Комментарий: 1
srv7

вот тут ошибочка )

Если Не ЗначениеЗаполнено(Источник) Тогда

Запрос.Текст = Запрос.Текст + "

|И Контрагенты.Ссылка <>ссылкаТекущийКонтрагент";

КонецЕсли;

Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.
Загрузка... Дождитесь завершения!