Контрагенты: уникальность ИНН/КПП без помеченных на удаление (1.3.0.39).
Переопределение ПартнерыИКонтрагентыЛокализация — аналог crm3-dev.rhana v1.0.1.333. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -4,6 +4,29 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 1.3.0.39 (2026-07-06)
|
||||||
|
|
||||||
|
### Контрагенты — уникальность ИНН/КПП
|
||||||
|
|
||||||
|
Модуль: `ПартнерыИКонтрагентыЛокализация` (заимствован).
|
||||||
|
|
||||||
|
В целевой конфигурации (crm3-26) проверка уникальности ИНН/КПП реализована в модуле локализации, а не в `ПартнерыИКонтрагенты` (как в crm3-dev). Функция возвращает структуру `НайденныеСовпадения` / `ДоступноСоздание` и учитывает `ЮрФизЛицо` (различение ИП и физлица).
|
||||||
|
|
||||||
|
| Процедура/функция | Изменение |
|
||||||
|
|-------------------|-----------|
|
||||||
|
| `ИННКППУжеИспользуетсяВИнформационнойБазе` | при поиске дублей исключаются контрагенты с `ПометкаУдаления = Истина` |
|
||||||
|
| `ПроверитьКорректностьЗаполненияКонтрагента` | для записываемого контрагента с `ПометкаУдаления` проверка уникальности ИНН/КПП **не выполняется** |
|
||||||
|
|
||||||
|
**Поведение** — аналогично `crm3-dev.rhana` v1.0.1.333:
|
||||||
|
|
||||||
|
- обычная запись — уникальность среди непомеченных на удаление;
|
||||||
|
- запись с пометкой удаления — проверка уникальности ИНН/КПП пропускается;
|
||||||
|
- дубль только у помеченного контрагента не блокирует активную карточку.
|
||||||
|
|
||||||
|
**Примечание:** отдельная CRM-функция `CRM_КлиентыСервер.ИННКППУжеИспользуетсяВИнформационнойБазе` (поиск по `Партнеры.CRM_ИНН`) не затронута — она относится к сценариям CRM, не к типовой записи справочника `Контрагенты`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 1.3.0.38 (2026-07-06)
|
## 1.3.0.38 (2026-07-06)
|
||||||
|
|
||||||
### Обмен — фильтр узла «Рабочая CRM3»
|
### Обмен — фильтр узла «Рабочая CRM3»
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
|
||||||
|
<CommonModule uuid="204641bf-09d1-470a-9d72-3eb46439556d">
|
||||||
|
<InternalInfo>
|
||||||
|
<xr:PropertyState>
|
||||||
|
<xr:Property>Module</xr:Property>
|
||||||
|
<xr:State>Extended</xr:State>
|
||||||
|
</xr:PropertyState>
|
||||||
|
</InternalInfo>
|
||||||
|
<Properties>
|
||||||
|
<ObjectBelonging>Adopted</ObjectBelonging>
|
||||||
|
<Name>ПартнерыИКонтрагентыЛокализация</Name>
|
||||||
|
<Comment/>
|
||||||
|
<ExtendedConfigurationObject>c7ca240a-541d-4f86-8e30-0e63aafcd5fa</ExtendedConfigurationObject>
|
||||||
|
<Global>false</Global>
|
||||||
|
<ClientManagedApplication>false</ClientManagedApplication>
|
||||||
|
<Server>true</Server>
|
||||||
|
<ExternalConnection>true</ExternalConnection>
|
||||||
|
<ClientOrdinaryApplication>true</ClientOrdinaryApplication>
|
||||||
|
<ServerCall>false</ServerCall>
|
||||||
|
</Properties>
|
||||||
|
</CommonModule>
|
||||||
|
</MetaDataObject>
|
||||||
@@ -0,0 +1,175 @@
|
|||||||
|
|
||||||
|
&ИзменениеИКонтроль("ИННКППУжеИспользуетсяВИнформационнойБазе")
|
||||||
|
Функция РК_ИННКППУжеИспользуетсяВИнформационнойБазе(ИНН, КПП, ИсключаяСсылку = Неопределено, ЮрФизЛицо = Неопределено) Экспорт
|
||||||
|
|
||||||
|
РезультатПоиска = Новый Структура;
|
||||||
|
РезультатПоиска.Вставить("НайденныеСовпадения", Новый Массив);
|
||||||
|
РезультатПоиска.Вставить("ДоступноСоздание", Истина);
|
||||||
|
|
||||||
|
УстановитьПривилегированныйРежим(Истина);
|
||||||
|
|
||||||
|
Запрос = Новый Запрос;
|
||||||
|
#Удаление
|
||||||
|
Запрос.Текст = "
|
||||||
|
|ВЫБРАТЬ
|
||||||
|
| Контрагенты.Ссылка КАК Ссылка,
|
||||||
|
| Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо,
|
||||||
|
| Партнеры.Ссылка КАК Партнер,
|
||||||
|
| Партнеры.Код КАК Код,
|
||||||
|
| ПРЕДСТАВЛЕНИЕ(Партнеры.ОсновнойМенеджер) КАК ОсновнойМенеджер
|
||||||
|
|ИЗ
|
||||||
|
| Справочник.Контрагенты КАК Контрагенты
|
||||||
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры
|
||||||
|
| ПО Контрагенты.Партнер = Партнеры.Ссылка
|
||||||
|
|ГДЕ
|
||||||
|
| Контрагенты.ИНН = &ИНН
|
||||||
|
| И Контрагенты.КПП = &КПП
|
||||||
|
| И Контрагенты.Ссылка <> &Ссылка";
|
||||||
|
#КонецУдаления
|
||||||
|
#Вставка
|
||||||
|
// {{ [+] (фрагмент ДОБАВЛЕН), уникальность ИНН/КПП только среди непомеченных на удаление контрагентов
|
||||||
|
Запрос.Текст = "
|
||||||
|
|ВЫБРАТЬ
|
||||||
|
| Контрагенты.Ссылка КАК Ссылка,
|
||||||
|
| Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо,
|
||||||
|
| Партнеры.Ссылка КАК Партнер,
|
||||||
|
| Партнеры.Код КАК Код,
|
||||||
|
| ПРЕДСТАВЛЕНИЕ(Партнеры.ОсновнойМенеджер) КАК ОсновнойМенеджер
|
||||||
|
|ИЗ
|
||||||
|
| Справочник.Контрагенты КАК Контрагенты
|
||||||
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры
|
||||||
|
| ПО Контрагенты.Партнер = Партнеры.Ссылка
|
||||||
|
|ГДЕ
|
||||||
|
| Контрагенты.ИНН = &ИНН
|
||||||
|
| И Контрагенты.КПП = &КПП
|
||||||
|
| И Контрагенты.Ссылка <> &Ссылка
|
||||||
|
| И НЕ Контрагенты.ПометкаУдаления";
|
||||||
|
// }}
|
||||||
|
#КонецВставки
|
||||||
|
|
||||||
|
Запрос.УстановитьПараметр("ИНН",ИНН);
|
||||||
|
Запрос.УстановитьПараметр("КПП",КПП);
|
||||||
|
Запрос.УстановитьПараметр("Ссылка",ИсключаяСсылку);
|
||||||
|
|
||||||
|
Выборка = Запрос.Выполнить().Выбрать();
|
||||||
|
|
||||||
|
Если Выборка.Количество() = 1 Тогда
|
||||||
|
|
||||||
|
Выборка.Следующий();
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(ИсключаяСсылку)
|
||||||
|
И Выборка.Ссылка = ИсключаяСсылку Тогда
|
||||||
|
|
||||||
|
Возврат РезультатПоиска;
|
||||||
|
|
||||||
|
ИначеЕсли ЗначениеЗаполнено(ЮрФизЛицо) Тогда
|
||||||
|
|
||||||
|
Если ЮрФизЛицо = Перечисления.ЮрФизЛицо.ИндивидуальныйПредприниматель
|
||||||
|
И Выборка.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо Тогда
|
||||||
|
|
||||||
|
ДобавитьДанныеНайденногоКонтрагента(Выборка, РезультатПоиска.НайденныеСовпадения);
|
||||||
|
|
||||||
|
ИначеЕсли ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо
|
||||||
|
И Выборка.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ИндивидуальныйПредприниматель Тогда
|
||||||
|
|
||||||
|
ДобавитьДанныеНайденногоКонтрагента(Выборка, РезультатПоиска.НайденныеСовпадения);
|
||||||
|
|
||||||
|
Иначе
|
||||||
|
|
||||||
|
ДобавитьДанныеНайденногоКонтрагента(Выборка, РезультатПоиска.НайденныеСовпадения);
|
||||||
|
РезультатПоиска.ДоступноСоздание = Ложь;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Иначе
|
||||||
|
|
||||||
|
ДобавитьДанныеНайденногоКонтрагента(Выборка, РезультатПоиска.НайденныеСовпадения);
|
||||||
|
РезультатПоиска.ДоступноСоздание = Ложь;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ИначеЕсли Выборка.Количество() > 1 Тогда
|
||||||
|
|
||||||
|
РезультатПоиска.ДоступноСоздание = Ложь;
|
||||||
|
|
||||||
|
Пока Выборка.Следующий() Цикл
|
||||||
|
|
||||||
|
ДобавитьДанныеНайденногоКонтрагента(Выборка, РезультатПоиска.НайденныеСовпадения);
|
||||||
|
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Возврат РезультатПоиска;
|
||||||
|
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&ИзменениеИКонтроль("ПроверитьКорректностьЗаполненияКонтрагента")
|
||||||
|
Процедура РК_ПроверитьКорректностьЗаполненияКонтрагента(Объект, Контрагент, Отказ) Экспорт
|
||||||
|
//++ Локализация
|
||||||
|
КлючДанных = ?(ТипЗнч(Объект) = Тип("ФормаКлиентскогоПриложения"), Неопределено, Объект);
|
||||||
|
Если Объект.ОбособленноеПодразделение И ЗначениеЗаполнено(Объект.ГоловнойКонтрагент) Тогда
|
||||||
|
|
||||||
|
Если Объект.ГоловнойКонтрагент <> Контрагент Тогда
|
||||||
|
|
||||||
|
СвойстваГоловногоКонтрагента = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
|
||||||
|
Объект.ГоловнойКонтрагент, "Наименование, ИНН");
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(СвойстваГоловногоКонтрагента.ИНН) И СвойстваГоловногоКонтрагента.ИНН <> Объект.ИНН Тогда
|
||||||
|
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||||
|
НСтр("ru = 'ИНН контрагента не равен указанному в головном подразделении'"),
|
||||||
|
СвойстваГоловногоКонтрагента.Наименование);
|
||||||
|
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, КлючДанных, "ИНН", , Отказ);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если ЗначениеЗаполнено(Объект.ИНН) Тогда
|
||||||
|
|
||||||
|
#Вставка
|
||||||
|
// {{ [+] (фрагмент ДОБАВЛЕН), для помеченных на удаление уникальность ИНН/КПП не проверяется
|
||||||
|
Если НЕ Объект.ПометкаУдаления Тогда
|
||||||
|
// }}
|
||||||
|
#КонецВставки
|
||||||
|
|
||||||
|
РезультатПоиска = ИННКППУжеИспользуетсяВИнформационнойБазе(Объект.ИНН, Объект.КПП, Контрагент, Объект.ЮрФизЛицо) ;
|
||||||
|
|
||||||
|
Если Не РезультатПоиска.ДоступноСоздание Тогда
|
||||||
|
|
||||||
|
ДанныеКонтрагента = РезультатПоиска.НайденныеСовпадения[0];
|
||||||
|
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
|
||||||
|
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||||
|
НСтр("ru='Данные ИНН и КПП уже указаны для другого контрагента, ответственный - %1.'"),
|
||||||
|
ДанныеКонтрагента.ОсновнойМенеджер),
|
||||||
|
КлючДанных,
|
||||||
|
"ИНН",
|
||||||
|
,
|
||||||
|
Отказ);
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
#Вставка
|
||||||
|
КонецЕсли;
|
||||||
|
// }}
|
||||||
|
#КонецВставки
|
||||||
|
|
||||||
|
Иначе
|
||||||
|
|
||||||
|
Если НЕ ПартнерыИКонтрагенты.УпрощенныйВводДоступен() Тогда
|
||||||
|
|
||||||
|
Если (Объект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ИндивидуальныйПредприниматель
|
||||||
|
ИЛИ Объект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо) Тогда
|
||||||
|
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
|
||||||
|
НСтр("ru = 'Не указан ИНН'"),
|
||||||
|
КлючДанных,
|
||||||
|
"ИНН",
|
||||||
|
,
|
||||||
|
Отказ);
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
КонецЕсли;
|
||||||
|
//-- Локализация
|
||||||
|
КонецПроцедуры
|
||||||
@@ -9,6 +9,8 @@
|
|||||||
<Metadata name="CommonForm.РК_ФормаНастроекРана.Form" id="5688e1b9-1552-45cc-b539-1f4cc3765e8a.0" configVersion="ea9a4ab0f585a6af14dc4941cc5fd2e48f221b6a"/>
|
<Metadata name="CommonForm.РК_ФормаНастроекРана.Form" id="5688e1b9-1552-45cc-b539-1f4cc3765e8a.0" configVersion="ea9a4ab0f585a6af14dc4941cc5fd2e48f221b6a"/>
|
||||||
<Metadata name="CommonModule.МенеджерОбменаЧерезУниверсальныйФормат" id="46adff34-2644-4eb3-99a7-e969dbdf8496" configVersion="0e38e0f4d63c0c4783d0c8935de492efee1e4863"/>
|
<Metadata name="CommonModule.МенеджерОбменаЧерезУниверсальныйФормат" id="46adff34-2644-4eb3-99a7-e969dbdf8496" configVersion="0e38e0f4d63c0c4783d0c8935de492efee1e4863"/>
|
||||||
<Metadata name="CommonModule.МенеджерОбменаЧерезУниверсальныйФормат.Module" id="46adff34-2644-4eb3-99a7-e969dbdf8496.0" configVersion="89e8efb209d7477a14ca8b50b3aa0065918e53b7"/>
|
<Metadata name="CommonModule.МенеджерОбменаЧерезУниверсальныйФормат.Module" id="46adff34-2644-4eb3-99a7-e969dbdf8496.0" configVersion="89e8efb209d7477a14ca8b50b3aa0065918e53b7"/>
|
||||||
|
<Metadata name="CommonModule.ПартнерыИКонтрагентыЛокализация" id="204641bf-09d1-470a-9d72-3eb46439556d" configVersion="4d92732dfb20d7aac1e4e8e85d854a56b78cb8ae"/>
|
||||||
|
<Metadata name="CommonModule.ПартнерыИКонтрагентыЛокализация.Module" id="204641bf-09d1-470a-9d72-3eb46439556d.0" configVersion="126cf53fde7bdeb39ba2495d14b179dc815a8331"/>
|
||||||
<Metadata name="CommonModule.ОбщегоНазначенияКлиентСервер" id="1afe1653-696f-47e3-9bea-df7b84bd077c" configVersion="a3b2d57b152d8cd275a412ddf1479ac90b35402d"/>
|
<Metadata name="CommonModule.ОбщегоНазначенияКлиентСервер" id="1afe1653-696f-47e3-9bea-df7b84bd077c" configVersion="a3b2d57b152d8cd275a412ddf1479ac90b35402d"/>
|
||||||
<Metadata name="CommonModule.ОбщегоНазначенияКлиентСервер.Module" id="1afe1653-696f-47e3-9bea-df7b84bd077c.0" configVersion="74e1779aaae2e2e61a3957d284da0d61b1e34d41"/>
|
<Metadata name="CommonModule.ОбщегоНазначенияКлиентСервер.Module" id="1afe1653-696f-47e3-9bea-df7b84bd077c.0" configVersion="74e1779aaae2e2e61a3957d284da0d61b1e34d41"/>
|
||||||
<Metadata name="CommonModule.РК_ОбщегоНазначения" id="6bfc7b15-6995-43ad-96c6-a97569f2d5a4" configVersion="c11a335f853a42165758cfe7995f2ee06a9010f7"/>
|
<Metadata name="CommonModule.РК_ОбщегоНазначения" id="6bfc7b15-6995-43ad-96c6-a97569f2d5a4" configVersion="c11a335f853a42165758cfe7995f2ee06a9010f7"/>
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
<xr:Item xsi:type="xr:MDObjectRef">Role.РК_ОсновнаяРоль</xr:Item>
|
<xr:Item xsi:type="xr:MDObjectRef">Role.РК_ОсновнаяРоль</xr:Item>
|
||||||
</DefaultRoles>
|
</DefaultRoles>
|
||||||
<Vendor/>
|
<Vendor/>
|
||||||
<Version>1.3.0.38</Version>
|
<Version>1.3.0.39</Version>
|
||||||
<DefaultStyle/>
|
<DefaultStyle/>
|
||||||
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
||||||
<BriefInformation/>
|
<BriefInformation/>
|
||||||
@@ -97,6 +97,7 @@
|
|||||||
<CommonModule>РК_ОбщегоНазначенияВызовСервера</CommonModule>
|
<CommonModule>РК_ОбщегоНазначенияВызовСервера</CommonModule>
|
||||||
<CommonModule>ОбщегоНазначенияКлиентСервер</CommonModule>
|
<CommonModule>ОбщегоНазначенияКлиентСервер</CommonModule>
|
||||||
<CommonModule>МенеджерОбменаЧерезУниверсальныйФормат</CommonModule>
|
<CommonModule>МенеджерОбменаЧерезУниверсальныйФормат</CommonModule>
|
||||||
|
<CommonModule>ПартнерыИКонтрагентыЛокализация</CommonModule>
|
||||||
<XDTOPackage>EnterpriseData_1_8_7</XDTOPackage>
|
<XDTOPackage>EnterpriseData_1_8_7</XDTOPackage>
|
||||||
<XDTOPackage>EnterpriseData_1_8_6</XDTOPackage>
|
<XDTOPackage>EnterpriseData_1_8_6</XDTOPackage>
|
||||||
<FunctionalOption>РК_ФункциональнаяОпцияРежимаОтладки</FunctionalOption>
|
<FunctionalOption>РК_ФункциональнаяОпцияРежимаОтладки</FunctionalOption>
|
||||||
|
|||||||
Reference in New Issue
Block a user