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