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

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

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

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

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

Код 1C v 8.3
 //Проверка ИНН на дублирование
Процедура ЗапретДублированияКонтрагентовОбработкаПроверкиЗаполнения(ИНН, КПП, Источник, Отказ) Экспорт

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

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

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

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

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

Код 1C v 8.3
 Процедура ПередЗаписью(Отказ)

мЭтоНовый = ЭтоНовый();
мИНН = Ссылка.ИНН;

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

КонецПроцедуры // ПередЗаписью()

Результат:

Разместил:   Версии: |  Дата:   Прочитано: 743
 +1 
Распечатать
Возможно, вас также заинтересует
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 10
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно...
COM-подключение к базе 7.7 из 8.2 1С 5
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе="...
Excel файл как Внешний источник данных 6
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . ...
Автоматическая установка ширины колонки табличного документа. 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

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

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

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

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

КонецЕсли;

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