#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область ДляВызоваИзДругихПодсистем
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"ПрисоединитьДополнительныеТаблицы
|ЭтотСписок КАК Т
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Т1
| ПО Т1.ФизическоеЛицо = Т.Ссылка
|;
|РазрешитьЧтениеИзменение
|ГДЕ
| ЭтоГруппа
| ИЛИ ЗначениеРазрешено(Т.Ссылка)
| ИЛИ ЭтоАвторизованныйПользователь(Т1.Ссылка)";
КонецПроцедуры
Процедура ЗаполнитьДанныеДляЭлектронногоТестированияКандидата(ДанныеДляЗаполнения, Учащийся) Экспорт
ФизическиеЛицаЗарплатаКадры.ЗаполнитьДанныеДляЭлектронногоТестированияКандидата(ДанныеДляЗаполнения,
Учащийся);
КонецПроцедуры
#Область ОбъединениеДублей
Функция ДеревоДублей() Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыРасширеннаяПодсистемы") Тогда
МодульФизическиеЛицаЗарплатаКадрыРасширенный = ОбщегоНазначения.ОбщийМодуль(
"ФизическиеЛицаЗарплатаКадрыРасширенный");
Возврат МодульФизическиеЛицаЗарплатаКадрыРасширенный.ДеревоДублей();
КонецЕсли;
Возврат Новый ДеревоЗначений;
КонецФункции
Процедура ДополнитьКолонкиТаблицыПоискаДублей(ОписанияКолонок) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыРасширеннаяПодсистемы") Тогда
МодульФизическиеЛицаЗарплатаКадрыРасширенный = ОбщегоНазначения.ОбщийМодуль(
"ФизическиеЛицаЗарплатаКадрыРасширенный");
МодульФизическиеЛицаЗарплатаКадрыРасширенный.ДополнитьКолонкиТаблицыПоискаДублей(ОписанияКолонок);
КонецЕсли;
КонецПроцедуры
Функция ДанныеДублей(Дубли) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыРасширеннаяПодсистемы") Тогда
МодульФизическиеЛицаЗарплатаКадрыРасширенный = ОбщегоНазначения.ОбщийМодуль(
"ФизическиеЛицаЗарплатаКадрыРасширенный");
Возврат МодульФизическиеЛицаЗарплатаКадрыРасширенный.ДанныеДублей(Дубли);
КонецЕсли;
Возврат Новый ТаблицаЗначений;
КонецФункции
Функция ПараметрыПолученияДанныхДублей(Дубли) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыРасширеннаяПодсистемы") Тогда
МодульФизическиеЛицаЗарплатаКадрыРасширенный = ОбщегоНазначения.ОбщийМодуль(
"ФизическиеЛицаЗарплатаКадрыРасширенный");
Возврат МодульФизическиеЛицаЗарплатаКадрыРасширенный.ПараметрыПолученияДанныхДублей(Дубли);
КонецЕсли;
Возврат Новый Структура;
КонецФункции
Процедура ПриОбъединенииДублей(ОставляемыйДубль, ДанныеДляОбъединения, ДополнительныеПараметры) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыРасширеннаяПодсистемы") Тогда
МодульФизическиеЛицаЗарплатаКадрыРасширенный = ОбщегоНазначения.ОбщийМодуль(
"ФизическиеЛицаЗарплатаКадрыРасширенный");
МодульФизическиеЛицаЗарплатаКадрыРасширенный.ПриОбъединенииДублей(ОставляемыйДубль, ДанныеДляОбъединения,
ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
Процедура ДополнитьМетаданныеИсключаемыеПриЗаменеСсылокНаДубли(ИсключаемыеМетаданные) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыРасширеннаяПодсистемы") Тогда
МодульФизическиеЛицаЗарплатаКадрыРасширенный = ОбщегоНазначения.ОбщийМодуль(
"ФизическиеЛицаЗарплатаКадрыРасширенный");
МодульФизическиеЛицаЗарплатаКадрыРасширенный.ДополнитьМетаданныеИсключаемыеПриЗаменеСсылокНаДубли(
ИсключаемыеМетаданные);
КонецЕсли;
КонецПроцедуры
Процедура ПередЗаписьюОставляемогоДубля(ДубльОбъект) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыРасширеннаяПодсистемы") Тогда
МодульФизическиеЛицаЗарплатаКадрыРасширенный = ОбщегоНазначения.ОбщийМодуль(
"ФизическиеЛицаЗарплатаКадрыРасширенный");
МодульФизическиеЛицаЗарплатаКадрыРасширенный.ПередЗаписьюОставляемогоДубля(ДубльОбъект);
КонецЕсли;
КонецПроцедуры
Процедура ПослеОбъединенияДублей(ОставляемыйДубль, УдаляемыеДубли, ДополнительныеПараметры) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыРасширеннаяПодсистемы") Тогда
МодульФизическиеЛицаЗарплатаКадрыРасширенный = ОбщегоНазначения.ОбщийМодуль(
"ФизическиеЛицаЗарплатаКадрыРасширенный");
МодульФизическиеЛицаЗарплатаКадрыРасширенный.ПослеОбъединенияДублей(ОставляемыйДубль, УдаляемыеДубли,
ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
Функция ЗначениеПоказываемоеПослеОбъединенияДублей(ОставляемыйДубль) Экспорт
Возврат ОставляемыйДубль;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
Если Не Параметры.Свойство("ВыборГруппИЭлементов")
Или Не ЗначениеЗаполнено(Параметры.ВыборГруппИЭлементов) Тогда
ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.ГруппыИЭлементы;
Иначе
ВыборГруппИЭлементов = Параметры.ВыборГруппИЭлементов;
КонецЕсли;
Если ВыборГруппИЭлементов <> ИспользованиеГруппИЭлементов.Группы Тогда
ФизическиеЛицаЗарплатаКадрыВнутренний.ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
ФизическиеЛицаЗарплатаКадрыВнутренний.ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
Процедура ПодготовитьОбновлениеЗависимыхДанныхПриОбменеПередЗаписью(Объект, Замещение = Неопределено) Экспорт
Если Объект.ЭтоГруппа Тогда
Возврат;
КонецЕсли;
Если Объект.ЭтоНовый() Тогда
Возврат;
КонецЕсли;
ИменаРеквизитов = ОбщегоНазначения.ВыгрузитьКолонку(Метаданные.Справочники.ФизическиеЛица.Реквизиты, "Имя");
ПрежниеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Ссылка, СтрСоединить(ИменаРеквизитов, ","));
Объект.ДополнительныеСвойства.Вставить("ПрежниеЗначения", ПрежниеЗначения);
ФизическиеЛицаЗарплатаКадры.ЗапомнитьРеквизитыПрежнегоСостоянияОбъекта(Объект);
КонецПроцедуры
Процедура ПодготовитьОбновлениеЗависимыхДанныхПриОбменеПриЗаписи(Объект, Замещение = Неопределено) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ПоискФизическихЛиц") Тогда
МодульПоискФизическихЛиц = ОбщегоНазначения.ОбщийМодуль("ПоискФизическихЛиц");
МодульПоискФизическихЛиц.ЗаполнитьДанныеПоискаФизическогоЛица(Объект);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьРеквизитыОбъектаДокументооборота(Прокси, ОбъектXDTO, СсылкаНаПотребитель) Экспорт
Если Не ТипЗнч(СсылкаНаПотребитель) = Тип("СправочникСсылка.ФизическиеЛица")
Или ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкаНаПотребитель, "ЭтоГруппа") Тогда
Возврат;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтеграцияС1СДокументооборотом") Тогда
МодульИнтеграцияС1СДокументооборотБазоваяФункциональность = ОбщегоНазначения.ОбщийМодуль(
"ИнтеграцияС1СДокументооборотБазоваяФункциональность");
Если МодульИнтеграцияС1СДокументооборотБазоваяФункциональность.ПроверитьТип(Прокси, ОбъектXDTO, "DMPrivatePerson") Тогда
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СсылкаНаПотребитель, "ФИО, ДатаРождения");
ОбъектXDTO.name = Реквизиты.ФИО;
ОбъектXDTO.birthDay = Реквизиты.ДатаРождения;
ИначеЕсли МодульИнтеграцияС1СДокументооборотБазоваяФункциональность.ПроверитьТип(Прокси, ОбъектXDTO, "DMUser") Тогда
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Пользователи.Ссылка КАК Ссылка
|ИЗ
| Справочник.Пользователи КАК Пользователи
|ГДЕ
| Пользователи.ФизическоеЛицо = &ФизическоеЛицо
| И НЕ Пользователи.ПометкаУдаления");
Запрос.УстановитьПараметр("ФизическоеЛицо", СсылкаНаПотребитель);
ВыборкаПользователи = Запрос.Выполнить().Выбрать();
Если ВыборкаПользователи.Количество() = 1 Тогда
ВыборкаПользователи.Следующий();
МодульИнтеграцияС1СДокументооборотБазоваяФункциональность.ЗаполнитьРеквизитыИзПотребителя(
Прокси,
ОбъектXDTO,
ВыборкаПользователи.Ссылка);
Иначе
ИнтеграцияС1СДокументооборотБЗК.ЗаполнитьФизическоеЛицо(
СсылкаНаПотребитель,
Прокси,
ОбъектXDTO);
КонецЕсли;
ИначеЕсли МодульИнтеграцияС1СДокументооборотБазоваяФункциональность.ПроверитьТип(Прокси, ОбъектXDTO, "DMEmployee") Тогда
Сотрудник = Неопределено;
СотрудникиФизическогоЛица = КадровыйУчет.СотрудникиФизическихЛиц(
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(СсылкаНаПотребитель));
КолВоСотрудников = СотрудникиФизическогоЛица.Количество();
Если КолВоСотрудников = 1 Тогда
Сотрудник = СотрудникиФизическогоЛица[0].Сотрудник;
ИначеЕсли КолВоСотрудников > 1 Тогда
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВТРабочиеМестаСотрудников.Организация КАК Организация,
| ВТРабочиеМестаСотрудников.ФизическоеЛицо КАК ФизическоеЛицо
|ИЗ
| ВТРабочиеМестаСотрудников КАК ВТРабочиеМестаСотрудников");
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ДатаСведений = ТекущаяДатаСеанса();
ПараметрыЗапроса = КадровыйУчет.ПараметрыДляЗапросВТРабочиеМестаСотрудниковПоСпискуСотрудников(
СотрудникиФизическогоЛица.ВыгрузитьКолонку("Сотрудник"),
ДатаСведений,
ДатаСведений);
КадровыйУчет.СоздатьВТРабочиеМестаСотрудников(
Запрос.МенеджерВременныхТаблиц,
Истина,
ПараметрыЗапроса);
ОрганизацииФизЛиц = Запрос.Выполнить().Выбрать();
Если ОрганизацииФизЛиц.Количество() = 1 Тогда
ОрганизацииФизЛиц.Следующий();
Сотрудник = КадровыйУчет.ОсновнойСотрудникФизическогоЛица(
ОрганизацииФизЛиц.ФизическоеЛицо,
ОрганизацииФизЛиц.Организация,
ДатаСведений);
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Сотрудник) Тогда
МодульИнтеграцияС1СДокументооборотБазоваяФункциональность.ЗаполнитьРеквизитыИзПотребителя(
Прокси,
ОбъектXDTO,
Сотрудник);
Иначе
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Пользователи.Ссылка КАК Ссылка
|ИЗ
| Справочник.Пользователи КАК Пользователи
|ГДЕ
| Пользователи.ФизическоеЛицо = &ФизическоеЛицо
| И НЕ Пользователи.ПометкаУдаления");
Запрос.УстановитьПараметр("ФизическоеЛицо", СсылкаНаПотребитель);
ВыборкаПользователи = Запрос.Выполнить().Выбрать();
Если ВыборкаПользователи.Количество() = 1 Тогда
ВыборкаПользователи.Следующий();
МодульИнтеграцияС1СДокументооборотБазоваяФункциональность.ЗаполнитьРеквизитыИзПотребителя(
Прокси,
ОбъектXDTO,
ВыборкаПользователи.Ссылка);
Иначе
ИнтеграцияС1СДокументооборотБЗК.ЗаполнитьФизическоеЛицо(
СсылкаНаПотребитель,
Прокси,
ОбъектXDTO);
КонецЕсли;
КонецЕсли;
ИначеЕсли МодульИнтеграцияС1СДокументооборотБазоваяФункциональность.ПроверитьТип(Прокси, ОбъектXDTO, "DMPartyRowContact")
Или МодульИнтеграцияС1СДокументооборотБазоваяФункциональность.ПроверитьТип(Прокси, ОбъектXDTO, "DMParty") Тогда
ИнтеграцияС1СДокументооборотБЗК.ЗаполнитьИнформациюОПользователе(Прокси, ОбъектXDTO, СсылкаНаПотребитель);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПриСозданииПоСсылке(ОбъектИС, ОбъектXDTO, ЗаполняемыйОбъектИС) Экспорт
Если Не (ОбъектXDTO.objectId.type = "DMPrivatePerson"
И ТипЗнч(ОбъектИС) = Тип("СправочникОбъект.ФизическиеЛица")) Тогда
Возврат;
КонецЕсли;
ОбъектИС.ФИО = ОбъектXDTO.name;
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтеграцияС1СДокументооборотом") Тогда
МодульИнтеграцияС1СДокументооборотБазоваяФункциональность = ОбщегоНазначения.ОбщийМодуль(
"ИнтеграцияС1СДокументооборотБазоваяФункциональность");
Если МодульИнтеграцияС1СДокументооборотБазоваяФункциональность.СвойствоУстановлено(ОбъектXDTO, "birthDay") Тогда
ОбъектИС.ДатаРождения = ОбъектXDTO.birthDay;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ДополнитьСоответствиеТипов(Таблица) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтеграцияС1СДокументооборотом") Тогда
МодульИнтеграцияС1СДокументооборотБазоваяФункциональность = ОбщегоНазначения.ОбщийМодуль(
"ИнтеграцияС1СДокументооборотБазоваяФункциональность");
МодульИнтеграцияС1СДокументооборотБазоваяФункциональность.ДобавитьСтрокуСоответствияТипов(
Таблица, "DMPrivatePerson", Тип("СправочникСсылка.ФизическиеЛица"));
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ШаблоныСообщений
Процедура ПриПодготовкеШаблонаСообщения(РеквизитыОбъектаНазначения, Вложения, ДополнительныеПараметры) Экспорт
ИзменитьРеквизитыШаблонаСообщения(РеквизитыОбъектаНазначения);
КонецПроцедуры
Процедура ПриФормированииСообщения(Сообщение, Предмет, ПараметрыШаблона) Экспорт
ПросклонятьЗначенияРеквизитовВСообщении(Предмет, Сообщение.ЗначенияРеквизитов);
КонецПроцедуры
Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииПочтыПолучателейВСообщении(Получатели, Предмет) Экспорт
КонецПроцедуры
Процедура ИзменитьРеквизитыШаблонаСообщения(Знач РеквизитыОбъектаНазначения)
РеквизитыОбъектаНазначения.Очистить();
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ДатаРождения";
НоваяСтрока.Представление = НСтр("ru = 'Дата рождения'");
НоваяСтрока.Тип = Тип("Дата");
НоваяСтрока.Формат = "ДЛФ=D";
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.Пол";
НоваяСтрока.Представление = НСтр("ru = 'Пол'");
НоваяСтрока.Тип = Тип("ПеречислениеСсылка.ПолФизическогоЛица");
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ИНН";
НоваяСтрока.Представление = НСтр("ru = 'ИНН'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.СтраховойНомерПФР";
НоваяСтрока.Представление = НСтр("ru = 'СНИЛС'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.МестоРождения";
НоваяСтрока.Представление = НСтр("ru = 'Место рождения'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ФИО";
НоваяСтрока.Представление = НСтр("ru = 'ФИО'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.Фамилия";
НоваяСтрока.Представление = НСтр("ru = 'Фамилия'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.Имя";
НоваяСтрока.Представление = НСтр("ru = 'Имя'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.Отчество";
НоваяСтрока.Представление = НСтр("ru = 'Отчество'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.Инициалы";
НоваяСтрока.Представление = НСтр("ru = 'Инициалы имени, отчества'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.Наименование";
НоваяСтрока.Представление = НСтр("ru = 'Наименование'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ВнешняяСсылкаНаОбъект";
НоваяСтрока.Представление = НСтр("ru = 'Ссылка на ""Физические лица""'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.Email";
НоваяСтрока.Представление = НСтр("ru = 'Email'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.Мобильный телефон";
НоваяСтрока.Представление = НСтр("ru = 'Мобильный телефон'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.Домашний телефон";
НоваяСтрока.Представление = НСтр("ru = 'Домашний телефон'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.Рабочий телефон";
НоваяСтрока.Представление = НСтр("ru = 'Рабочий телефон'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.Адрес по прописке";
НоваяСтрока.Представление = НСтр("ru = 'Адрес по прописке'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = РеквизитыОбъектаНазначения.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.Адрес места проживания";
НоваяСтрока.Представление = НСтр("ru = 'Адрес места проживания'");
НоваяСтрока.Тип = Тип("Строка");
ДобавитьРеквизитыСклоненияФИО(РеквизитыОбъектаНазначения);
КонецПроцедуры
Процедура ПросклонятьЗначенияРеквизитовВСообщении(Получатель, ЗначенияРеквизитов)
Если Не ТипЗнч(Получатель) = Тип("СправочникСсылка.ФизическиеЛица") Тогда
Возврат;
КонецЕсли;
ПросклонятьЧастиИмени(ЗначенияРеквизитов, Получатель, 2, "Родительный");
ПросклонятьЧастиИмени(ЗначенияРеквизитов, Получатель, 3, "Дательный");
ПросклонятьЧастиИмени(ЗначенияРеквизитов, Получатель, 4, "Винительный");
ПросклонятьЧастиИмени(ЗначенияРеквизитов, Получатель, 5, "Творительный");
ПросклонятьЧастиИмени(ЗначенияРеквизитов, Получатель, 6, "Предложный");
КонецПроцедуры
Процедура ПросклонятьЧастиИмени(ЗначенияРеквизитов, ФизическоеЛицо, ИдентификаторПадежа, ИмяПадежа)
ГруппаФИОСклонение = ЗначенияРеквизитов["ФИОСклонение"];
ГруппаФамилияСклонение = ЗначенияРеквизитов["ФамилияСклонение"];
ГруппаИмяСклонение = ЗначенияРеквизитов["ИмяСклонение"];
ГруппаОтчествоСклонение = ЗначенияРеквизитов["ОтчествоСклонение"];
ФИОСклонение = "";
Если ФизическиеЛицаЗарплатаКадры.Просклонять(ФизическоеЛицо.ФИО, ИдентификаторПадежа, ФИОСклонение, ФизическоеЛицо.Пол) Тогда
ЧастиИмени = ФизическиеЛицаКлиентСервер.ЧастиИмени(ФИОСклонение);
ЗаполнитьРезультатСклонения(ГруппаФИОСклонение, СтрШаблон("ФИО%1Падеж", ИмяПадежа), ФИОСклонение);
ЗаполнитьРезультатСклонения(ГруппаФамилияСклонение, СтрШаблон("Фамилия%1Падеж", ИмяПадежа), ЧастиИмени.Фамилия);
ЗаполнитьРезультатСклонения(ГруппаИмяСклонение, СтрШаблон("Имя%1Падеж", ИмяПадежа), ЧастиИмени.Имя);
ЗаполнитьРезультатСклонения(ГруппаОтчествоСклонение, СтрШаблон("Отчество%1Падеж", ИмяПадежа), ЧастиИмени.Отчество);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьРезультатСклонения(ГруппаРеквизита, ИмяРеквизита, ЗначениеРеквизита)
Если Не ГруппаРеквизита = Неопределено Тогда
Если Не ГруппаРеквизита[ИмяРеквизита] = Неопределено Тогда
ГруппаРеквизита[ИмяРеквизита] = ЗначениеРеквизита;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ДобавитьРеквизитыСклоненияФИО(РеквизитыОбъектаНазначения)
ГруппаРеквизитов = РеквизитыОбъектаНазначения.Добавить();
ГруппаРеквизитов.Имя = НСтр("ru = 'ФизическиеЛица.ФИОСклонение'");
ГруппаРеквизитов.Представление = НСтр("ru = 'ФИО (склонение)'");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ФИОСклонение.ФИОРодительныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'ФИО (родительный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ФИОСклонение.ФИОДательныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'ФИО (дательный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ФИОСклонение.ФИОВинительныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'ФИО (винительный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ФИОСклонение.ФИОТворительныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'ФИО (творительный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ФИОСклонение.ФИОПредложныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'ФИО (предложный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
ГруппаРеквизитов = РеквизитыОбъектаНазначения.Добавить();
ГруппаРеквизитов.Имя = НСтр("ru = 'ФизическиеЛица.ФамилияСклонение'");
ГруппаРеквизитов.Представление = НСтр("ru = 'Фамилия (склонение)'");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ФамилияСклонение.ФамилияРодительныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'Фамилия (родительный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ФамилияСклонение.ФамилияДательныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'Фамилия (дательный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ФамилияСклонение.ФамилияВинительныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'Фамилия (винительный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ФамилияСклонение.ФамилияТворительныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'Фамилия (творительный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ФамилияСклонение.ФамилияПредложныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'Фамилия (предложный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
ГруппаРеквизитов = РеквизитыОбъектаНазначения.Добавить();
ГруппаРеквизитов.Имя = НСтр("ru = 'ФизическиеЛица.ИмяСклонение'");
ГруппаРеквизитов.Представление = НСтр("ru = 'Имя (склонение)'");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ИмяСклонение.ИмяРодительныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'Имя (родительный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ИмяСклонение.ИмяДательныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'Имя (дательный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ИмяСклонение.ИмяВинительныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'Имя (винительный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ИмяСклонение.ИмяТворительныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'Имя (творительный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ИмяСклонение.ИмяПредложныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'Имя (предложный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
ГруппаРеквизитов = РеквизитыОбъектаНазначения.Добавить();
ГруппаРеквизитов.Имя = НСтр("ru = 'ФизическиеЛица.ОтчествоСклонение'");
ГруппаРеквизитов.Представление = НСтр("ru = 'Отчество (склонение)'");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ОтчествоСклонение.ОтчествоРодительныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'Отчество (родительный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ОтчествоСклонение.ОтчествоДательныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'Отчество (дательный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ОтчествоСклонение.ОтчествоВинительныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'Отчество (винительный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ОтчествоСклонение.ОтчествоТворительныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'Отчество (творительный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
НоваяСтрока = ГруппаРеквизитов.Строки.Добавить();
НоваяСтрока.Имя = "ФизическиеЛица.ОтчествоСклонение.ОтчествоПредложныйПадеж";
НоваяСтрока.Представление = НСтр("ru = 'Отчество (предложный падеж)'");
НоваяСтрока.Тип = Тип("Строка");
КонецПроцедуры
#КонецОбласти
Процедура ЗаполнитьИнициалы(ПараметрыОбновления = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1000
| ФизическиеЛица.Ссылка КАК Ссылка
|ИЗ
| Справочник.ФизическиеЛица КАК ФизическиеЛица
|ГДЕ
| ФизическиеЛица.Инициалы = """"
| И ФизическиеЛица.Имя <> """"";
Если ПараметрыОбновления = Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ПЕРВЫЕ 1000","");
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Количество() = 0 Тогда
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбработчик(ПараметрыОбновления);
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПродолжитьОбработчик(ПараметрыОбновления);
Пока Выборка.Следующий() Цикл
Если Не ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПодготовитьОбновлениеДанных(
ПараметрыОбновления, "Справочник.ФизическиеЛица", "Ссылка", Выборка.Ссылка) Тогда
Продолжить;
КонецЕсли;
ФизическоеЛицоОбъект = Выборка.Ссылка.ПолучитьОбъект();
ФизическоеЛицоОбъект.Инициалы = ФизическиеЛицаЗарплатаКадрыКлиентСервер.ИнициалыПоИмениОтчеству(
ФизическоеЛицоОбъект.Имя, ФизическоеЛицоОбъект.Отчество);
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ФизическоеЛицоОбъект);
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбновлениеДанных(ПараметрыОбновления);
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьФИОСлужебныеСБуквамиЕЁ(ПараметрыОбновления) Экспорт
Запрос = Новый Запрос;
Если ПараметрыОбновления = Неопределено Тогда
МассивОбновленных = Новый Массив;
Иначе
Если ПараметрыОбновления.Свойство("МассивОбновленных") Тогда
МассивОбновленных = ПараметрыОбновления.МассивОбновленных;
Иначе
МассивОбновленных = Новый Массив;
ПараметрыОбновления.Вставить("МассивОбновленных", МассивОбновленных);
КонецЕсли;
КонецЕсли;
Запрос.УстановитьПараметр("МассивОбновленных", МассивОбновленных);
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1000
| ТаблицаДанных.Ссылка КАК Ссылка,
| ТаблицаДанных.Наименование КАК Наименование,
| ТаблицаДанных.НаименованиеСлужебное КАК НаименованиеСлужебное
|ИЗ
| Справочник.ФизическиеЛица КАК ТаблицаДанных
|ГДЕ
| ТаблицаДанных.НаименованиеСлужебное ПОДОБНО ""%ЕЁ%""
| И НЕ ТаблицаДанных.Ссылка В (&МассивОбновленных)";
Если ПараметрыОбновления = Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ПЕРВЫЕ 1000","");
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Количество() = 0 Тогда
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Истина);
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Ложь);
Пока Выборка.Следующий() Цикл
МассивОбновленных.Добавить(Выборка.Ссылка);
НаименованиеСлужебное = ФизическиеЛицаЗарплатаКадры.НаименованиеСлужебное(Выборка.Наименование);
Если НаименованиеСлужебное <> Выборка.НаименованиеСлужебное Тогда
Если Не ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПодготовитьОбновлениеДанных(
ПараметрыОбновления, "Справочник.ФизическиеЛица", "Ссылка", Выборка.Ссылка) Тогда
Продолжить;
КонецЕсли;
ОбъектСправочника = Выборка.Ссылка.ПолучитьОбъект();
ОбъектСправочника.НаименованиеСлужебное = НаименованиеСлужебное;
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ОбъектСправочника);
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбновлениеДанных(ПараметрыОбновления);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#КонецЕсли