&ИзменениеИКонтроль("ИННКППУжеИспользуетсяВИнформационнойБазе") Функция РК_ИННКППУжеИспользуетсяВИнформационнойБазе(ИНН, КПП, ИсключаяСсылку = Неопределено, ЮрФизЛицо = Неопределено) Экспорт РезультатПоиска = Новый Структура; РезультатПоиска.Вставить("НайденныеСовпадения", Новый Массив); РезультатПоиска.Вставить("ДоступноСоздание", Истина); УстановитьПривилегированныйРежим(Истина); Запрос = Новый Запрос; #Удаление Запрос.Текст = " |ВЫБРАТЬ | Контрагенты.Ссылка КАК Ссылка, | Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо, | Партнеры.Ссылка КАК Партнер, | Партнеры.Код КАК Код, | ПРЕДСТАВЛЕНИЕ(Партнеры.ОсновнойМенеджер) КАК ОсновнойМенеджер |ИЗ | Справочник.Контрагенты КАК Контрагенты | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры | ПО Контрагенты.Партнер = Партнеры.Ссылка |ГДЕ | Контрагенты.ИНН = &ИНН | И Контрагенты.КПП = &КПП | И Контрагенты.Ссылка <> &Ссылка"; #КонецУдаления #Вставка // {{ [+] (фрагмент ДОБАВЛЕН), уникальность ИНН/КПП только среди непомеченных на удаление контрагентов Запрос.Текст = " |ВЫБРАТЬ | Контрагенты.Ссылка КАК Ссылка, | Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо, | Партнеры.Ссылка КАК Партнер, | Партнеры.Код КАК Код, | ПРЕДСТАВЛЕНИЕ(Партнеры.ОсновнойМенеджер) КАК ОсновнойМенеджер |ИЗ | Справочник.Контрагенты КАК Контрагенты | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры | ПО Контрагенты.Партнер = Партнеры.Ссылка |ГДЕ | Контрагенты.ИНН = &ИНН | И Контрагенты.КПП = &КПП | И Контрагенты.Ссылка <> &Ссылка | И НЕ Контрагенты.ПометкаУдаления"; // }} #КонецВставки Запрос.УстановитьПараметр("ИНН",ИНН); Запрос.УстановитьПараметр("КПП",КПП); Запрос.УстановитьПараметр("Ссылка",ИсключаяСсылку); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Количество() = 1 Тогда Выборка.Следующий(); Если ЗначениеЗаполнено(ИсключаяСсылку) И Выборка.Ссылка = ИсключаяСсылку Тогда Возврат РезультатПоиска; ИначеЕсли ЗначениеЗаполнено(ЮрФизЛицо) Тогда Если ЮрФизЛицо = Перечисления.ЮрФизЛицо.ИндивидуальныйПредприниматель И Выборка.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо Тогда ДобавитьДанныеНайденногоКонтрагента(Выборка, РезультатПоиска.НайденныеСовпадения); ИначеЕсли ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо И Выборка.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ИндивидуальныйПредприниматель Тогда ДобавитьДанныеНайденногоКонтрагента(Выборка, РезультатПоиска.НайденныеСовпадения); Иначе ДобавитьДанныеНайденногоКонтрагента(Выборка, РезультатПоиска.НайденныеСовпадения); РезультатПоиска.ДоступноСоздание = Ложь; КонецЕсли; Иначе ДобавитьДанныеНайденногоКонтрагента(Выборка, РезультатПоиска.НайденныеСовпадения); РезультатПоиска.ДоступноСоздание = Ложь; КонецЕсли; ИначеЕсли Выборка.Количество() > 1 Тогда РезультатПоиска.ДоступноСоздание = Ложь; Пока Выборка.Следующий() Цикл ДобавитьДанныеНайденногоКонтрагента(Выборка, РезультатПоиска.НайденныеСовпадения); КонецЦикла; КонецЕсли; Возврат РезультатПоиска; КонецФункции &ИзменениеИКонтроль("ПроверитьКорректностьЗаполненияКонтрагента") Процедура РК_ПроверитьКорректностьЗаполненияКонтрагента(Объект, Контрагент, Отказ) Экспорт //++ Локализация КлючДанных = ?(ТипЗнч(Объект) = Тип("ФормаКлиентскогоПриложения"), Неопределено, Объект); Если Объект.ОбособленноеПодразделение И ЗначениеЗаполнено(Объект.ГоловнойКонтрагент) Тогда Если Объект.ГоловнойКонтрагент <> Контрагент Тогда СвойстваГоловногоКонтрагента = ОбщегоНазначения.ЗначенияРеквизитовОбъекта( Объект.ГоловнойКонтрагент, "Наименование, ИНН"); Если ЗначениеЗаполнено(СвойстваГоловногоКонтрагента.ИНН) И СвойстваГоловногоКонтрагента.ИНН <> Объект.ИНН Тогда ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'ИНН контрагента не равен указанному в головном подразделении'"), СвойстваГоловногоКонтрагента.Наименование); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, КлючДанных, "ИНН", , Отказ); КонецЕсли; КонецЕсли; КонецЕсли; Если ЗначениеЗаполнено(Объект.ИНН) Тогда #Вставка // {{ [+] (фрагмент ДОБАВЛЕН), для помеченных на удаление уникальность ИНН/КПП не проверяется Если НЕ Объект.ПометкаУдаления Тогда // }} #КонецВставки РезультатПоиска = ИННКППУжеИспользуетсяВИнформационнойБазе(Объект.ИНН, Объект.КПП, Контрагент, Объект.ЮрФизЛицо) ; Если Не РезультатПоиска.ДоступноСоздание Тогда ДанныеКонтрагента = РезультатПоиска.НайденныеСовпадения[0]; ОбщегоНазначенияКлиентСервер.СообщитьПользователю( СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='Данные ИНН и КПП уже указаны для другого контрагента, ответственный - %1.'"), ДанныеКонтрагента.ОсновнойМенеджер), КлючДанных, "ИНН", , Отказ); КонецЕсли; #Вставка КонецЕсли; // }} #КонецВставки Иначе Если НЕ ПартнерыИКонтрагенты.УпрощенныйВводДоступен() Тогда Если (Объект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ИндивидуальныйПредприниматель ИЛИ Объект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Не указан ИНН'"), КлючДанных, "ИНН", , Отказ); КонецЕсли; КонецЕсли; КонецЕсли; //-- Локализация КонецПроцедуры