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