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