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