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