#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если Не (ВидРеестра = Перечисления.ВидыРеестровСведенийНеобходимыхДляНазначенияИВыплатыПособий.ПособияПоНетрудоспособности) Тогда
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "СведенияНеобходимыеДляНазначенияПособий.НомерЛисткаНетрудоспособности");
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "СведенияНеобходимыеДляНазначенияПособий.ДатаВыдачиЛисткаНетрудоспособности");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "СведенияНеобходимыеДляНазначенияПособий.КодПричиныНетрудоспособности");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "КодПодчиненностиФСС");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "КПП");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "ИНН");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "ГлавныйБухгалтер");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "ДолжностьРуководителя");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "СведенияНеобходимыеДляНазначенияПособий.НаименованиеМедицинскойОрганизации");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "СведенияНеобходимыеДляНазначенияПособий.ОГРНМедицинскойОрганизации");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "СведенияНеобходимыеДляНазначенияПособий.ФамилияРебенка");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "СведенияНеобходимыеДляНазначенияПособий.ИмяРебенка");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "СведенияНеобходимыеДляНазначенияПособий.ДатаРожденияРебенка");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "СведенияНеобходимыеДляНазначенияПособий.ОчередностьРожденияРебенка");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "СведенияНеобходимыеДляНазначенияПособий.ВидПодтверждающегоДокумента");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "СведенияНеобходимыеДляНазначенияПособий.НаименованиеПодтверждающегоДокумента");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "СведенияНеобходимыеДляНазначенияПособий.ДатаДокумента");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "СведенияНеобходимыеДляНазначенияПособий.СерияДокумента");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "СведенияНеобходимыеДляНазначенияПособий.НомерДокумента");
ПроверитьПовторноВыбранныеИНепроведенныеЗаявления(Отказ);
ПроверитьТребованияФормата(Отказ);
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ЗарплатаКадры.ОтключитьБизнесЛогикуПриЗаписи(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Если РежимЗаписи = РежимЗаписиДокумента.Проведение И ОбъектЗафиксирован() Тогда
ФиксацияВторичныхДанныхВДокументах.ЗафиксироватьВторичныеДанныеДокумента(ЭтотОбъект);
КонецЕсли;
ЗаполнитьСотрудниковИФизическихЛиц();
Если Не ЗначениеЗаполнено(Номер) Тогда
УстановитьНовыйНомер();
КонецЕсли;
Если ФиксацияВторичныхДанныхВДокументах.РеквизитыШапкиЗафиксированы(ЭтотОбъект, "ИдентификаторФСС") Тогда
Документы.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий.НомерРеестраДляВыгрузкиВФайл(ЭтотОбъект, Ложь);
Иначе
ИдентификаторФСС = Документы.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий.ИдентификаторФСС(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ПередЗаписью
Процедура ЗаполнитьСотрудниковИФизическихЛиц() Экспорт
ФизическиеЛица.Очистить();
Если СведенияНеобходимыеДляНазначенияПособий.Количество() > 0 Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗаявлениеСотрудникаНаВыплатуПособия.Ссылка КАК Ссылка,
| ЗаявлениеСотрудникаНаВыплатуПособия.Сотрудник КАК Сотрудник,
| ЗаявлениеСотрудникаНаВыплатуПособия.ФизическоеЛицо КАК ФизическоеЛицо
|ИЗ
| Документ.ЗаявлениеСотрудникаНаВыплатуПособия КАК ЗаявлениеСотрудникаНаВыплатуПособия
|ГДЕ
| ЗаявлениеСотрудникаНаВыплатуПособия.Ссылка В(&МассивСсылок)";
Запрос.УстановитьПараметр("МассивСсылок", СведенияНеобходимыеДляНазначенияПособий.ВыгрузитьКолонку("Заявление"));
Таблица = Запрос.Выполнить().Выгрузить();
Для Каждого Заявление Из Таблица Цикл
Найденные = СведенияНеобходимыеДляНазначенияПособий.НайтиСтроки(Новый Структура("Заявление", Заявление.Ссылка));
Для Каждого СтрокаСведений Из Найденные Цикл
СтрокаСведений.Сотрудник = Заявление.Сотрудник;
СтрокаСведений.ФизическоеЛицо = Заявление.ФизическоеЛицо;
КонецЦикла;
КонецЦикла;
Таблица.Свернуть("ФизическоеЛицо");
ФизическиеЛица.Загрузить(Таблица);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработкаПроверкиЗаполнения
Процедура ПроверитьПовторноВыбранныеИНепроведенныеЗаявления(Отказ)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Заявления", СведенияНеобходимыеДляНазначенияПособий.Выгрузить(,"НомерСтроки, Заявление, ПервичныйДокумент, ИзвещениеИзФССИспользование"));
Запрос.Текст =
"ВЫБРАТЬ
| Заявления.НомерСтроки КАК НомерСтроки,
| Заявления.Заявление КАК Заявление,
| Заявления.ПервичныйДокумент КАК ПервичныйДокумент,
| Заявления.ИзвещениеИзФССИспользование КАК ИзвещениеИзФССИспользование
|ПОМЕСТИТЬ ВТЗаявления
|ИЗ
| &Заявления КАК Заявления
|;
|
|
|ВЫБРАТЬ
| МИНИМУМ(ВТЗаявления.НомерСтроки) КАК НомерСтроки,
| ЗаявленияПовторы.НомерСтроки КАК НомерСтрокиПовтора,
| ВТЗаявления.Заявление КАК Заявление
|ИЗ
| ВТЗаявления КАК ВТЗаявления
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТЗаявления КАК ЗаявленияПовторы
| ПО ВТЗаявления.Заявление = ЗаявленияПовторы.Заявление
| И ВТЗаявления.ПервичныйДокумент = ЗаявленияПовторы.ПервичныйДокумент
| И ВТЗаявления.НомерСтроки < ЗаявленияПовторы.НомерСтроки
|
|СГРУППИРОВАТЬ ПО
| ВТЗаявления.Заявление,
| ВТЗаявления.ПервичныйДокумент,
| ЗаявленияПовторы.НомерСтроки
|ИТОГИ ПО
| Заявление
|;
|
|
|ВЫБРАТЬ
| ВТЗаявления.НомерСтроки КАК НомерСтроки,
| ВТЗаявления.Заявление КАК Заявление
|ИЗ
| ВТЗаявления КАК ВТЗаявления
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаявлениеСотрудникаНаВыплатуПособия КАК ЗаявлениеСотрудникаНаВыплатуПособия
| ПО ВТЗаявления.Заявление = ЗаявлениеСотрудникаНаВыплатуПособия.Ссылка
|ГДЕ
| НЕ ЗаявлениеСотрудникаНаВыплатуПособия.Проведен
|;
|
|
|ВЫБРАТЬ
| ВТЗаявления.Заявление КАК Заявление,
| ВТЗаявления.НомерСтроки КАК НомерСтроки,
| ДругиеРеестрыСЭтимиЗаявлениями.Ссылка КАК Ссылка
|ИЗ
| ВТЗаявления КАК ВТЗаявления
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий.СведенияНеобходимыеДляНазначенияПособий КАК ДругиеРеестрыСЭтимиЗаявлениями
| ПО ВТЗаявления.Заявление = ДругиеРеестрыСЭтимиЗаявлениями.Заявление
| И ВТЗаявления.ПервичныйДокумент = ДругиеРеестрыСЭтимиЗаявлениями.ПервичныйДокумент
|ГДЕ
| ДругиеРеестрыСЭтимиЗаявлениями.Ссылка <> &Ссылка
| И НЕ ДругиеРеестрыСЭтимиЗаявлениями.Ссылка.ПометкаУдаления
| И НЕ ВТЗаявления.ИзвещениеИзФССИспользование";
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
УстановитьПривилегированныйРежим(Истина);
МассивРезультатов = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
ПовторяющиесяЗаявления = МассивРезультатов[1];
НепроведенныеЗаявления = МассивРезультатов[2];
УжеИспользованныеЗаявления = МассивРезультатов[3];
ИмяТаблицы = "СведенияНеобходимыеДляНазначенияПособий";
Если Не ПовторяющиесяЗаявления.Пустой() Тогда
Выборка = ПовторяющиесяЗаявления.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока Выборка.Следующий() Цикл
ВыборкаПоЗаявлению = Выборка.Выбрать();
Если ВыборкаПоЗаявлению.Следующий() Тогда
ТекстПовторныеСтроки = "" + ВыборкаПоЗаявлению.НомерСтроки + ", " + ВыборкаПоЗаявлению.НомерСтрокиПовтора;
Пока ВыборкаПоЗаявлению.Следующий() Цикл
ТекстПовторныеСтроки = ТекстПовторныеСтроки + ", " + ВыборкаПоЗаявлению.НомерСтрокиПовтора;
КонецЦикла;
Текст = СтрШаблон(НСтр("ru = '%1 использовано в нескольких строках: %2.'"), Выборка.Заявление, ТекстПовторныеСтроки);
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Выборка, "Заявление", Текст);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Не НепроведенныеЗаявления.Пустой() Тогда
Выборка = НепроведенныеЗаявления.Выбрать();
Пока Выборка.Следующий() Цикл
Текст = СтрШаблон(НСтр("ru = 'Документ ""%1"" не проведен.'"), Выборка.Заявление);
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Выборка, "Заявление", Текст);
КонецЦикла;
КонецЕсли;
Если Не УжеИспользованныеЗаявления.Пустой() Тогда
Выборка = УжеИспользованныеЗаявления.Выбрать();
Пока Выборка.Следующий() Цикл
Текст = СтрШаблон(НСтр("ru = '%1 уже использовано в документе %2.'"), Выборка.Заявление, Выборка.Ссылка);
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Выборка, "Заявление", Текст);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьТребованияФормата(Отказ)
ПроверкиБЗК.ПроверитьЗаполнениеРеквизитаОбъекта(Отказ, ЭтотОбъект, "РеестрСоставил");
ПроверкиБЗК.ПроверитьЗаполнениеРеквизитаОбъекта(Отказ, ЭтотОбъект, "ТелефонСоставителя");
ПроверкиБЗК.ПроверитьЗаполнениеЭлектроннойПочтыОбъекта(Отказ, ЭтотОбъект, "АдресЭлектроннойПочтыСоставителя");
ЭтоЮридическоеЛицо = ЗарплатаКадры.ЭтоЮридическоеЛицо(Организация);
Если ЗначениеЗаполнено(КПП) Тогда
ПроверитьКППВШапке(Отказ, "КПП");
КонецЕсли;
ПроверитьИННВШапке(Отказ, "ИНН", ЭтоЮридическоеЛицо);
Если ЗначениеЗаполнено(ОГРН) Тогда
ПроверитьОГРНВШапке(Отказ, "ОГРН", ЭтоЮридическоеЛицо);
КонецЕсли;
ПроверитьРегистрационныйНомерФСС(Отказ, "РегистрационныйНомерФСС", Истина);
ПроверитьРегистрационныйНомерФСС(Отказ, "ДополнительныйКодФСС", Ложь);
ИмяТаблицы = "СведенияНеобходимыеДляНазначенияПособий";
ЭтоЛН = (ВидРеестра = Перечисления.ВидыРеестровСведенийНеобходимыхДляНазначенияИВыплатыПособий.ПособияПоНетрудоспособности);
Менеджер = Документы.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий;
Для Каждого Строка Из СведенияНеобходимыеДляНазначенияПособий Цикл
Если ЗначениеЗаполнено(Строка.Заявление) Тогда
СведенияОбъект = Строка.Заявление.ПолучитьОбъект();
ПроверитьЗаполнениеСведений(Отказ, СведенияОбъект);
Иначе
СведенияОбъект = Неопределено;
КонецЕсли;
Если ЭтоЛН Тогда
ПроверитьНомерЛН(Отказ, ИмяТаблицы, Строка, "НомерЛисткаНетрудоспособности");
Если Менеджер.ТребуетсяЗаполнитьСведенияОЛисткеНетрудоспособности(Строка) Тогда
Если ЗначениеЗаполнено(Строка.НомерПервичногоЛисткаНетрудоспособности) Тогда
ПроверитьНомерЛН(Отказ, ИмяТаблицы, Строка, "НомерПервичногоЛисткаНетрудоспособности");
КонецЕсли;
Если СведенияОбъект <> Неопределено
И СведенияОбъект.ТипЗанятостиРаботника <> Перечисления.ВидыЗанятости.ОсновноеМестоРаботы Тогда
Если ЗначениеЗаполнено(Строка.НомерЛисткаПоОсновномуМестуРаботы) Тогда
ПроверитьНомерЛН(Отказ, ИмяТаблицы, Строка, "НомерЛисткаПоОсновномуМестуРаботы");
Иначе
Текст = НСтр("ru = 'Для совместителя должен быть указан номер листка нетрудоспособности, предъявляемого на основном месте работы.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "НомерЛисткаПоОсновномуМестуРаботы", Текст);
КонецЕсли;
КонецЕсли;
ПроверитьЗаполнениеРеквизитаСтрокиТаблицы(Отказ, ИмяТаблицы, Строка, "ДатаВыдачиЛисткаНетрудоспособности");
ПроверитьЗаполнениеРеквизитаСтрокиТаблицы(Отказ, ИмяТаблицы, Строка, "КодПричиныНетрудоспособности");
КонецЕсли;
КонецЕсли;
Если Строка.ИзвещениеИзФССИспользование Тогда
ПроверитьЗаполнениеРеквизитаСтрокиТаблицы(Отказ, ИмяТаблицы, Строка, "ИзвещениеИзФССДата");
Если Не ЗначениеЗаполнено(Строка.ИзвещениеИзФССНомер) Тогда
ПроверитьЗаполнениеРеквизитаСтрокиТаблицы(Отказ, ИмяТаблицы, Строка, "ИзвещениеИзФССНомер");
ИначеЕсли СтрДлина(Строка.ИзвещениеИзФССНомер) > 12 Тогда
Текст = НСтр("ru = 'В номере извещения ФСС %1 символов, а должно быть не более 12.'");
Текст = СтрШаблон(Текст, СтрДлина(Строка.ИзвещениеИзФССНомер));
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ИзвещениеИзФССНомер", Текст);
Иначе
ЛишниеСимволы = СтроковыеФункцииБЗККлиентСервер.УдалитьЦифрыИзСтроки(Строка.ИзвещениеИзФССНомер);
Если Не ПустаяСтрока(ЛишниеСимволы) Тогда
Если СтрДлина(ЛишниеСимволы) = 1 Тогда
Текст = НСтр("ru = 'В номере извещения ФСС должны быть только цифры (%1 - не цифра).'");
Иначе
Текст = НСтр("ru = 'В номере извещения ФСС должны быть только цифры (%1 - не цифры).'");
КонецЕсли;
Текст = СтрШаблон(Текст, ЛишниеСимволы);
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ИзвещениеИзФССНомер", Текст);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Строка.ПервичныйДокумент)
И ТипЗнч(Строка.ПервичныйДокумент) = Тип("ДокументСсылка.УведомлениеОПрекращенииОтпускаПоУходуЗаРебенком")
И СведенияОбъект <> Неопределено
И Не СведенияОбъект.Перерасчет Тогда
Текст = НСтр("ru = 'В сведениях для реестра необходимо включить флажок ""Перерасчет"".'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "Заявление", Текст);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ПроверитьНомерЛН(Отказ, ИмяТаблицы, Строка, ИмяРеквизита)
НомерЛН = Строка[ИмяРеквизита];
Если Документы.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий.ФорматНомераЛНСоответствуетКоду2(НомерЛН) Тогда
ТекстОшибки = "";
Иначе
ТекстОшибки = УчетПособийСоциальногоСтрахования.ПроверитьНомерЛН(НомерЛН);
КонецЕсли;
Если ТекстОшибки <> "" Тогда
ПредставлениеРеквизита = Метаданные().ТабличныеЧасти[ИмяТаблицы].Реквизиты[ИмяРеквизита].Представление();
Если Не ЗначениеЗаполнено(НомерЛН) Тогда
Текст = СтрШаблон(НСтр("ru = 'Не заполнено поле ""%1"".'"), ПредставлениеРеквизита);
Иначе
Текст = СтрШаблон(НСтр("ru = 'Неверно заполнено поле ""%1"": %2'"), ПредставлениеРеквизита, ТекстОшибки);
КонецЕсли;
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, ИмяРеквизита, Текст);
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьКППВШапке(Отказ, ИмяРеквизита)
Текст = "";
Успех = РегламентированныеДанныеКлиентСервер.КППСоответствуетТребованиям(ЭтотОбъект[ИмяРеквизита], Текст);
Если Не Успех Тогда
СообщенияБЗК.СообщитьОбОшибкеВОбъекте(Отказ, ЭтотОбъект, Текст, ИмяРеквизита);
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьИННВШапке(Отказ, ИмяРеквизита, ЭтоЮридическоеЛицо)
Текст = "";
ИНН = ЭтотОбъект[ИмяРеквизита];
Успех = РегламентированныеДанныеКлиентСервер.ИННСоответствуетТребованиям(ИНН, ЭтоЮридическоеЛицо, Текст);
Если Не Успех Тогда
СообщенияБЗК.СообщитьОбОшибкеВОбъекте(Отказ, ЭтотОбъект, Текст, ИмяРеквизита);
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьОГРНВШапке(Отказ, ИмяРеквизита, ЭтоЮридическоеЛицо)
РезультатПроверки = ПроверкиБЗК.РезультатПроверкиОГРН(ЭтотОбъект[ИмяРеквизита]);
Если Не РезультатПроверки.Успех Тогда
ТекстОшибки = СтрШаблон(
НСтр("ru = '%1: ОГРН ""%2"" содержит ошибку: %3'"),
Метаданные().Реквизиты[ИмяРеквизита].Представление(),
ЭтотОбъект[ИмяРеквизита],
РезультатПроверки.Пояснение);
СообщенияБЗК.СообщитьОбОшибкеВОбъекте(Отказ, ЭтотОбъект, ТекстОшибки, ИмяРеквизита);
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьРегистрационныйНомерФСС(Отказ, ИмяРеквизита, ТребоватьЗаполнить)
РегистрационныйНомер = СокрЛП(ЭтотОбъект[ИмяРеквизита]);
Если Не ЗначениеЗаполнено(РегистрационныйНомер) Тогда
Если ТребоватьЗаполнить Тогда
ПроверкиБЗК.ПроверитьЗаполнениеРеквизитаОбъекта(Отказ, ЭтотОбъект, ИмяРеквизита);
КонецЕсли;
ИначеЕсли СтрДлина(РегистрационныйНомер) <> 10 Тогда
Текст = НСтр("ru = 'В регистрационном номере ФСС %1 символов, а должно быть 10.'");
Текст = СтрШаблон(Текст, СтрДлина(РегистрационныйНомер));
СообщенияБЗК.СообщитьОбОшибкеВОбъекте(Отказ, ЭтотОбъект, Текст, ИмяРеквизита);
Иначе
ЛишниеСимволы = СтроковыеФункцииБЗККлиентСервер.УдалитьЦифрыИзСтроки(РегистрационныйНомер);
Если ЛишниеСимволы <> "" Тогда
Если СтрДлина(ЛишниеСимволы) = 1 Тогда
Текст = НСтр("ru = 'В регистрационном номере ФСС должны быть только цифры (""%1"" - не цифра).'");
Иначе
Текст = НСтр("ru = 'В регистрационном номере ФСС должны быть только цифры (""%1"" - не цифры).'");
КонецЕсли;
Текст = СтрШаблон(Текст, ЛишниеСимволы);
СообщенияБЗК.СообщитьОбОшибкеВОбъекте(Отказ, ЭтотОбъект, Текст, ИмяРеквизита);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьЗаполнениеСведений(Отказ, СведенияОбъект)
СообщенияДоНачалаПроверки = ПолучитьСообщенияПользователю(Истина);
ПроверкаЗаполненияПройдена = СведенияОбъект.ПроверитьЗаполнение();
СообщенияЗаявления = ПолучитьСообщенияПользователю(Истина);
Для Каждого Сообщение Из СообщенияДоНачалаПроверки Цикл
Сообщение.Сообщить();
КонецЦикла;
Если Не ПроверкаЗаполненияПройдена Тогда
Отказ = Истина;
Если СообщенияЗаявления.Количество() = 0 Тогда
Текст = СтрШаблон(
НСтр("ru = 'При проверке сведений %1 от %2 обнаружены ошибки.'"),
СведенияОбъект.Сотрудник,
Формат(СведенияОбъект.Дата, "ДФ='d MMMM'"));
СообщенияБЗК.СообщитьОПроблеме(Текст, СведенияОбъект.Ссылка);
КонецЕсли;
КонецЕсли;
Если СообщенияЗаявления.Количество() > 0 Тогда
ПрефиксДокумента = СтрШаблон(
НСтр("ru = 'Сведения %1 от %2: '"),
СведенияОбъект.Сотрудник,
Формат(СведенияОбъект.Дата, "ДФ='d MMMM'"));
Для Каждого Сообщение Из СообщенияЗаявления Цикл
Сообщение.Текст = ПрефиксДокумента + Сообщение.Текст;
Сообщение.КлючДанных = СведенияОбъект.Ссылка;
Сообщение.Сообщить();
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ПроверкиЗаполненияПоРегламентуФСС
Функция ПроверитьЗаполнениеПоРегламентуФСС() Экспорт
Отказ = Ложь;
ПроверкиБЗК.ПроверитьЗаполнениеРеквизитаОбъекта(Отказ, ЭтотОбъект, "КодПодчиненностиФСС");
ПроверкиБЗК.ПроверитьЗаполнениеРеквизитаОбъекта(Отказ, ЭтотОбъект, "ИНН");
Если ЗарплатаКадры.ЭтоЮридическоеЛицо(Организация) Тогда
ПроверкиБЗК.ПроверитьЗаполнениеРеквизитаОбъекта(Отказ, ЭтотОбъект, "КПП");
ПроверкиБЗК.ПроверитьЗаполнениеРеквизитаОбъекта(Отказ, ЭтотОбъект, "ГлавныйБухгалтер");
ПроверкиБЗК.ПроверитьЗаполнениеРеквизитаОбъекта(Отказ, ЭтотОбъект, "ДолжностьРуководителя");
КонецЕсли;
Если ВидРеестра = Перечисления.ВидыРеестровСведенийНеобходимыхДляНазначенияИВыплатыПособий.ПособияПоНетрудоспособности Тогда
ПроверитьЗаполнениеСтрокСведенийПоВременнойНетрудоспособности(Отказ);
ИначеЕсли ВидРеестра = Перечисления.ВидыРеестровСведенийНеобходимыхДляНазначенияИВыплатыПособий.ЕжемесячныеПособияПоУходуЗаРебенком Тогда
ПроверитьЗаполнениеСтрокСведенийПоУходуЗаРебенком(Отказ);
КонецЕсли;
ПроверитьДатуПредставленияПакетаДокументов(Отказ);
Возврат Отказ = Ложь;
КонецФункции
Процедура ПроверитьЗаполнениеСтрокСведенийПоВременнойНетрудоспособности(Отказ)
ИмяТаблицы = "СведенияНеобходимыеДляНазначенияПособий";
РеквизитыЗаявлений = РеквизитыЗаявлений();
ЭтоБольничный = (ВидРеестра = Перечисления.ВидыРеестровСведенийНеобходимыхДляНазначенияИВыплатыПособий.ПособияПоНетрудоспособности);
Менеджер = Документы.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий;
Для Каждого Строка Из СведенияНеобходимыеДляНазначенияПособий Цикл
Если Не ЗначениеЗаполнено(Строка.Заявление) Тогда
Продолжить;
КонецЕсли;
Если Строка.ЭтоЭЛН И Менеджер.ФорматНомераЛНСоответствуетКоду2(Строка.НомерЛисткаНетрудоспособности) Тогда
Текст = НСтр("ru = 'Для введенного номера ЛН следует отключить флажок ЭЛН.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ЭтоЭЛН", Текст);
КонецЕсли;
РеквизитыЗаявления = РеквизитыЗаявлений.Получить(Строка.Заявление);
ЭтоПособиеПоБеременностиИРодам = ЭтоБольничный И (
РеквизитыЗаявления.ВидПособия = Перечисления.ПособияНазначаемыеФСС.ПособиеПоБеременностиИРодам
Или РеквизитыЗаявления.ВидПособия = Перечисления.ПособияНазначаемыеФСС.ПособиеПоБеременностиИРодамВставшимНаУчетВРанниеСроки);
Если ЭтоБольничный И Менеджер.ТребуетсяЗаполнитьСведенияОЛисткеНетрудоспособности(Строка) Тогда
ПроверитьСведенияОЛисткеНетрудоспособности(Отказ, ИмяТаблицы, Строка, ЭтоПособиеПоБеременностиИРодам);
КонецЕсли;
Если ЭтоПособиеПоБеременностиИРодам Тогда
Если Строка.КодПричиныНетрудоспособности <> "05" Тогда
Текст = НСтр("ru = 'Для пособия по беременности и родам должен быть указан код причины нетрудоспособности 05.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "КодПричиныНетрудоспособности", Текст);
КонецЕсли;
Если РеквизитыЗаявления.ПорядокРасчетаСреднегоЗаработка <> Перечисления.СпособыРасчетаСреднегоЗаработкаДляОплатыПособия.СреднийЗаработок Тогда
ДатаПроверки = УчетПособийСоциальногоСтрахованияКлиентСервер.ДатаОтдельногоРасчетаПособийПоМатеринству();
Если Строка.ОсвобождениеДатаНачала1 >= ДатаПроверки Тогда
Текст = НСтр("ru = 'Для отпуска по беременности и родам, начинающегося 1 января 2013 года или позже, указан недопустимый порядок расчета среднего заработка: из оклада или МРОТ.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ПорядокРасчетаСреднегоЗаработка", Текст);
КонецЕсли;
КонецЕсли;
Если Строка.ПоставленаНаУчетВРанниеСрокиБеременности = Перечисления.ПостановкаНаУчетВРанниеСрокиБеременности.Поставлена
И Не УчетПособийСоциальногоСтрахования.ДоступноПособиеВставшимНаУчетВРанниеСроки(Строка.ОсвобождениеДатаНачала1) Тогда
Текст = НСтр("ru = 'Единовременное пособие вставшим на учет в ранние сроки беременности отменено с 1 июля 2021 года.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ПоставленаНаУчетВРанниеСрокиБеременности", Текст);
КонецЕсли;
КонецЕсли;
Если (Строка.УсловияИсчисленияКод1 = "46" Или Строка.УсловияИсчисленияКод2 = "46" Или Строка.УсловияИсчисленияКод3 = "46")
И (Не ЗначениеЗаполнено(РеквизитыЗаявления.ДатаНачалаТрудовогоДоговораПолучателя)
Или Не ЗначениеЗаполнено(РеквизитыЗаявления.ДатаОкончанияТрудовогоДоговораПолучателя)) Тогда
Текст = НСтр("ru = 'Для принятого по срочному трудовому договору сроком менее 6 месяцев должен быть указан период этого договора.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ДатаНачалаТрудовогоДоговораПолучателя", Текст);
КонецЕсли;
Если РеквизитыЗаявления.ВидПособия <> Перечисления.ПособияНазначаемыеФСС.ПособиеВСвязиСНесчастнымСлучаемНаПроизводстве
И Не ЗначениеЗаполнено(Строка.СтажЛет)
И Не ЗначениеЗаполнено(Строка.СтажМесяцев) Тогда
Текст = НСтр("ru = 'Не заполнен стаж.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "СтажЛет", Текст);
КонецЕсли;
Если (Строка.УсловияИсчисленияКод1 = "43" Или Строка.УсловияИсчисленияКод2 = "43" Или Строка.УсловияИсчисленияКод3 = "43")
И Не ЗначениеЗаполнено(Строка.ФинансированиеФедеральнымБюджетом) Тогда
Текст = НСтр("ru = 'Для лица, подвергшегося воздействию радиации, не указана причина этого воздействия'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ФинансированиеФедеральнымБюджетом", Текст);
КонецЕсли;
Если ЕстьОплатаЗаСчетФСС(Строка) Тогда
ПериодОплатыЗаполнен = ПроверкиБЗК.ПроверитьПериодВСтрокеТаблицы(
Отказ,
ЭтотОбъект,
ИмяТаблицы,
Строка,
"ДатаНачалаОплаты",
"ДатаОкончанияОплаты",
НСтр("ru = 'выплаты пособия за счет ФСС'"));
Если ПериодОплатыЗаполнен Тогда
Если Строка.ДатаНачалаОплаты < Строка.ОсвобождениеДатаНачала1 Тогда
Текст = НСтр("ru = 'Период оплаты за счет ФСС начинается до начала периода освобождения от работы.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ДатаОкончанияОплаты", Текст);
КонецЕсли;
Если Строка.ДатаОкончанияОплаты > Макс(Строка.ОсвобождениеДатаОкончания1, Строка.ОсвобождениеДатаОкончания2, Строка.ОсвобождениеДатаОкончания3) Тогда
Текст = НСтр("ru = 'Период оплаты за счет ФСС заканчивается после окончания периода освобождения от работы.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ДатаОкончанияОплаты", Текст);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ПроверитьСведенияОЛисткеНетрудоспособности(Отказ, ИмяТаблицы, Строка, ЭтоПособиеПоБеременностиИРодам)
ЭтоСанаторнаяПутевка = ЭтоСанаторнаяПутевка(Строка);
ПроверитьЗаполнениеРеквизитаСтрокиТаблицы(Отказ, ИмяТаблицы, Строка, "НаименованиеМедицинскойОрганизации");
ПроверитьОГРНВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ОГРНМедицинскойОрганизации");
Если ЭтоПособиеПоБеременностиИРодам
И Не ЗначениеЗаполнено(Строка.ДатаИзмененияКодаПричиныНетрудоспособности)
И Строка.ЯвляетсяПервичнымЛисткомНетрудоспособности
И Не ЗначениеЗаполнено(Строка.ДополнительныйКодПричиныНетрудоспособности) Тогда
Текст = НСтр("ru = 'Для пособия по беременности и родам в поле ""Дата 1"" должна быть указана предполагаемая дата родов.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ДатаИзмененияКодаПричиныНетрудоспособности", Текст);
ИначеЕсли ЗначениеЗаполнено(Строка.ВторойКодПричиныНетрудоспособности)
И Не ЗначениеЗаполнено(Строка.ДатаИзмененияКодаПричиныНетрудоспособности) Тогда
Текст = НСтр("ru = 'В поле ""Дата 1"" не указана дата изменения кода причины нетрудоспособности.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ДатаИзмененияКодаПричиныНетрудоспособности", Текст);
ИначеЕсли ЭтоСанаторнаяПутевка
И Не ЗначениеЗаполнено(Строка.ДатаИзмененияКодаПричиныНетрудоспособности) Тогда
Текст = НСтр("ru = 'В поле ""Дата 1"" не указана дата начала санаторной путевки.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ДатаИзмененияКодаПричиныНетрудоспособности", Текст);
КонецЕсли;
Если ЭтоСанаторнаяПутевка Тогда
Если Не ЗначениеЗаполнено(Строка.ДатаОкончанияПутевки) Тогда
Текст = НСтр("ru = 'В поле ""Дата 2"" не указана дата окончания санаторной путевки.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ДатаОкончанияПутевки", Текст);
КонецЕсли;
ПроверитьОГРНВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ОГРН_Санатория");
КонецЕсли;
Если ЭтоУходЗаРодственниками(Строка) Тогда
Если Не ЗначениеЗаполнено(Строка.ПоУходуФИО1) Тогда
Текст = НСтр("ru = 'Не заполнено ФИО первого родственника, за которым осуществлялся уход.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ПоУходуФИО1", Текст);
КонецЕсли;
Если Не ЗначениеЗаполнено(Строка.ПоУходуВозрастЛет1 + Строка.ПоУходуВозрастМесяцев1) Тогда
Текст = НСтр("ru = 'Не заполнен возраст первого родственника, за которым осуществлялся уход.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ПоУходуВозрастЛет1", Текст);
КонецЕсли;
Если Не ЗначениеЗаполнено(Строка.ПоУходуРодственнаяСвязь1) Тогда
Текст = НСтр("ru = 'Не заполнена родственная связь первого родственника, за которым осуществлялся уход.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ПоУходуРодственнаяСвязь1", Текст);
КонецЕсли;
Если ЗначениеЗаполнено(Строка.ПоУходуФИО2) Тогда
Если Не ЗначениеЗаполнено(Строка.ПоУходуВозрастЛет2 + Строка.ПоУходуВозрастМесяцев2) Тогда
Текст = НСтр("ru = 'Не заполнен возраст второго родственника, за которым осуществлялся уход.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ПоУходуВозрастЛет2", Текст);
КонецЕсли;
Если Не ЗначениеЗаполнено(Строка.ПоУходуРодственнаяСвязь2) Тогда
Текст = НСтр("ru = 'Не заполнена родственная связь второго родственника, за которым осуществлялся уход.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ПоУходуРодственнаяСвязь2", Текст);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ЭтоНарушениеРежима(Строка) Тогда
ПроверитьЗаполнениеРеквизитаСтрокиТаблицы(Отказ, ИмяТаблицы, Строка, "ДатаНарушенияРежима");
ПроверитьЗаполнениеРеквизитаСтрокиТаблицы(Отказ, ИмяТаблицы, Строка, "КодНарушенияРежима");
КонецЕсли;
Если ЗначениеЗаполнено(Строка.ГруппаИнвалидности)
И ДопустимыеГруппыИнвалидности().Найти(Строка.ГруппаИнвалидности) = Неопределено Тогда
Текст = НСтр("ru = 'Группа инвалидности %1 не поддерживается форматом обмена с ФСС.'");
Текст = СтрШаблон(Текст, Строка.ГруппаИнвалидности);
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ГруппаИнвалидности", Текст);
КонецЕсли;
ПериодыНетрудоспособностиЗаполнены = ПроверитьПериодНетрудоспособности(
Отказ,
Строка,
1,
ИмяТаблицы,
НСтр("ru = 'первого периода освобождения от работы'"));
Если ЗначениеЗаполнено(Строка.ОсвобождениеДатаНачала2) Тогда
ПериодЗаполнен = ПроверитьПериодНетрудоспособности(
Отказ,
Строка,
2,
ИмяТаблицы,
НСтр("ru = 'второго периода освобождения от работы'"));
Если ПериодЗаполнен И Строка.ОсвобождениеДатаОкончания1 + 86400 <> Строка.ОсвобождениеДатаНачала2 Тогда
Текст = НСтр("ru = 'Начало второго периода освобождения от работы должно непосредственно следовать за окончанием первого периода.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ОсвобождениеДатаНачала2", Текст);
КонецЕсли;
ПериодыНетрудоспособностиЗаполнены = ПериодыНетрудоспособностиЗаполнены И ПериодЗаполнен;
КонецЕсли;
Если ЗначениеЗаполнено(Строка.ОсвобождениеДатаНачала3) Тогда
ПериодЗаполнен = ПроверитьПериодНетрудоспособности(
Отказ,
Строка,
3,
ИмяТаблицы,
НСтр("ru = 'третьего периода освобождения от работы'"));
Если ПериодЗаполнен И Строка.ОсвобождениеДатаОкончания2 + 86400 <> Строка.ОсвобождениеДатаНачала3 Тогда
Текст = НСтр("ru = 'Начало третьего периода освобождения от работы должно непосредственно следовать за окончанием второго периода.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ОсвобождениеДатаНачала3", Текст);
КонецЕсли;
ПериодыНетрудоспособностиЗаполнены = ПериодыНетрудоспособностиЗаполнены И ПериодЗаполнен;
КонецЕсли;
Если Строка.ДатаВыдачиЛисткаНетрудоспособности > Строка.ОсвобождениеДатаНачала1
И Не ЭтоНахождениеВСтационареСРебенком(Строка)
И Не ЭтоПродолжение(Строка)
И ЗначениеЗаполнено(Строка.НомерЛисткаПродолжения) Тогда
Текст = НСтр("ru = 'Листок нетрудоспособности выдан после начала освобождения от работы.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ДатаВыдачиЛисткаНетрудоспособности", Текст);
КонецЕсли;
Если ЭтоНахождениеВСтационареСРебенком(Строка) Тогда
ПроверкиБЗК.ПроверитьПериодВСтрокеТаблицы(
Отказ,
ЭтотОбъект,
ИмяТаблицы,
Строка,
"ПериодНахожденияВСтационареСРебенкомС",
"ПериодНахожденияВСтационареСРебенкомПо",
НСтр("ru = 'нахождения в стационаре'"));
КонецЕсли;
Если ЕстьИзменениеСостоянияНетрудоспособного(Строка) Тогда
Если Не ЗначениеЗаполнено(Строка.НовыйСтатусНетрудоспособного) Тогда
Текст = НСтр("ru = 'В поле ""Иное"" не заполнен код изменения состояния нетрудоспособного.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "НовыйСтатусНетрудоспособного", Текст);
ИначеЕсли Не ЗначениеЗаполнено(Строка.ДатаНовыйСтатусНетрудоспособного)
И (Строка.НовыйСтатусНетрудоспособного = "32"
Или Строка.НовыйСтатусНетрудоспособного = "33"
Или Строка.НовыйСтатусНетрудоспособного = "34"
Или Строка.НовыйСтатусНетрудоспособного = "36") Тогда
Текст = НСтр("ru = 'В поле ""Иное"" не заполнена дата изменения состояния нетрудоспособного.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ДатаНовыйСтатусНетрудоспособного", Текст);
КонецЕсли;
ИначеЕсли Не ЭЛНКарантинПоКоронавирусу(Строка.ПервичныйДокумент) Тогда
ПроверитьЗаполнениеРеквизитаСтрокиТаблицы(Отказ, ИмяТаблицы, Строка, "ПриступитьКРаботеС");
КонецЕсли;
Если ЭтоПродолжение(Строка) Тогда
ПроверитьНомерЛН(Отказ, ИмяТаблицы, Строка, "НомерЛисткаПродолжения");
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьОГРНВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, ИмяРеквизита)
ОГРНСтроки = Строка[ИмяРеквизита];
Если ЗначениеЗаполнено(ОГРНСтроки) Тогда
РезультатПроверки = ПроверкиБЗК.РезультатПроверкиОГРН(ОГРНСтроки);
Если Не РезультатПроверки.Успех Тогда
ТекстОшибки = СтрШаблон(
НСтр("ru = '%1: ОГРН ""%2"" содержит ошибку: %3'"),
Метаданные().ТабличныеЧасти[ИмяТаблицы].Реквизиты[ИмяРеквизита].Представление(),
ОГРНСтроки,
РезультатПроверки.Пояснение);
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, ИмяРеквизита, ТекстОшибки);
КонецЕсли;
Иначе
ПроверкиБЗК.ПроверитьЗаполнениеРеквизитаСтрокиТаблицы(
Отказ,
ЭтотОбъект,
ИмяТаблицы,
Строка,
ИмяРеквизита);
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьЗаполнениеСтрокСведенийПоУходуЗаРебенком(Отказ)
ИмяТаблицы = "СведенияНеобходимыеДляНазначенияПособий";
РеквизитыЗаявлений = РеквизитыЗаявлений();
Для Каждого Строка Из СведенияНеобходимыеДляНазначенияПособий Цикл
Если Не ЗначениеЗаполнено(Строка.ФамилияРебенка) Тогда
Текст = НСтр("ru = 'Не заполнена фамилия ребенка.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ФамилияРебенка", Текст);
КонецЕсли;
Если Не ЗначениеЗаполнено(Строка.ИмяРебенка) Тогда
Текст = НСтр("ru = 'Не заполнено имя ребенка.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ИмяРебенка", Текст);
КонецЕсли;
Если Не ЗначениеЗаполнено(Строка.ДатаРожденияРебенка) Тогда
Текст = НСтр("ru = 'Не заполнена дата рождения ребенка.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ДатаРожденияРебенка", Текст);
КонецЕсли;
Если Не ЗначениеЗаполнено(Строка.ОчередностьРожденияРебенка) Тогда
Текст = НСтр("ru = 'Не заполнена очередность рождения ребенка.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ОчередностьРожденияРебенка", Текст);
КонецЕсли;
Если Не ЗначениеЗаполнено(Строка.ВидПодтверждающегоДокумента) Тогда
Текст = НСтр("ru = 'Не заполнен вид подтверждающего документа.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ВидПодтверждающегоДокумента", Текст);
КонецЕсли;
Если Не ЗначениеЗаполнено(Строка.НаименованиеПодтверждающегоДокумента) Тогда
Текст = НСтр("ru = 'Не заполнено наименование подтверждающего документа.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "НаименованиеПодтверждающегоДокумента", Текст);
КонецЕсли;
Если Не ЗначениеЗаполнено(Строка.ДатаДокумента) Тогда
Текст = НСтр("ru = 'Не заполнена дата подтверждающего документа.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ДатаДокумента", Текст);
КонецЕсли;
Если Строка.ВидПодтверждающегоДокумента = Перечисления.ВидыПодтверждающихДокументовОтпускаПоУходу.СвидетельствоОРождении
И Не ЗначениеЗаполнено(Строка.СерияДокумента) Тогда
Текст = НСтр("ru = 'Не заполнена серия подтверждающего документа.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "СерияДокумента", Текст);
КонецЕсли;
Если Не ЗначениеЗаполнено(Строка.НомерДокумента) Тогда
Текст = НСтр("ru = 'Не заполнен номер подтверждающего документа.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "НомерДокумента", Текст);
КонецЕсли;
РеквизитыЗаявления = РеквизитыЗаявлений.Получить(Строка.Заявление);
Если РеквизитыЗаявления <> Неопределено Тогда
Если Строка.ОчередностьРожденияРебенка > 1
И Не РеквизитыЗаявления.НаличиеОдногоИзДокументовНаПредыдущихДетей
И Не РеквизитыЗаявления.НаличиеСвидетельстваОСмертиПредыдущихДетей Тогда
Текст = НСтр("ru = 'Для второго и последующих детей должен быть включен один из флажков: ""Наличие документов на предыдущих детей"", ""Наличие свидетельства о его (их) смерти"".'");
СообщенияБЗК.СообщитьОбОшибкеВОбъекте(Отказ, РеквизитыЗаявления.Ссылка, Текст, "НаличиеОдногоИзДокументовНаПредыдущихДетей");
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ПроверитьДатуПредставленияПакетаДокументов(Отказ)
ИмяТаблицы = "СведенияНеобходимыеДляНазначенияПособий";
МинимальнаяДатаПолучения = НачалоДня(Мин(Дата, ТекущаяДатаСеанса()) - 5*86400);
РеквизитыЗаявлений = РеквизитыЗаявлений();
Для Каждого Строка Из СведенияНеобходимыеДляНазначенияПособий Цикл
Если ЗначениеЗаполнено(Строка.ДатаПредставленияПакетаДокументов) Тогда
ДатаПолучения = Строка.ДатаПредставленияПакетаДокументов;
Иначе
РеквизитыЗаявления = РеквизитыЗаявлений.Получить(Строка.Заявление);
Если ЗначениеЗаполнено(РеквизитыЗаявления.ДатаПредставленияПакетаДокументов) Тогда
ДатаПолучения = РеквизитыЗаявления.ДатаПредставленияПакетаДокументов;
Иначе
ДатаПолучения = РеквизитыЗаявления.Дата;
КонецЕсли;
КонецЕсли;
Если НачалоДня(ДатаПолучения) < МинимальнаяДатаПолучения Тогда
Текст = НСтр("ru = 'Прошло более 5 календарных дней с даты представления застрахованным лицом заявления и документов.'");
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ДатаПредставленияПакетаДокументов", Текст);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция ПроверитьПериодНетрудоспособности(Отказ, Строка, НомерПериода, ИмяТаблицы, Представление)
ПериодЗаполнен = ПроверкиБЗК.ПроверитьПериодВСтрокеТаблицы(
Отказ,
ЭтотОбъект,
ИмяТаблицы,
Строка,
"ОсвобождениеДатаНачала" + НомерПериода,
"ОсвобождениеДатаОкончания" + НомерПериода,
Представление);
Если Не ЗначениеЗаполнено(Строка["ОсвобождениеФИОВрача" + НомерПериода]) Тогда
Текст = НСтр("ru = 'Не заполнено ФИО врача %1.'");
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Текст, Представление);
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ОсвобождениеФИОВрача" + НомерПериода, Текст);
ПериодЗаполнен = Ложь;
КонецЕсли;
Если Не ЗначениеЗаполнено(Строка["ОсвобождениеДолжностьВрача" + НомерПериода]) Тогда
Текст = НСтр("ru = 'Не заполнена должность врача %1.'");
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Текст, Представление);
СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, "ОсвобождениеДолжностьВрача" + НомерПериода, Текст);
ПериодЗаполнен = Ложь;
КонецЕсли;
Возврат ПериодЗаполнен;
КонецФункции
Функция ЭтоСанаторнаяПутевка(Строка)
Возврат Строка.КодПричиныНетрудоспособности = "08"
Или Строка.ВторойКодПричиныНетрудоспособности = "08"
Или Строка.ДополнительныйКодПричиныНетрудоспособности = "017"
Или Строка.ДополнительныйКодПричиныНетрудоспособности = "018"
Или Строка.ДополнительныйКодПричиныНетрудоспособности = "019"
Или ЗначениеЗаполнено(Строка.ДатаОкончанияПутевки);
КонецФункции
Функция ЭтоУходЗаРодственниками(Строка)
Возврат Строка.КодПричиныНетрудоспособности = "09"
Или Строка.КодПричиныНетрудоспособности = "12"
Или Строка.КодПричиныНетрудоспособности = "13"
Или Строка.КодПричиныНетрудоспособности = "14"
Или Строка.КодПричиныНетрудоспособности = "15"
Или Строка.ВторойКодПричиныНетрудоспособности = "09"
Или Строка.ВторойКодПричиныНетрудоспособности = "12"
Или Строка.ВторойКодПричиныНетрудоспособности = "13"
Или Строка.ВторойКодПричиныНетрудоспособности = "14"
Или Строка.ВторойКодПричиныНетрудоспособности = "15";
КонецФункции
Функция ЭтоНарушениеРежима(Строка)
Возврат ЗначениеЗаполнено(Строка.ДатаНарушенияРежима)
Или ЗначениеЗаполнено(Строка.КодНарушенияРежима);
КонецФункции
Функция ЭтоНахождениеВСтационареСРебенком(Строка)
Возврат ЗначениеЗаполнено(Строка.ПериодНахожденияВСтационареСРебенкомС)
Или ЗначениеЗаполнено(Строка.ПериодНахожденияВСтационареСРебенкомПо);
КонецФункции
Функция ЭтоПродолжение(Строка)
Возврат Строка.НовыйСтатусНетрудоспособного = "31";
КонецФункции
Функция ЕстьОплатаЗаСчетФСС(Строка)
Возврат ЗначениеЗаполнено(Строка.ДатаНачалаОплаты)
Или ЗначениеЗаполнено(Строка.ДатаОкончанияОплаты);
КонецФункции
Функция ЕстьИзменениеСостоянияНетрудоспособного(Строка)
Возврат ЗначениеЗаполнено(Строка.НовыйСтатусНетрудоспособного)
Или ЗначениеЗаполнено(Строка.ДатаНовыйСтатусНетрудоспособного);
КонецФункции
Функция РеквизитыЗаявлений()
РеквизитыЗаявлений = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "РеквизитыЗаявлений");
Если РеквизитыЗаявлений <> Неопределено Тогда
Возврат РеквизитыЗаявлений;
КонецЕсли;
МассивЗаявлений = СведенияНеобходимыеДляНазначенияПособий.ВыгрузитьКолонку("Заявление");
ИменаРеквизитов = Новый Массив;
ИменаРеквизитов.Добавить("Ссылка");
ИменаРеквизитов.Добавить("ВидПособия");
ИменаРеквизитов.Добавить("СпособВыплатыПособия");
ИменаРеквизитов.Добавить("АдресПолучателяФактический");
ИменаРеквизитов.Добавить("АдресПолучателяФактическийИдентификаторФИАС");
ИменаРеквизитов.Добавить("АдресПолучателяФактическийКодКЛАДР");
ИменаРеквизитов.Добавить("АдресПолучателяРегистрации");
ИменаРеквизитов.Добавить("АдресПолучателяРегистрацииИдентификаторФИАС");
ИменаРеквизитов.Добавить("АдресПолучателяРегистрацииКодКЛАДР");
ИменаРеквизитов.Добавить("СтатусНалогоплательщикаПолучателя");
ИменаРеквизитов.Добавить("ТипЗанятостиРаботника");
ИменаРеквизитов.Добавить("ДатаНачалаТрудовогоДоговораПолучателя");
ИменаРеквизитов.Добавить("ДатаОкончанияТрудовогоДоговораПолучателя");
ИменаРеквизитов.Добавить("ПорядокРасчетаСреднегоЗаработка");
ИменаРеквизитов.Добавить("Дата");
ИменаРеквизитов.Добавить("ДатаПредставленияПакетаДокументов");
ИменаРеквизитов.Добавить("НаличиеОдногоИзДокументовНаПредыдущихДетей");
ИменаРеквизитов.Добавить("НаличиеСвидетельстваОСмертиПредыдущихДетей");
УстановитьПривилегированныйРежим(Истина);
РеквизитыЗаявлений = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивЗаявлений, ИменаРеквизитов);
УстановитьПривилегированныйРежим(Ложь);
ДополнительныеСвойства.Вставить("РеквизитыЗаявлений", РеквизитыЗаявлений);
Возврат РеквизитыЗаявлений;
КонецФункции
Функция ЭЛНКарантинПоКоронавирусу(ПервичныйДокумент)
РеквизитыБольничных = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "РеквизитыБольничных");
Если РеквизитыБольничных = Неопределено Тогда
МассивБольничных = СведенияНеобходимыеДляНазначенияПособий.ВыгрузитьКолонку("ПервичныйДокумент");
ОбратныйИндекс = МассивБольничных.Количество();
Пока ОбратныйИндекс > 0 Цикл
ОбратныйИндекс = ОбратныйИндекс - 1;
ПервичныйДокумент = МассивБольничных[ОбратныйИндекс];
Если ТипЗнч(ПервичныйДокумент) <> Тип("ДокументСсылка.БольничныйЛист") Или ПервичныйДокумент.Пустая() Тогда
МассивБольничных.Удалить(ОбратныйИндекс);
КонецЕсли;
КонецЦикла;
Если МассивБольничных.Количество() > 0 Тогда
УстановитьПривилегированныйРежим(Истина);
РеквизитыБольничных = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивБольничных, "ЭЛНКарантинПоКоронавирусу");
УстановитьПривилегированныйРежим(Ложь);
Иначе
РеквизитыБольничных = Новый Соответствие;
КонецЕсли;
ДополнительныеСвойства.Вставить("РеквизитыБольничных", РеквизитыБольничных);
КонецЕсли;
РеквизитыБольничного = РеквизитыБольничных[ПервичныйДокумент];
Если РеквизитыБольничного = Неопределено Тогда
Возврат Ложь;
Иначе
Возврат РеквизитыБольничного.ЭЛНКарантинПоКоронавирусу;
КонецЕсли;
КонецФункции
Функция ДопустимыеГруппыИнвалидности()
ДопустимыеГруппыИнвалидности = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ДопустимыеГруппыИнвалидности");
Если ДопустимыеГруппыИнвалидности = Неопределено Тогда
ROWSET = ПрямыеВыплатыПособийСоциальногоСтрахования.КорневойЭлементРеестраПилотногоПроектаФСС();
ROW = ПрямыеВыплатыПособийСоциальногоСтрахования.ЭлементРеестраПилотногоПроектаФСС(ROWSET);
ДопустимыеГруппыИнвалидности = ПрямыеВыплатыПособийСоциальногоСтрахования.ДопустимыеЗначенияСтрокиРеестра(
ROW,
"MSE_INVALID_GROUP");
ДополнительныеСвойства.Вставить("ДопустимыеГруппыИнвалидности", ДопустимыеГруппыИнвалидности);
КонецЕсли;
Возврат ДопустимыеГруппыИнвалидности;
КонецФункции
#КонецОбласти
#Область ВыводОшибок
Процедура ПроверитьЗаполнениеРеквизитаСтрокиТаблицы(Отказ, ИмяТаблицы, Строка, ИмяРеквизита)
ПроверкиБЗК.ПроверитьЗаполнениеРеквизитаСтрокиТаблицы(
Отказ,
ЭтотОбъект,
ИмяТаблицы,
Строка,
ИмяРеквизита);
КонецПроцедуры
Процедура СообщитьОбОшибкеВСтрокеТаблицы(Отказ, ИмяТаблицы, Строка, ИмяРеквизита, Текст)
СообщенияБЗК.СообщитьОбОшибкеВСтрокеТаблицы(
Отказ,
ЭтотОбъект,
ИмяТаблицы,
Строка,
ИмяРеквизита,
Текст);
КонецПроцедуры
#КонецОбласти
#Область МеханизмФиксацииИзменений
Функция ОбъектЗафиксирован() Экспорт
Возврат Не ПрямыеВыплатыПособийСоциальногоСтрахования.СтатусПозволяетРедактироватьДокумент(СтатусДокумента);
КонецФункции
Функция ОбновитьВторичныеДанныеДокумента() Экспорт
Модифицирован = Ложь;
Если ОбъектЗафиксирован() Тогда
Возврат Модифицирован;
КонецЕсли;
ПараметрыФиксации = Документы.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий.ПараметрыФиксацииВторичныхДанных();
Если ОбновитьДанныеОрганизации(ПараметрыФиксации) Тогда
Модифицирован = Истина;
КонецЕсли;
Если ОбновитьСведенияОПодписантах(ПараметрыФиксации) Тогда
Модифицирован = Истина;
КонецЕсли;
Если ЗаполнитьИдентификаторФСС(ПараметрыФиксации) Тогда
Модифицирован = Истина;
КонецЕсли;
Если ОбновитьСведенияОПособиях(ПараметрыФиксации) Тогда
Модифицирован = Истина;
КонецЕсли;
Если ОбновитьАвтозаполнениеПриостановленийТД(ПараметрыФиксации) Тогда
Модифицирован = Истина;
КонецЕсли;
Если ОбновитьПриостановленияТД(ПараметрыФиксации) Тогда
Модифицирован = Истина;
КонецЕсли;
Если ОбновитьКодНаличияПриостановленийТД(ПараметрыФиксации) Тогда
Модифицирован = Истина;
КонецЕсли;
Если ОбновитьСведенияОМедицинскихОрганизациях(ПараметрыФиксации) Тогда
Модифицирован = Истина;
КонецЕсли;
Возврат Модифицирован;
КонецФункции
Функция ОбновитьДанныеОрганизации(ПараметрыФиксации)
Если Не ЗначениеЗаполнено(Организация) Тогда
Возврат Ложь;
КонецЕсли;
ИменаРеквизитов =
"РегистрационныйНомерФСС,
|КодПодчиненностиФСС,
|ДополнительныйКодФСС,
|ОГРН,
|ТелефонСоставителя,
|АдресЭлектроннойПочтыСоставителя,
|ИНН,
|КПП";
Реквизиты = Новый Структура(ИменаРеквизитов);
Если ФиксацияВторичныхДанныхВДокументах.РеквизитыШапкиЗафиксированы(ЭтотОбъект, Реквизиты) Тогда
Возврат Ложь;
КонецЕсли;
ИменаПолей =
"РегистрационныйНомерФСС,
|КодПодчиненностиФСС,
|ДополнительныйКодФСС,
|ОГРН,
|ТелОрганизации,
|АдресЭлектроннойПочтыОрганизации,
|ИННЮЛ,
|КППЮЛ";
СведенияОбОрганизации = СЭДОФСС.СведенияОСтрахователе(Организация, ИменаПолей, Дата);
ЗаполнитьЗначенияСвойств(Реквизиты, СведенияОбОрганизации);
Реквизиты.ТелефонСоставителя = СведенияОбОрганизации.ТелОрганизации;
Реквизиты.АдресЭлектроннойПочтыСоставителя = СведенияОбОрганизации.АдресЭлектроннойПочтыОрганизации;
Реквизиты.ИНН = СведенияОбОрганизации.ИННЮЛ;
Реквизиты.КПП = СведенияОбОрганизации.КППЮЛ;
Возврат ФиксацияВторичныхДанныхВДокументах.ОбновитьДанныеШапки(Реквизиты, ЭтотОбъект, ПараметрыФиксации);
КонецФункции
Функция ОбновитьСведенияОПодписантах(ПараметрыФиксации)
Если Не ЗначениеЗаполнено(Организация) Тогда
Возврат Ложь;
КонецЕсли;
Реквизиты = Новый Структура("Руководитель, ДолжностьРуководителя, ОснованиеПодписиРуководителя,
|ГлавныйБухгалтер, ДолжностьГлавногоБухгалтера, ОснованиеПодписиГлавногоБухгалтера");
Если ФиксацияВторичныхДанныхВДокументах.РеквизитыШапкиЗафиксированы(ЭтотОбъект, Реквизиты) Тогда
Возврат Ложь;
КонецЕсли;
СведенияОПодписях = ПодписиДокументов.СведенияОПодписяхПоУмолчаниюДляОбъектаМетаданных(Метаданные(), Организация);
ЗаполнитьЗначенияСвойств(Реквизиты, СведенияОПодписях);
Возврат ФиксацияВторичныхДанныхВДокументах.ОбновитьДанныеШапки(Реквизиты, ЭтотОбъект, ПараметрыФиксации);
КонецФункции
Функция ЗаполнитьИдентификаторФСС(ПараметрыФиксации)
Реквизиты = Новый Структура("ИдентификаторФСС");
Если ФиксацияВторичныхДанныхВДокументах.РеквизитыШапкиЗафиксированы(ЭтотОбъект, Реквизиты) Тогда
Возврат Ложь;
КонецЕсли;
Если ЗначениеЗаполнено(Номер) Или Не ЭтоНовый() Тогда
Реквизиты.ИдентификаторФСС = Документы.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий.ИдентификаторФСС(ЭтотОбъект);
Иначе
Реквизиты.ИдентификаторФСС = "";
КонецЕсли;
Возврат ФиксацияВторичныхДанныхВДокументах.ОбновитьДанныеШапки(Реквизиты, ЭтотОбъект, ПараметрыФиксации);
КонецФункции
Функция ОбновитьСведенияОПособиях(ПараметрыФиксации)
Если СведенияНеобходимыеДляНазначенияПособий.Количество() = 0 Тогда
Возврат Ложь;
КонецЕсли;
ТаблицаОснований = СведенияНеобходимыеДляНазначенияПособий.Выгрузить(, "Заявление, ПервичныйДокумент");
Запрос = ПрямыеВыплатыПособийСоциальногоСтрахования.ЗапросРеестраПрямыхВыплатПоПервичнымДокументам(ЭтотОбъект, ТаблицаОснований, "ВТВторичныеДанные");
Если Запрос = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Запрос.Выполнить();
Возврат ФиксацияВторичныхДанныхВДокументах.ОбновитьВторичныеДанные(Запрос.МенеджерВременныхТаблиц, ЭтотОбъект, "СведенияНеобходимыеДляНазначенияПособий", "ВТВторичныеДанные", ПараметрыФиксации);
КонецФункции
Функция ОбновитьАвтозаполнениеПриостановленийТД(ПараметрыФиксации)
Если СведенияНеобходимыеДляНазначенияПособий.Количество() = 0 Тогда
Возврат Ложь;
КонецЕсли;
ЕстьИзменения = Ложь;
Найденные = СведенияНеобходимыеДляНазначенияПособий.НайтиСтроки(Новый Структура("АвтозаполнениеПриостановленийТД", Ложь));
Для Каждого СтрокаТаблицы Из Найденные Цикл
АвтозаполнениеПриостановленийТД = ТипЗнч(СтрокаТаблицы.ПервичныйДокумент) = Тип("ДокументСсылка.БольничныйЛист")
И ЗначениеЗаполнено(СтрокаТаблицы.ПервичныйДокумент);
Если ФиксацияВторичныхДанныхВДокументах.ОбновитьДанныеСтроки(
Новый Структура("АвтозаполнениеПриостановленийТД", АвтозаполнениеПриостановленийТД),
ЭтотОбъект,
"СведенияНеобходимыеДляНазначенияПособий",
СтрокаТаблицы,
ПараметрыФиксации) Тогда
ЕстьИзменения = Истина;
КонецЕсли;
КонецЦикла;
Возврат ЕстьИзменения;
КонецФункции
Функция ОбновитьПриостановленияТД(ПараметрыФиксации)
Если СведенияНеобходимыеДляНазначенияПособий.Количество() = 0 Тогда
Возврат Ложь;
КонецЕсли;
Фильтр = Новый Структура("АвтозаполнениеПриостановленийТД", Истина);
ИменаПолей = "Заявление, ПервичныйДокумент";
ТаблицаОснованийСАвтозаполнением = СведенияНеобходимыеДляНазначенияПособий.Выгрузить(Фильтр, ИменаПолей);
Если ТаблицаОснованийСАвтозаполнением.Количество() = 0 Тогда
Возврат Ложь;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТаблицаОснований.Заявление КАК Заявление,
| ТаблицаОснований.ПервичныйДокумент КАК ПервичныйДокумент
|ПОМЕСТИТЬ ТаблицаОснований
|ИЗ
| &ТаблицаОснований КАК ТаблицаОснований
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ТаблицаОснований.Заявление КАК Заявление,
| ПриостановленияТрудовыхДоговоров.ДатаНачала КАК ДатаНачала,
| ПриостановленияТрудовыхДоговоров.ДатаОкончания КАК ДатаОкончания,
| ПриостановленияТрудовыхДоговоров.ОснованиеНПА КАК ОснованиеНПА
|ИЗ
| Документ.БольничныйЛист.ПриостановленияТрудовыхДоговоров КАК ПриостановленияТрудовыхДоговоров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаОснований КАК ТаблицаОснований
| ПО ПриостановленияТрудовыхДоговоров.Ссылка = ТаблицаОснований.ПервичныйДокумент";
Запрос.УстановитьПараметр("ТаблицаОснований", ТаблицаОснованийСАвтозаполнением);
ПриостановленияТрудовыхДоговоров.Сортировать("Заявление, ДатаНачала, ДатаОкончания");
ДоИзменения = ПриостановленияТрудовыхДоговоров.Выгрузить();
ТаблицаРезультат = Запрос.Выполнить().Выгрузить();
Фильтр = Новый Структура("АвтозаполнениеПриостановленийТД", Ложь);
ТаблицаБезАвтозаполнения = СведенияНеобходимыеДляНазначенияПособий.Выгрузить(Фильтр, "Заявление");
Для Каждого Заявление Из КоллекцииБЗК.УникальныеЗначенияКолонки(ТаблицаБезАвтозаполнения, "Заявление") Цикл
Если ТаблицаОснованийСАвтозаполнением.Найти(Заявление, "Заявление") <> Неопределено Тогда
Продолжить;
КонецЕсли;
Найденные = ДоИзменения.НайтиСтроки(Новый Структура("Заявление", Заявление));
Для Каждого СтрокаТаблицы Из Найденные Цикл
ЗаполнитьЗначенияСвойств(ТаблицаРезультат.Добавить(), СтрокаТаблицы);
КонецЦикла;
КонецЦикла;
ПриостановленияТрудовыхДоговоров.Загрузить(ТаблицаРезультат);
ПриостановленияТрудовыхДоговоров.Сортировать("Заявление, ДатаНачала, ДатаОкончания");
ЕстьИзменения = Не ОбщегоНазначенияБЗК.ЗначенияСовпадают(ДоИзменения, ПриостановленияТрудовыхДоговоров.Выгрузить());
Возврат ЕстьИзменения;
КонецФункции
Функция ОбновитьКодНаличияПриостановленийТД(ПараметрыФиксации)
Если СведенияНеобходимыеДляНазначенияПособий.Количество() = 0 Тогда
Возврат Ложь;
КонецЕсли;
ЕстьИзменения = Ложь;
Для Каждого СтрокаТаблицы Из СведенияНеобходимыеДляНазначенияПособий Цикл
Если ПриостановленияТрудовыхДоговоров.Найти(СтрокаТаблицы.Заявление, "Заявление") <> Неопределено Тогда
КодНаличияПриостановленийТД = "1";
Иначе
КодНаличияПриостановленийТД = "0";
КонецЕсли;
Если ФиксацияВторичныхДанныхВДокументах.ОбновитьДанныеСтроки(
Новый Структура("КодНаличияПриостановленийТД", КодНаличияПриостановленийТД),
ЭтотОбъект,
"СведенияНеобходимыеДляНазначенияПособий",
СтрокаТаблицы,
ПараметрыФиксации) Тогда
ЕстьИзменения = Истина;
КонецЕсли;
КонецЦикла;
Возврат ЕстьИзменения;
КонецФункции
Функция ОбновитьСведенияОМедицинскихОрганизациях(ПараметрыФиксации)
Если СведенияНеобходимыеДляНазначенияПособий.Количество() = 0 Тогда
Возврат Ложь;
КонецЕсли;
ТаблицаОснований = СведенияНеобходимыеДляНазначенияПособий.Выгрузить(, "Заявление, ПервичныйДокумент, МедицинскаяОрганизация");
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТаблицаОснований.Заявление КАК Заявление,
| ТаблицаОснований.ПервичныйДокумент КАК ПервичныйДокумент,
| ТаблицаОснований.МедицинскаяОрганизация КАК МедицинскаяОрганизация
|ПОМЕСТИТЬ ТаблицаОснований
|ИЗ
| &ТаблицаОснований КАК ТаблицаОснований
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТаблицаОснований.Заявление КАК Заявление,
| ТаблицаОснований.ПервичныйДокумент КАК ПервичныйДокумент,
| ТаблицаОснований.МедицинскаяОрганизация КАК МедицинскаяОрганизация,
| МедицинскиеОрганизации.Наименование КАК НаименованиеМедицинскойОрганизации,
| МедицинскиеОрганизации.ОГРН КАК ОГРНМедицинскойОрганизации,
| МедицинскиеОрганизации.Адрес КАК АдресМедицинскойОрганизации
|ПОМЕСТИТЬ ВТВторичныеДанные
|ИЗ
| ТаблицаОснований КАК ТаблицаОснований
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.МедицинскиеОрганизации КАК МедицинскиеОрганизации
| ПО ТаблицаОснований.МедицинскаяОрганизация = МедицинскиеОрганизации.Ссылка
|ГДЕ
| ТаблицаОснований.ПервичныйДокумент = НЕОПРЕДЕЛЕНО";
Запрос.УстановитьПараметр("ТаблицаОснований", ТаблицаОснований);
Запрос.Выполнить();
Возврат ФиксацияВторичныхДанныхВДокументах.ОбновитьВторичныеДанные(Запрос.МенеджерВременныхТаблиц, ЭтотОбъект, "СведенияНеобходимыеДляНазначенияПособий", "ВТВторичныеДанные", ПараметрыФиксации);
КонецФункции
#КонецОбласти
#КонецОбласти
#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли