#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область ДляВызоваИзДругихПодсистем
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.Идентификатор = ИмяМакетаПечатнойФормыСправки();
КомандаПечати.Представление = НСтр("ru = 'Справка'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Порядок = 10;
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
СсылкиЭтогоДокумента = Новый Массив;
Для Каждого ДопустимыйОбъект Из МассивОбъектов Цикл
Если ТипЗнч(ДопустимыйОбъект) = Тип("ДокументСсылка.ИсходящаяСправкаОЗаработкеДляРасчетаПособий") Тогда
СсылкиЭтогоДокумента.Добавить(ДопустимыйОбъект);
КонецЕсли;
КонецЦикла;
Если СсылкиЭтогоДокумента.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, ИмяМакетаПечатнойФормыСправки()) Тогда
ТабличныйДокумент = ТабличныйДокументСправки(СсылкиЭтогоДокумента, ОбъектыПечати);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
ИмяМакетаПечатнойФормыСправки(),
НСтр("ru = 'Исходящая справка о заработке для расчета пособий'"),
ТабличныйДокумент);
КонецЕсли;
КонецПроцедуры
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(ФизическоеЛицо)";
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
Функция ПараметрыФиксацииВторичныхДанных() Экспорт
ПараметрыФиксацииВторичныхДанных = ФиксацияВторичныхДанныхВДокументах.ПараметрыФиксации(
ФиксируемыеРеквизиты(),
ФиксируемыеТабличныеЧасти());
УчетПособийСоциальногоСтрахования.ДополнитьПараметрыФиксацииИсходящаяСправкаОЗаработкеДляРасчетаПособий(
ПараметрыФиксацииВторичныхДанных);
Возврат ПараметрыФиксацииВторичныхДанных;
КонецФункции
Функция ОписаниеСоставаОбъекта() Экспорт
Возврат ЗарплатаКадрыСоставДокументов.ОписаниеСоставаОбъектаФизическоеЛицоВШапке();
КонецФункции
Функция ИмяМакетаПечатнойФормыСправки() Экспорт
Возврат "ПФ_MXL_Справка_2022";
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ПечатьСправки
Функция ДатаНачалаДействияСправки2022() Экспорт
Возврат '20220220';
КонецФункции
Функция ТабличныйДокументСправки(МассивСсылок, ОбъектыПечати)
КэшМакетов = Новый Соответствие;
ДатаНачалаДействияСправки2022 = ДатаНачалаДействияСправки2022();
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СправкаОЗаработкеДляРасчетаПособий";
ТабличныйДокумент.АвтоМасштаб = Истина;
ДанныеДокументов = ЗапросПоОсновнымДанным(МассивСсылок).Выполнить().Выгрузить();
ВыборкаЗаработка = ЗапросПоЗаработку(МассивСсылок).Выполнить().Выбрать();
ВыборкаПериодовРаботы = ЗапросПоПериодамРаботы(МассивСсылок).Выполнить().Выбрать();
ПериодыНетрудоспособности = ЗапросПоПериодамНетрудоспособности(МассивСсылок).Выполнить().Выгрузить();
Организации = КоллекцииБЗК.УникальныеЗначенияКолонки(ДанныеДокументов, "Организация");
ВидЮридическийАдрес = Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации;
АдресаОрганизаций = КонтактнаяИнформацияБЗК.КонтактнаяИнформацияОбъектов(Организации, , ВидЮридическийАдрес);
Валюта = ЗарплатаКадры.ВалютаУчетаЗаработнойПлаты();
МассивФизлиц = Новый Массив;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивФизлиц, ДанныеДокументов.ВыгрузитьКолонку("Руководитель"), Истина);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивФизлиц, ДанныеДокументов.ВыгрузитьКолонку("ГлавныйБухгалтер"), Истина);
КадровыеДанныеФизическихЛиц = КадровыйУчет.КадровыеДанныеФизическихЛиц(Истина, МассивФизлиц, "ИОФамилия");
ПервыйДокумент = Истина;
Для Каждого ДанныеДокумента Из ДанныеДокументов Цикл
Если ПервыйДокумент Тогда
ПервыйДокумент = Ложь;
Иначе
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
НачалоТекущегоФрагмента = ТабличныйДокумент.ВысотаТаблицы + 1;
Если ДанныеДокумента.Дата >= ДатаНачалаДействияСправки2022 Тогда
ИмяМакета = "ПФ_MXL_Справка_2022";
ИначеЕсли ДанныеДокумента.Дата >= '20130701' Тогда
ИмяМакета = "ПФ_MXL_СправкаРасширенная";
Иначе
ИмяМакета = "ПФ_MXL_Справка";
КонецЕсли;
СоставМакета = СоставМакета(КэшМакетов, ИмяМакета);
ПредставлениеЮридическогоАдреса = КонтактнаяИнформацияБЗК.ПредставлениеКонтактнойИнформации(
АдресаОрганизаций,
ДанныеДокумента.Организация,
ВидЮридическийАдрес);
ВывестиШапку(ТабличныйДокумент, СоставМакета.Шапка, ДанныеДокумента, ПредставлениеЮридическогоАдреса);
СтруктураПоиска = Новый Структура("Ссылка", ДанныеДокумента.Ссылка);
Если ИмяМакета = "ПФ_MXL_Справка_2022" Или ИмяМакета = "ПФ_MXL_СправкаРасширенная" Тогда
ВывестиПериодРаботы(ТабличныйДокумент, СоставМакета.ПериодРаботы, СтруктураПоиска, ВыборкаПериодовРаботы);
КонецЕсли;
ВывестиЗаработок(ТабличныйДокумент, СоставМакета, СтруктураПоиска, ВыборкаЗаработка, Валюта);
Если ИмяМакета = "ПФ_MXL_Справка_2022" Или ИмяМакета = "ПФ_MXL_СправкаРасширенная" Тогда
ВывестиПериодыНетрудоспособности(ТабличныйДокумент, СоставМакета, ДанныеДокумента, ПериодыНетрудоспособности);
КонецЕсли;
Если ИмяМакета = "ПФ_MXL_Справка_2022" Тогда
ВывестиПодвал_2022(ТабличныйДокумент, СоставМакета.Подвал, ДанныеДокумента, КадровыеДанныеФизическихЛиц);
Иначе
ВывестиПодвал(ТабличныйДокумент, СоставМакета.Подвал, ДанныеДокумента, КадровыеДанныеФизическихЛиц);
КонецЕсли;
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НачалоТекущегоФрагмента, ОбъектыПечати, ДанныеДокумента.Ссылка);
КонецЦикла;
Возврат ТабличныйДокумент;
КонецФункции
Функция СоставМакета(КэшМакетов, ИмяМакета)
СоставМакета = КэшМакетов[ИмяМакета];
Если СоставМакета = Неопределено Тогда
СоставМакета = Новый Структура;
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ИсходящаяСправкаОЗаработкеДляРасчетаПособий." + ИмяМакета);
Макет.Область().СоздатьФорматСтрок();
Для Каждого Область Из Макет.Области Цикл
СоставМакета.Вставить(Область.Имя, Макет.ПолучитьОбласть(Область.Имя));
КонецЦикла;
КэшМакетов.Вставить(ИмяМакета, СоставМакета);
КонецЕсли;
Возврат СоставМакета;
КонецФункции
Процедура ВывестиШапку(ТабличныйДокумент, ОбластьШапка, ДанныеДокумента, ПредставлениеЮридическогоАдреса)
ПараметрыОбластиШапка = ОбластьШапка.Параметры;
ПараметрыОбластиШапка.Заполнить(ДанныеДокумента);
ПараметрыОбластиШапка.ФИО = СтрШаблон("%1 %2 %3", ДанныеДокумента.Фамилия, ДанныеДокумента.Имя, ДанныеДокумента.Отчество);
ПараметрыОбластиШапка.АдресСтрахователя = ПредставлениеЮридическогоАдреса;
ПараметрыОбластиШапка.НаименованиеТерриториальногоОрганаФСС = СокрЛП(ПараметрыОбластиШапка.НаименованиеТерриториальногоОрганаФСС);
ПараметрыОбластиШапка.КемВыданДокумент = СокрЛП(ПараметрыОбластиШапка.КемВыданДокумент);
ПараметрыОбластиШапка.ДатаВыдачиДокумента = Формат(ПараметрыОбластиШапка.ДатаВыдачиДокумента,"ДЛФ=DD");
СтруктураАдреса = СтруктураАдресаВФорматеКЛАДР(ДанныеДокумента.АдресМестаЖительства);
ЗаполнитьЗначенияСвойств(ПараметрыОбластиШапка, СтруктураАдреса);
ТабличныйДокумент.Вывести(ОбластьШапка);
КонецПроцедуры
Процедура ВывестиПериодРаботы(ТабличныйДокумент, ОбластьПериодРаботы, СтруктураПоиска, ВыборкаПериодовРаботы)
ПараметрыОбластиПериодРаботы = ОбластьПериодРаботы.Параметры;
ВыведеноСтрок = 0;
ВыборкаПериодовРаботы.Сбросить();
Пока ВыборкаПериодовРаботы.НайтиСледующий(СтруктураПоиска) Цикл
ПараметрыОбластиПериодРаботы.Заполнить(ВыборкаПериодовРаботы);
ТабличныйДокумент.Вывести(ОбластьПериодРаботы);
ВыведеноСтрок = ВыведеноСтрок + 1;
КонецЦикла;
Если ВыведеноСтрок = 0 Тогда
ПараметрыОбластиПериодРаботы.ПериодРаботыС = "";
ПараметрыОбластиПериодРаботы.ПериодРаботыПо = "";
ТабличныйДокумент.Вывести(ОбластьПериодРаботы);
КонецЕсли;
КонецПроцедуры
Процедура ВывестиЗаработок(ТабличныйДокумент, СоставМакета, СтруктураПоиска, ВыборкаЗаработка, Валюта)
ПараметрыОбластиГод = СоставМакета.Год.Параметры;
ТабличныйДокумент.Вывести(СоставМакета.Пункт3);
ВыведеноСтрок = 0;
ВыборкаЗаработка.Сбросить();
Пока ВыборкаЗаработка.НайтиСледующий(СтруктураПоиска) Цикл
ПараметрыОбластиГод.РасчетныйГод = ВыборкаЗаработка.РасчетныйГод;
ПараметрыОбластиГод.Заработок = Формат(Цел(ВыборкаЗаработка.Заработок),"ЧДЦ=0; ЧН=-");
ПараметрыОбластиГод.ЗаработокКоп = Формат((ВыборкаЗаработка.Заработок - Цел(ВыборкаЗаработка.Заработок)) * 100,"ЧЦ=2; ЧДЦ=0; ЧН=-");
ПараметрыОбластиГод.ЗаработокПрописью = РаботаСКурсамиВалют.СформироватьСуммуПрописью(ВыборкаЗаработка.Заработок, Валюта);
ТабличныйДокумент.Вывести(СоставМакета.Год);
ВыведеноСтрок = ВыведеноСтрок + 1;
КонецЦикла;
Если ВыведеноСтрок = 0 Тогда
ТабличныйДокумент.Вывести(СоставМакета.ПустойГод);
КонецЕсли;
КонецПроцедуры
Процедура ВывестиПериодыНетрудоспособности(ТабличныйДокумент, СоставМакета, ДанныеДокумента, ПериодыНетрудоспособности)
ПараметрыОбластиГодДни = СоставМакета.ГодДни.Параметры;
ПараметрыОбластиПериодДни = СоставМакета.ПериодДни.Параметры;
ПараметрыОбластиГодБезДней = СоставМакета.ГодБезДней.Параметры;
ТабличныйДокумент.Вывести(СоставМакета.Пункт4);
ПериодыНетрудоспособностиПоГодам = ПериодыНетрудоспособностиПоГодам(ДанныеДокумента, ПериодыНетрудоспособности);
Для Каждого ДанныеГода Из ПериодыНетрудоспособностиПоГодам Цикл
Если ДанныеГода.Периоды.Количество() = 0 Тогда
ПараметрыОбластиГодБезДней.РасчетныйГод = Формат(ДанныеГода.Год, "ЧГ=0");
ТабличныйДокумент.Вывести(СоставМакета.ГодБезДней);
Иначе
ПараметрыОбластиГодДни.ДнейБолезниУходаЗаДетьми = ДанныеГода.КоличествоДней;
ПараметрыОбластиГодДни.РасчетныйГод = Формат(ДанныеГода.Год, "ЧГ=0");
ТабличныйДокумент.Вывести(СоставМакета.ГодДни);
Для Каждого ДанныеПериода Из ДанныеГода.Периоды Цикл
ПараметрыОбластиПериодДни.ПериодС = ДанныеПериода.ПериодС;
ПараметрыОбластиПериодДни.ПериодПо = ДанныеПериода.ПериодПо;
ПараметрыОбластиПериодДни.ДнейБолезниУходаЗаДетьми = ДанныеПериода.КоличествоДней;
ПараметрыОбластиПериодДни.НаименованиеПериода = ДанныеПериода.НаименованиеПериода;
ТабличныйДокумент.Вывести(СоставМакета.ПериодДни);
КонецЦикла;
КонецЕсли;
КонецЦикла;
Если ПериодыНетрудоспособностиПоГодам.Количество() = 0 Тогда
ТабличныйДокумент.Вывести(СоставМакета.ПустойГодДни);
ТабличныйДокумент.Вывести(СоставМакета.ПустойПериодДни);
КонецЕсли;
КонецПроцедуры
Процедура ВывестиПодвал(ТабличныйДокумент, ОбластьПодвал, ДанныеДокумента, КадровыеДанныеФизическихЛиц)
ОбластьПодвал.Параметры.Заполнить(ДанныеДокумента);
ДанныеРуководителя = КадровыеДанныеФизическихЛиц.Найти(ДанныеДокумента.Руководитель, "ФизическоеЛицо");
Если ДанныеРуководителя <> Неопределено Тогда
ОбластьПодвал.Параметры["РуководительРасшифровкаПодписи"] = ДанныеРуководителя.ИОФамилия;
КонецЕсли;
ДанныеГлавногоБухгалтера = КадровыеДанныеФизическихЛиц.Найти(ДанныеДокумента.ГлавныйБухгалтер, "ФизическоеЛицо");
Если ДанныеГлавногоБухгалтера <> Неопределено Тогда
ОбластьПодвал.Параметры["ГлавныйБухгалтерРасшифровкаПодписи"] = ДанныеГлавногоБухгалтера.ИОФамилия;
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьПодвал);
КонецПроцедуры
Процедура ВывестиПодвал_2022(ТабличныйДокумент, ОбластьПодвал, ДанныеДокумента, КадровыеДанныеФизическихЛиц)
ОбластьПодвал.Параметры.Заполнить(ДанныеДокумента);
ДанныеРуководителя = КадровыеДанныеФизическихЛиц.Найти(ДанныеДокумента.Руководитель, "ФизическоеЛицо");
Если ДанныеРуководителя <> Неопределено Тогда
ОбластьПодвал.Параметры["РуководительРасшифровкаПодписи"] = ДанныеРуководителя.ИОФамилия;
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьПодвал);
КонецПроцедуры
Функция ЗапросПоОсновнымДанным(МассивСсылок)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
ОписаниеИсточникаДанных = ПерсонифицированныйУчет.ОписаниеИсточникаДанныхДляСоздатьВТСведенияОбОрганизациях();
ОписаниеИсточникаДанных.ИмяТаблицы = "Документ.ИсходящаяСправкаОЗаработкеДляРасчетаПособий";
ОписаниеИсточникаДанных.ИмяПоляОрганизация = "Организация";
ОписаниеИсточникаДанных.ИмяПоляПериод = "Дата";
ОписаниеИсточникаДанных.СписокСсылок = МассивСсылок;
ПерсонифицированныйУчет.СоздатьВТСведенияОбОрганизацияхПоОписаниюДокументаИсточникаДанных(Запрос.МенеджерВременныхТаблиц, ОписаниеИсточникаДанных);
Запрос.Текст =
"ВЫБРАТЬ
| ДокументСправка.Дата КАК Дата,
| ДокументСправка.Номер КАК Номер,
| ДокументСправка.Организация КАК Организация,
| Организации.НаименованиеПолное КАК НазваниеОрганизации,
| Организации.ИНН КАК ИНН,
| Организации.КПП КАК КПП,
| """" КАК АдресСтрахователя,
| ДокументСправка.Ссылка КАК Ссылка,
| ДокументСправка.Сотрудник КАК Сотрудник,
| ДокументСправка.Руководитель КАК Руководитель,
| ДолжностиДляРуководителя.Наименование КАК ДолжностьРуководителя,
| ДокументСправка.ГлавныйБухгалтер КАК ГлавныйБухгалтер,
| ДокументСправка.ТелефонОрганизации КАК ТелефонОрганизации,
| ДокументСправка.РегистрационныйНомерФСС КАК РегистрационныйНомерФСС,
| ДокументСправка.ДополнительныйКодФСС КАК ДополнительныйКодФСС,
| ДокументСправка.КодПодчиненностиФСС КАК КодПодчиненностиФСС,
| ДокументСправка.НаименованиеТерриториальногоОрганаФСС КАК НаименованиеТерриториальногоОрганаФСС,
| ДокументСправка.СтраховойНомерПФР КАК СтраховойНомерПФР,
| ДокументСправка.Фамилия КАК Фамилия,
| ДокументСправка.Имя КАК Имя,
| ДокументСправка.Отчество КАК Отчество,
| ДокументСправка.ГодС КАК ГодС,
| ДокументСправка.ГодПо КАК ГодПо,
| ДокументСправка.АдресМестаЖительства КАК АдресМестаЖительства,
| ДокументСправка.ВидДокумента КАК ВидДокумента,
| ДокументСправка.СерияДокумента КАК СерияДокумента,
| ДокументСправка.НомерДокумента КАК НомерДокумента,
| ДокументСправка.ДатаВыдачиДокумента КАК ДатаВыдачиДокумента,
| ДокументСправка.КемВыданДокумент КАК КемВыданДокумент,
| ВЫБОР
| КОГДА Организации.ЮридическоеФизическоеЛицо <> ЗНАЧЕНИЕ(Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЮрЛицо,
| ДокументСправка.ОснованиеПодписиРуководителя КАК ОснованиеПодписиРуководителя,
| ДокументСправка.ОснованиеПодписиГлавногоБухгалтера КАК ОснованиеПодписиГлавногоБухгалтера,
| ДолжностиДляГлавногоБухгалтера.Наименование КАК ДолжностьГлавногоБухгалтера
|ИЗ
| Документ.ИсходящаяСправкаОЗаработкеДляРасчетаПособий КАК ДокументСправка
| ЛЕВОЕ СОЕДИНЕНИЕ ВТСведенияОбОрганизациях КАК Организации
| ПО ДокументСправка.Организация = Организации.Организация
| И ДокументСправка.Дата = Организации.Период
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Должности КАК ДолжностиДляРуководителя
| ПО ДокументСправка.ДолжностьРуководителя = ДолжностиДляРуководителя.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Должности КАК ДолжностиДляГлавногоБухгалтера
| ПО ДокументСправка.ДолжностьГлавногоБухгалтера = ДолжностиДляГлавногоБухгалтера.Ссылка
|ГДЕ
| ДокументСправка.Ссылка В(&МассивСсылок)
|
|УПОРЯДОЧИТЬ ПО
| Дата";
Возврат Запрос;
КонецФункции
Функция ЗапросПоЗаработку(МассивСсылок)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
Запрос.Текст =
"ВЫБРАТЬ
| Документ.РасчетныйГод КАК РасчетныйГод,
| Документ.Заработок КАК Заработок,
| Документ.НомерСтроки КАК НомерСтроки,
| Документ.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВТСтрокиДокумента
|ИЗ
| Документ.ИсходящаяСправкаОЗаработкеДляРасчетаПособий.ДанныеОЗаработке КАК Документ
|ГДЕ
| Документ.Ссылка В(&МассивСсылок)
|
|СГРУППИРОВАТЬ ПО
| Документ.Ссылка,
| Документ.РасчетныйГод,
| Документ.Заработок,
| Документ.НомерСтроки
|;
|
|
|ВЫБРАТЬ
| Документ.РасчетныйГод КАК РасчетныйГод,
| Документ.Заработок КАК Заработок,
| Документ.НомерСтроки КАК НомерСтроки,
| Документ.Ссылка КАК Ссылка,
| ПовторныеСтроки.НомерСтроки КАК НомерПовторнойСтроки
|ИЗ
| ВТСтрокиДокумента КАК Документ
| ЛЕВОЕ СОЕДИНЕНИЕ ВТСтрокиДокумента КАК ПовторныеСтроки
| ПО Документ.РасчетныйГод = ПовторныеСтроки.РасчетныйГод
| И Документ.НомерСтроки < ПовторныеСтроки.НомерСтроки
|
|УПОРЯДОЧИТЬ ПО
| РасчетныйГод";
Возврат Запрос;
КонецФункции
Функция ЗапросПоПериодамРаботы(МассивСсылок)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
Запрос.Текст =
"ВЫБРАТЬ
| СправкаОЗаработкеДляРасчетаПособийПериодыРаботы.НомерСтроки,
| СправкаОЗаработкеДляРасчетаПособийПериодыРаботы.ПериодРаботыС,
| СправкаОЗаработкеДляРасчетаПособийПериодыРаботы.ПериодРаботыПо,
| СправкаОЗаработкеДляРасчетаПособийПериодыРаботы.Ссылка
|ИЗ
| Документ.ИсходящаяСправкаОЗаработкеДляРасчетаПособий.ПериодыРаботы КАК СправкаОЗаработкеДляРасчетаПособийПериодыРаботы
|ГДЕ
| СправкаОЗаработкеДляРасчетаПособийПериодыРаботы.Ссылка В(&МассивСсылок)
|
|УПОРЯДОЧИТЬ ПО
| СправкаОЗаработкеДляРасчетаПособийПериодыРаботы.ПериодРаботыС";
Возврат Запрос;
КонецФункции
Функция ЗапросПоПериодамНетрудоспособности(МассивСсылок)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
Запрос.Текст =
"ВЫБРАТЬ
| СправкаОЗаработке.ПериодС КАК ПериодС,
| СправкаОЗаработке.ПериодПо КАК ПериодПо,
| ГОД(СправкаОЗаработке.ПериодС) КАК ГодНачала,
| ГОД(СправкаОЗаработке.ПериодПо) КАК ГодОкончания,
| СУММА(СправкаОЗаработке.Дни) КАК ДнейБолезниУходаЗаДетьми,
| СправкаОЗаработке.НаименованиеПериода КАК НаименованиеПериода,
| СправкаОЗаработке.Ссылка КАК Ссылка
|ИЗ
| Документ.ИсходящаяСправкаОЗаработкеДляРасчетаПособий.ДниБолезниУходаЗаДетьми КАК СправкаОЗаработке
|ГДЕ
| СправкаОЗаработке.Ссылка В(&МассивСсылок)
| И СправкаОЗаработке.Дни > 0
|
|СГРУППИРОВАТЬ ПО
| ГОД(СправкаОЗаработке.ПериодС),
| ГОД(СправкаОЗаработке.ПериодПо),
| СправкаОЗаработке.ПериодС,
| СправкаОЗаработке.ПериодПо,
| СправкаОЗаработке.НаименованиеПериода,
| СправкаОЗаработке.Ссылка
|
|УПОРЯДОЧИТЬ ПО
| ПериодС";
Возврат Запрос;
КонецФункции
Функция ПериодыНетрудоспособностиПоГодам(ДанныеДокумента, ПериодыНетрудоспособности)
ТаблицаПоГодам = Новый ТаблицаЗначений;
ТаблицаПоГодам.Колонки.Добавить("Год", Новый ОписаниеТипов("Число"));
ТаблицаПоГодам.Колонки.Добавить("КоличествоДней", Новый ОписаниеТипов("Число"));
ТаблицаПоГодам.Колонки.Добавить("Периоды", Новый ОписаниеТипов("Массив"));
ШаблонПериода = Новый ФиксированнаяСтруктура("ПериодС, ПериодПо, КоличествоДней, НаименованиеПериода");
Для Год = ДанныеДокумента.ГодС По ДанныеДокумента.ГодПо Цикл
ЭлементГод = ТаблицаПоГодам.Добавить();
ЭлементГод.Год = Год;
КонецЦикла;
СтруктураПоиска = Новый Структура("Ссылка", ДанныеДокумента.Ссылка);
Найденные = ПериодыНетрудоспособности.НайтиСтроки(СтруктураПоиска);
Для Каждого СтрокаТаблицы Из Найденные Цикл
Для Год = СтрокаТаблицы.ГодНачала По СтрокаТаблицы.ГодОкончания Цикл
ЭлементГод = ТаблицаПоГодам.Найти(Год, "Год");
Если ЭлементГод = Неопределено Тогда
ЭлементГод = ТаблицаПоГодам.Добавить();
ЭлементГод.Год = Год;
ТаблицаПоГодам.Сортировать("Год Возр");
Текст = СтрШаблон(
НСтр("ru = 'В документе %1 в периодах нетрудоспособности присутствует год %2, не попадающий в расчетные годы (с %3 по %4 г.), заданные в шапке документа.'"),
ДанныеДокумента.Ссылка,
Формат(Год, "ЧЦ=4; ЧН=; ЧВН=; ЧГ="),
Формат(ДанныеДокумента.ГодС, "ЧЦ=4; ЧН=; ЧВН=; ЧГ="),
Формат(ДанныеДокумента.ГодПо, "ЧЦ=4; ЧН=; ЧВН=; ЧГ="));
ОбщегоНазначения.СообщитьПользователю(Текст, ДанныеДокумента.Ссылка, "ДниБолезниУходаЗаДетьми[0]");
КонецЕсли;
ЭлементПериод = Новый Структура(ШаблонПериода);
ЭлементПериод.ПериодС = ?(Год = СтрокаТаблицы.ГодНачала, СтрокаТаблицы.ПериодС, Дата(Год, 1, 1));
ЭлементПериод.ПериодПо = ?(Год = СтрокаТаблицы.ГодОкончания, СтрокаТаблицы.ПериодПо, Дата(Год, 12, 31));
ЭлементПериод.КоличествоДней = Цел((ЭлементПериод.ПериодПо - ЭлементПериод.ПериодС) / 86400 + 1);
ЭлементПериод.НаименованиеПериода = СтрокаТаблицы.НаименованиеПериода;
ЭлементГод.КоличествоДней = ЭлементГод.КоличествоДней + ЭлементПериод.КоличествоДней;
ЭлементГод.Периоды.Добавить(ЭлементПериод);
КонецЦикла;
КонецЦикла;
Возврат ТаблицаПоГодам;
КонецФункции
Функция СтруктураАдресаВФорматеКЛАДР(Адрес)
Результат = Новый Структура("Индекс, Регион, Район, НаселенныйПункт, Улица, Дом, Корпус, Квартира");
СведенияОбАдресе = РаботаСАдресами.СведенияОбАдресе(Адрес);
ЗаполнитьЗначенияСвойств(Результат, СведенияОбАдресе);
Для Каждого КлючИЗначение Из Результат Цикл
Если Не ЗначениеЗаполнено(КлючИЗначение.Значение) Тогда
Результат.Вставить(КлючИЗначение.Ключ, "");
КонецЕсли;
КонецЦикла;
Если СведенияОбАдресе.Свойство("РегионТипКраткий") И ЗначениеЗаполнено(СведенияОбАдресе.РегионТипКраткий) Тогда
Результат.Регион = Результат.Регион + " " + СведенияОбАдресе.РегионТипКраткий;
КонецЕсли;
Если Результат.НаселенныйПункт <> ""
И СведенияОбАдресе.Свойство("НаселенныйПунктТипКраткий")
И ЗначениеЗаполнено(СведенияОбАдресе.НаселенныйПунктТипКраткий) Тогда
Результат.НаселенныйПункт = Результат.НаселенныйПункт + " " + СведенияОбАдресе.НаселенныйПунктТипКраткий;
КонецЕсли;
Если Результат.Улица <> ""
И СведенияОбАдресе.Свойство("УлицаТипКраткий")
И ЗначениеЗаполнено(СведенияОбАдресе.УлицаТипКраткий) Тогда
Результат.Улица = Результат.Улица + " " + СведенияОбАдресе.УлицаТипКраткий;
КонецЕсли;
Если СведенияОбАдресе.Свойство("Город") И ЗначениеЗаполнено(СведенияОбАдресе.Город) Тогда
ПредставлениеГорода = СведенияОбАдресе.Город;
Если СведенияОбАдресе.Свойство("ГородТипКраткий") И ЗначениеЗаполнено(СведенияОбАдресе.ГородТипКраткий) Тогда
ПредставлениеГорода = ПредставлениеГорода + " " + СведенияОбАдресе.ГородТипКраткий;
КонецЕсли;
Результат.НаселенныйПункт = СоединитьЧерезЗапятую(ПредставлениеГорода, Результат.НаселенныйПункт);
КонецЕсли;
Если Результат.НаселенныйПункт = ""
И СведенияОбАдресе.Свойство("ВнутригородскойРайон")
И ЗначениеЗаполнено(СведенияОбАдресе.ВнутригородскойРайон) Тогда
Результат.НаселенныйПункт = СведенияОбАдресе.ВнутригородскойРайон;
Если СведенияОбАдресе.Свойство("ВнутригородскойРайонТипКраткий")
И ЗначениеЗаполнено(СведенияОбАдресе.ВнутригородскойРайонТипКраткий) Тогда
Результат.НаселенныйПункт = Результат.НаселенныйПункт + " " + СведенияОбАдресе.ВнутригородскойРайонТипКраткий;
КонецЕсли;
КонецЕсли;
Если Результат.Улица = ""
И СведенияОбАдресе.Свойство("ДополнительнаяТерритория")
И ЗначениеЗаполнено(СведенияОбАдресе.ДополнительнаяТерритория) Тогда
Результат.Улица = СведенияОбАдресе.ДополнительнаяТерритория;
КонецЕсли;
Если СведенияОбАдресе.Свойство("Территория") И ЗначениеЗаполнено(СведенияОбАдресе.Территория) Тогда
ПредставлениеТерритории = СведенияОбАдресе.Территория;
Если СведенияОбАдресе.Свойство("ТерриторияТипКраткий") И ЗначениеЗаполнено(СведенияОбАдресе.ТерриторияТипКраткий) Тогда
ПредставлениеТерритории = ПредставлениеТерритории + " " + СведенияОбАдресе.ТерриторияТипКраткий;
КонецЕсли;
Если Результат.НаселенныйПункт = "" Тогда
Результат.НаселенныйПункт = ПредставлениеТерритории;
ИначеЕсли Результат.Улица = "" Тогда
Результат.Улица = ПредставлениеТерритории;
Иначе
Результат.НаселенныйПункт = СоединитьЧерезЗапятую(Результат.НаселенныйПункт, ПредставлениеТерритории);
КонецЕсли;
КонецЕсли;
Если Результат.Дом = "" Тогда
Здание = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(СведенияОбАдресе, "Здание");
Если ТипЗнч(Здание) = Тип("Структура") И Здание.Свойство("Номер") И ЗначениеЗаполнено(Здание.Номер) Тогда
Результат.Дом = Здание.Номер;
КонецЕсли;
КонецЕсли;
Если Результат.Дом = ""
И СведенияОбАдресе.Свойство("НомерЗемельногоУчастка")
И ЗначениеЗаполнено(СведенияОбАдресе.НомерЗемельногоУчастка) Тогда
Результат.Дом = СведенияОбАдресе.НомерЗемельногоУчастка;
КонецЕсли;
Корпуса = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(СведенияОбАдресе, "Корпуса");
Литера = "";
Если ТипЗнч(Корпуса) = Тип("Массив") Тогда
Для Каждого Корпус Из Корпуса Цикл
Если СтрСравнить(Корпус.ТипКорпуса, "ЛИТЕР") = 0
Или СтрСравнить(Корпус.ТипКорпуса, "ЛИТЕРА") = 0 Тогда
Литера = Литера + Строка(Корпус.Номер);
Иначе
Если Результат.Корпус = "" Тогда
Результат.Корпус = Корпус.Номер;
Иначе
Результат.Корпус = Результат.Корпус + Корпус.Номер;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Литера <> "" Тогда
Результат.Корпус = Результат.Корпус + Литера;
КонецЕсли;
Помещения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(СведенияОбАдресе, "Помещения");
Если ТипЗнч(Помещения) = Тип("Массив") Тогда
Для Каждого Помещение Из Помещения Цикл
Результат.Квартира = СоединитьЧерезЗапятую(Результат.Квартира, Помещение.Номер);
КонецЦикла;
КонецЕсли;
Возврат Результат;
КонецФункции
Функция СоединитьЧерезЗапятую(Фрагмент1, Фрагмент2)
Возврат ?(
ЗначениеЗаполнено(Фрагмент1) И ЗначениеЗаполнено(Фрагмент2),
Фрагмент1 + ", " + Фрагмент2,
Строка(Фрагмент1) + Строка(Фрагмент2));
КонецФункции
#КонецОбласти
#Область ФиксацияВторичныхДанныхВДокументах
Функция ФиксируемыеРеквизиты()
ФиксируемыеРеквизиты = Новый Соответствие;
Шаблон = ФиксацияВторичныхДанныхВДокументах.ОписаниеФиксируемогоРеквизита();
Шаблон.ИмяГруппы = "РеквизитыОрганизации";
Шаблон.ОснованиеЗаполнения = "Организация";
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "НаименованиеТерриториальногоОрганаФСС");
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "ТелефонОрганизации");
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "РегистрационныйНомерФСС");
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "ДополнительныйКодФСС");
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "КодПодчиненностиФСС");
Шаблон = ФиксацияВторичныхДанныхВДокументах.ОписаниеФиксируемогоРеквизита();
Шаблон.ИмяГруппы = "СведенияОРуководителе";
Шаблон.ОснованиеЗаполнения = "Организация";
Шаблон.ФиксацияГруппы = Истина;
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "Руководитель");
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "ДолжностьРуководителя");
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "ОснованиеПодписиРуководителя");
Шаблон = ФиксацияВторичныхДанныхВДокументах.ОписаниеФиксируемогоРеквизита();
Шаблон.ИмяГруппы = "СведенияОГлавномБухгалтере";
Шаблон.ОснованиеЗаполнения = "Организация";
Шаблон.ФиксацияГруппы = Истина;
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "ГлавныйБухгалтер");
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "ДолжностьГлавногоБухгалтера");
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "ОснованиеПодписиГлавногоБухгалтера");
Шаблон = ФиксацияВторичныхДанныхВДокументах.ОписаниеФиксируемогоРеквизита();
Шаблон.ИмяГруппы = "ФИОСотрудника";
Шаблон.ОснованиеЗаполнения = "Сотрудник";
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "Фамилия");
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "Имя");
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "Отчество");
Шаблон = ФиксацияВторичныхДанныхВДокументах.ОписаниеФиксируемогоРеквизита();
Шаблон.ИмяГруппы = "РеквизитыСотрудника";
Шаблон.ОснованиеЗаполнения = "Сотрудник";
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "СтраховойНомерПФР");
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "АдресМестаЖительства");
Шаблон = ФиксацияВторичныхДанныхВДокументах.ОписаниеФиксируемогоРеквизита();
Шаблон.ИмяГруппы = "РеквизитыУдостоверения";
Шаблон.ОснованиеЗаполнения = "Сотрудник";
Шаблон.ФиксацияГруппы = Истина;
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "ВидДокумента");
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "СерияДокумента");
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "НомерДокумента");
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "КемВыданДокумент");
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "ДатаВыдачиДокумента");
Шаблон = ФиксацияВторичныхДанныхВДокументах.ОписаниеФиксируемогоРеквизита();
Шаблон.ИмяГруппы = "ДанныеОЗаработке";
Шаблон.ОснованиеЗаполнения = "ЗаработокСотрудника";
Шаблон.Путь = "ДанныеОЗаработке";
Шаблон.РеквизитСтроки = Истина;
ФиксацияВторичныхДанныхВДокументах.ДобавитьФиксируемыйРеквизит(ФиксируемыеРеквизиты, Шаблон, "Заработок");
Возврат Новый ФиксированноеСоответствие(ФиксируемыеРеквизиты);
КонецФункции
Функция ФиксируемыеТабличныеЧасти()
МассивПолей = Новый Массив;
МассивПолей.Добавить("РасчетныйГод");
Возврат Новый Структура("ДанныеОЗаработке", МассивПолей);
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли