"Нужна РасчетноПлатежнаяВедомость по видам деятельности
Добавил строку БухИтоги.ИспользоватьСубконто(ВидыСубконто.ВидыДеятельности, ВидДеятельности);
Ошибка число фильтров субконто превысило допустимое значение
Перем Т;
Перем Обновить;
Перем Расшифровка;
Перем Закрыть;
Перем СписокСотрудников;
//-----------------------------------------------
Процедура УстановитьВладельца(РУ, Объект)
Назначить = 0;
Если ТипЗначенияСтр(Объект) = "Справочник" Тогда
Назначить = 1;
Если (ТипЗначенияСтр(РУ) = "Справочник") Тогда
МДСубконто = Метаданные.Справочник(Объект.Вид());
Если МДСубконто.Владелец.Выбран() = 1 Тогда
Если МДСубконто.Владелец.Идентификатор = РУ.Вид() Тогда
Назначить = 2;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Назначить = 1 Тогда
Объект.ИспользоватьВладельца("""");
ИначеЕсли Назначить = 2 Тогда
Объект.ИспользоватьВладельца(РУ);
КонецЕсли;
КонецПроцедуры
//-------------------------------------------------------------------
Процедура ПриВыбореВарианта()
Если ВариантФормирования = 1 Тогда
Форма.ДокументНачисления.Доступность(0);
Форма.ПодписьС.Доступность(1);
Форма.Дата1.Доступность(1);
Форма.ПодписьПо.Доступность(1);
Форма.Дата2.Доступность(1);
Форма.КнПериода.Доступность(1);
Форма.ПодписьПодразделения.Доступность(1);
Форма.Подразделение.Доступность(1);
Форма.КнОчиститьПодразделение.Доступность(1);
Иначе
Форма.ПодписьС.Доступность(0);
Форма.Дата1.Доступность(0);
Форма.ПодписьПо.Доступность(0);
Форма.Дата2.Доступность(0);
Форма.КнПериода.Доступность(0);
Форма.ПодписьПодразделения.Доступность(0);
Форма.Подразделение.Доступность(0);
Подразделение = 0;
Форма.КнОчиститьПодразделение.Доступность(0);
Форма.ДокументНачисления.Доступность(1);
КонецЕсли;
КонецПроцедуры //ПриВыбореВарианта
//-----------------------------------------------
Функция РасшифровкаОбновить(Обновить)
Расшифровка.Установить("Обновить", Обновить);
Возврат Расшифровка;
КонецФункции //Функция РасшифровкаОбновить(Обновить)
//-----------------------------------------------
Функция ПредставлениеУдержания(Сотрудник, Счет, Субконто1, Субконто2, Субконто3)
Представление = "Удержание";
СписокСубконто = СоздатьОбъект("СписокЗначений");
СписокСубконто.ДобавитьЗначение(Субконто1);
СписокСубконто.ДобавитьЗначение(Субконто2);
СписокСубконто.ДобавитьЗначение(Субконто3);
Для СчетчикЦиклов = 1 по СписокСубконто.РазмерСписка() Цикл
ЗначениеСубконто = СписокСубконто.ПолучитьЗначение(СчетчикЦиклов);
Если глВидЗначения(ЗначениеСубконто) = "НалогиСборыОтчисления" Тогда
Представление = СокрЛП(ЗначениеСубконто);
Прервать;
КонецЕсли;
Если глВидЗначения(ЗначениеСубконто) = "Сотрудники" Тогда
Представление = Счет.Наименование;
Прервать;
КонецЕсли;
Если глВидЗначения(ЗначениеСубконто) = "Контрагенты" Тогда
Представление = """";
Если ПустоеЗначение(Субконто2) = 0 Тогда
Представление = СокрЛП(Субконто2)+": ";
КонецЕсли;
Представление = Представление + СокрЛП(Субконто1);
Если ПустоеЗначение(Субконто3) = 0 Тогда
Представление = Представление + ", " + СокрЛП(Субконто3);
КонецЕсли;
Прервать;
КонецЕсли;
КонецЦикла;
Возврат Представление;
КонецФункции
//-----------------------------------------------
Функция ПолучитьИмяСекцииНачисления(Дни, Часы)
ИмяСекцииНачисления = "Начисление";
Если ОтображатьДниЧасыПоВидамНачислений = 0 Тогда
Возврат ИмяСекцииНачисления;
КонецЕсли;
Если Дни + Часы > 0 Тогда
ИмяСекцииНачисления = "НачисленияПоДням";
КонецЕсли;
Возврат ИмяСекцииНачисления;
КонецФункции
//-----------------------------------------------
Процедура Сформировать(ФлагЗакрытияФормы = 0)
// проверка периода бухгалтерских итогов
Если глПределыБухгалтерскихИтогов(, Дата2, 0) = 0 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
Если (ВариантФормирования = 1) Тогда
Если (ПустоеЗначение(Дата1) = 1) или (ПустоеЗначение(Дата2) = 1) Тогда
Предупреждение("Неверно указан период формирования отчета!",60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;
Если (ВариантФормирования = 2) и (ДокументНачисления.Выбран() = 0) Тогда
Предупреждение("Необходимо выбрать документ начисления!",60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
Если (ВариантФормирования = 2) и (ДокументНачисления.Выбран() = 1) Тогда
СписокСотрудников = СоздатьОбъект("СписокЗначений");
ДокументНачисления.ВыгрузитьТабличнуюЧасть(СписокСотрудников, "Сотрудник");
Иначе
СписокСотрудников = """";
КонецЕсли;
Если (ТипЗначенияСтр(Т) <> "Таблица")ИЛИ(Обновить=0) Тогда
Т = СоздатьОбъект("Таблица");
Иначе
Т.Очистить();
КонецЕсли;
Т.ИсходнаяТаблица("Таблица");
Расшифровка = СоздатьОбъект("СписокЗначений");
Расшифровка.Установить("Отчет", "РасчетноПлатежнаяВедомость");
Расшифровка.Установить("РазделительУчета", РазделительУчета);
Расшифровка.Установить("Дата1", Дата1);
Расшифровка.Установить("Дата2", Дата2);
Расшифровка.Установить("Подразделение", Подразделение);
Расшифровка.Установить("СписокСотрудников", СписокСотрудников);
Расшифровка.Установить("ПоТабельномуНомеру", ПоТабельномуНомеру);
Расшифровка.Установить("ДокументНачисления", ДокументНачисления);
Расшифровка.Установить("ВариантФормирования", ВариантФормирования);
Расшифровка.Установить("ОтображатьСоциальныйНалог", ОтображатьСоциальныйНалог);
Расшифровка.Установить("ОтображатьДниЧасыПоВидамНачислений", ОтображатьДниЧасыПоВидамНачислений);
Расшифровка.Установить("ГруппироватьПоПодразделениям", ГруппироватьПоПодразделениям);
Т.ВывестиСекцию("Обновить|Сотрудник");
Если ВариантФормирования = 1 Тогда
Расшифровка.Установить("Отчет",);
Расшифровка.Установить("РазделительУчета",);
Расшифровка.Установить("Дата1",);
Расшифровка.Установить("Дата2",);
Расшифровка.Установить("Подразделение",);
Расшифровка.Установить("СписокСотрудников",);
Расшифровка.Установить("ПоТабельномуНомеру",);
Расшифровка.Установить("ОтображатьСоциальныйНалог",);
Расшифровка.Установить("ОтображатьДниЧасыПоВидамНачислений");
Расшифровка.Установить("ГруппироватьПоПодразделениям",);
Иначе
Расшифровка.Установить("ДокументНачисления", ДокументНачисления);
КонецЕсли;
Если ГруппироватьПоПодразделениям = 1 Тогда
// создаем вспомогательную таблицу для группировки по подразделениям
тзПодразделений = СоздатьОбъект("ТаблицаЗначений");
тзПодразделений.НоваяКолонка("Подразделение");
тзПодразделений.НоваяКолонка("Начисления", "ТаблицаЗначений");
тзПодразделений.НоваяКолонка("Удержания", "ТаблицаЗначений");
тзПодразделений.НоваяКолонка("СНК", "Число", 15, 2);
тзПодразделений.НоваяКолонка("СКК", "Число", 15, 2);
тзПодразделений.НоваяКолонка("Выдано", "Число", 15, 2);
тзПодразделений.НоваяКолонка("Возврат", "Число", 15, 2);
тзПодразделений.НоваяКолонка("Дни", "Число", 15, 0);
тзПодразделений.НоваяКолонка("Часы", "Число", 15, 0);
тзПодразделений.НоваяКолонка("СоциальныйНалог", "Число", 15, 2);
тзПодразделений.НоваяКолонка("СоциальноеСтрахование", "Число", 15, 2);
КонецЕсли;
тзНачисленийУдержаний = СоздатьОбъект("ТаблицаЗначений");
тзНачисленийУдержаний.НоваяКолонка("Сотрудник");
тзНачисленийУдержаний.НоваяКолонка("Подразделение");
тзНачисленийУдержаний.НоваяКолонка("Должность");
тзНачисленийУдержаний.НоваяКолонка("ТабельныйНомер");
тзНачисленийУдержаний.НоваяКолонка("Начисления", "ТаблицаЗначений");
тзНачисленийУдержаний.НоваяКолонка("Удержания", "ТаблицаЗначений");
тзНачисленийУдержаний.НоваяКолонка("СНК", "Число", 15, 2);
тзНачисленийУдержаний.НоваяКолонка("СКК", "Число", 15, 2);
тзНачисленийУдержаний.НоваяКолонка("Выдано", "Число", 15, 2);
тзНачисленийУдержаний.НоваяКолонка("Возврат", "Число", 15, 2);
тзНачисленийУдержаний.НоваяКолонка("Дни", "Число", 10, 1);
тзНачисленийУдержаний.НоваяКолонка("Часы", "Число", 10, 0);
тзНачисленийУдержаний.НоваяКолонка("СоциальныйНалог", "Число", 15, 2);
тзНачисленийУдержаний.НоваяКолонка("СоциальноеСтрахование", "Число", 15, 2);
тзНачислений = СоздатьОбъект("ТаблицаЗначений");
тзНачислений.НоваяКолонка("Начисление");
тзНачислений.НоваяКолонка("Сумма", "Число", 15, 2);
тзНачислений.НоваяКолонка("Дни", "Число", 10, 1);
тзНачислений.НоваяКолонка("Часы", "Число", 10, 0);
тзУдержаний = СоздатьОбъект("ТаблицаЗначений");
тзУдержаний.НоваяКолонка("Счет", "Счет.Основной");
тзУдержаний.НоваяКолонка("Сумма", "Число", 15, 2);
БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги");
БухИтоги.ИспользоватьПланСчетов(ВыбранныйПланСчетов());
Если Метаданные.РазделительУчета.Выбран() = 1 Тогда
Если ПустоеЗначение(РазделительУчета) = 0 Тогда
БухИтоги.ИспользоватьРазделительУчета(РазделительУчета);
КонецЕсли;
КонецЕсли;
НачДата = ?(ВариантФормирования = 1, Дата1, ДокументНачисления);
КонДата = ?(ВариантФормирования = 1, Дата2, ДокументНачисления);
БухИтоги.ИспользоватьСубконто(ВидыСубконто.Сотрудники, СписокСотрудников);
//&&&&&&&&&&&&&&&&&&&&&&
БухИтоги.ИспользоватьСубконто(ВидыСубконто.ВидыДеятельности, ВидДеятельности);
//&&&&&&&&&&&&&&&&&&&&&&
БухИтоги.ВыполнитьЗапрос(НачДата, КонДата, "335");
БухИтоги.ВыбратьСубконто(1);
Пока БухИтоги.ПолучитьСубконто(1) = 1 Цикл
Если Подразделение.Выбран() = 1 Тогда
Если БухИтоги.Субконто(1).Подразделение.Получить(КонДата) <> Подразделение Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
тзНачисленийУдержаний.НоваяСтрока();
тзНачисленийУдержаний.Сотрудник = БухИтоги.Субконто(1);
тзНачисленийУдержаний.Подразделение = БухИтоги.Субконто(1).Подразделение.Получить(Дата2);
тзНачисленийУдержаний.Должность = БухИтоги.Субконто(1).Должность;
тзНачисленийУдержаний.ТабельныйНомер = БухИтоги.Субконто(1).Код;
// Если нужно группировать по подразделениям, то
// позиционируемся на запись в таблице Подразделений
Если ГруппироватьПоПодразделениям = 1 Тогда
ТекПодразделение = БухИтоги.Субконто(1).Подразделение.Получить(Дата2);
Стр = """";
Если ТзПодразделений.НайтиЗначение(ТекПодразделение,Стр,"Подразделение") = 0 Тогда
ТзПодразделений.НоваяСтрока();
ТзПодразделений.Подразделение = ТекПодразделение;
ТзПодразделений.Начисления = СоздатьОбъект("ТаблицаЗначений");
ТзПодразделений.Начисления.НоваяКолонка("Начисление");
ТзПодразделений.Начисления.НоваяКолонка("Сумма", "Число", 15, 2);
ТзПодразделений.Начисления.НоваяКолонка("Дни", "Число", 10, 1);
ТзПодразделений.Начисления.НоваяКолонка("Часы", "Число", 10, 0);
ТзПодразделений.Удержания = СоздатьОбъект("ТаблицаЗначений");
ТзПодразделений.Удержания.НоваяКолонка("Счет", "Счет.Основной");
ТзПодразделений.Удержания.НоваяКолонка("Сумма", "Число", 15, 2);
ТзПодразделений.СНК = 0;
ТзПодразделений.СКК = 0;
ТзПодразделений.Выдано = 0;
ТзПодразделений.Возврат = 0;
ТзПодразделений.Дни = 0;
ТзПодразделений.Часы = 0;
ТзПодразделений.СоциальныйНалог = 0;
ТзПодразделений.СоциальноеСтрахование = 0;
Иначе
ТзПодразделений.ПолучитьСтрокуПоНомеру(Стр);
КонецЕсли;
КонецЕсли;
КонецЦикла;
НачислениеОклад = глПолучитьНачисление("Оклад", 1, "Заработная плата");
НачислениеТариф = глПолучитьНачисление("Тариф", 1, "Заработная плата");
БухИтоги.ИспользоватьСубконто(ВидыСубконто.Сотрудники, СписокСотрудников);
БухИтоги.ИспользоватьСубконто(ВидыСубконто.ВидыНачисленийИПрочихДоходов);
БухИтоги.ИспользоватьСубконто(ВидыСубконто.ЕдиницыУчетаРабочегоВремени);
//&&&&&&&&&&&&&&&&&&&&&&
БухИтоги.ИспользоватьСубконто(ВидыСубконто.ВидыДеятельности, ВидДеятельности);
//&&&&&&&&&&&&&&&&&&&&&&
БухИтоги.ВыполнитьЗапрос(НачДата, КонДата, "ПНС");
БухИтоги.ВыбратьСубконто(1);
Пока БухИтоги.ПолучитьСубконто(1) = 1 Цикл
Стр = 0;
Если тзНачисленийУдержаний.НайтиЗначение(БухИтоги.Субконто(1), Стр, "Сотрудник") = 0 Тогда
Продолжить;
Иначе
тзНачисленийУдержаний.ПолучитьСтрокуПоНомеру(Стр);
КонецЕсли;
// Если нужно группировать по подразделениям, то
// позиционируемся на запись в таблице Подразделений
Если ГруппироватьПоПодразделениям = 1 Тогда
ТекПодразделение = БухИтоги.Субконто(1).Подразделение.Получить(Дата2);
Стр = """";
Если ТзПодразделений.НайтиЗначение(ТекПодразделение,Стр,"Подразделение") = 0 Тогда
Продолжить;
Иначе
ТзПодразделений.ПолучитьСтрокуПоНомеру(Стр);
КонецЕсли;
КонецЕсли;
Начисления = СоздатьОбъект("ТаблицаЗначений");
Начисления.НоваяКолонка("Начисление");
Начисления.НоваяКолонка("Сумма", "Число", 15, 2);
Начисления.НоваяКолонка("Дни", "Число", 10, 1);
Начисления.НоваяКолонка("Часы", "Число", 10, 0);
БухИтоги.ВыбратьСубконто(2);
Пока БухИтоги.ПолучитьСубконто(2) = 1 Цикл
Если БухИтоги.ДО("С") = 0 Тогда
Продолжить;
КонецЕсли;
// по дням и часам
Дни = 0;
Часы = 0;
БухИтоги.ВыбратьСубконто(3);
Пока БухИтоги.ПолучитьСубконто(3) = 1 Цикл
Если БухИтоги.Субконто(3) = Перечисление.ЕдиницыУчетаРабочегоВремени.Часы Тогда
Часы = Часы + БухИтоги.ДО("К");
Иначе
Дни = Дни + БухИтоги.ДО("К");
КонецЕсли;
КонецЦикла;
Начисления.НоваяСтрока();
Начисления.Начисление = БухИтоги.Субконто(2);
Начисления.Сумма = БухИтоги.ДО("С");
Начисления.Дни = Дни;
Начисления.Часы = Часы;
Стр = 0;
Если тзНачислений.НайтиЗначение(БухИтоги.Субконто(2), Стр, "Начисление") = 0 Тогда
тзНачислений.НоваяСтрока();
тзНачислений.Начисление = БухИтоги.Субконто(2);
тзНачислений.Сумма = 0;
тзНачислений.Дни = 0;
тзНачислений.Часы = 0;
Иначе
тзНачислений.ПолучитьСтрокуПоНомеру(Стр);
КонецЕсли;
тзНачислений.Сумма = тзНачислений.Сумма + БухИтоги.ДО("С");
тзНачислений.Дни = Дни;
тзНачислений.Часы = Часы;
// Накапливаем итоги по подразделениям
Если ГруппироватьПоПодразделениям = 1 Тогда
Стр = """";
Если тзПодразделений.Начисления.НайтиЗначение(БухИтоги.Субконто(2), Стр, "Начисление") = 0 Тогда
тзПодразделений.Начисления.НоваяСтрока();
тзПодразделений.Начисления.Начисление = БухИтоги.Субконто(2);
тзПодразделений.Начисления.Сумма = БухИтоги.ДО("С");
тзПодразделений.Начисления.Дни = Дни;
тзПодразделений.Начисления.Часы = Часы;
Иначе
тзПодразделений.Начисления.ПолучитьСтрокуПоНомеру(Стр);
тзПодразделений.Начисления.Сумма = тзПодразделений.Начисления.Сумма + БухИтоги.ДО("С");
тзПодразделений.Начисления.Дни = тзПодразделений.Начисления.Дни + Дни;
тзПодразделений.Начисления.Часы = тзПодразделений.Начисления.Часы + Часы;
КонецЕсли;
тзПодразделений.Дни = тзПодразделений.Дни + Дни;
тзПодразделений.Часы = тзПодразделений.Часы + Часы;
КонецЕсли;
КонецЦикла; // По видам начислений
тзНачисленийУдержаний.Начисления = Начисления;
тзНачисленийУдержаний.Дни = Начисления.Итог("Дни");
тзНачисленийУдержаний.Часы = Начисления.Итог("Часы");
КонецЦикла;
БухИтоги.ВключатьСубсчета(1, -1);
БухИтоги.ИспользоватьСубконто(ВидыСубконто.Сотрудники, СписокСотрудников);
//&&&&&&&&&&&&&&&&&&&&&&
БухИтоги.ИспользоватьСубконто(ВидыСубконто.ВидыДеятельности, ВидДеятельности);
//&&&&&&&&&&&&&&&&&&&&&&
СписокСчетовЗапроса = "335";
Если ОтображатьСоциальныйНалог = 1 Тогда
СписокСчетовЗапроса = СписокСчетовЗапроса + ",ПНЦ";
БухИтогиВсп = СоздатьОбъект("БухгалтерскиеИтоги");
Если Метаданные.РазделительУчета.Выбран() = 1 Тогда
Если ПустоеЗначение(РазделительУчета) = 0 Тогда
БухИтогиВсп.ИспользоватьРазделительУчета(РазделительУчета);
КонецЕсли;
КонецЕсли;
БухИтогиВсп.ВключатьСубсчета(-1, -1);
БухИтогиВсп.ИспользоватьСубконто(ВидыСубконто.Сотрудники, СписокСотрудников,1);
БухИтогиВсп.ИспользоватьСубконто(ВидыСубконто.ВидыПлатежей, Перечисление.ВидыПлатежей.НалогВзнос,2);
//&&&&&&&&&&&&&&&&&&&&&&
БухИтоги.ИспользоватьСубконто(ВидыСубконто.ВидыДеятельности, ВидДеятельности);
//&&&&&&&&&&&&&&&&&&&&&&
БухИтогиВсп.ВыполнитьЗапрос(НачДата, КонДата, "321",,,3);
БухИтогиВсп.ВыбратьСубконто();
КонецЕсли;
БухИтоги.ВыполнитьЗапрос(НачДата, КонДата, СписокСчетовЗапроса,,,3);
БухИтоги.ВыбратьСубконто();
Пока БухИтоги.ПолучитьСубконто() = 1 Цикл
Если Подразделение.Выбран() = 1 Тогда
Если БухИтоги.Субконто(1).Подразделение.Получить(КонДата) <> Подразделение Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Стр = 0;
Если тзНачисленийУдержаний.НайтиЗначение(БухИтоги.Субконто(), Стр, "Сотрудник") = 1 Тогда
тзНачисленийУдержаний.ПолучитьСтрокуПоНомеру(Стр);
Иначе
тзНачисленийУдержаний.НоваяСтрока();
тзНачисленийУдержаний.Сотрудник = БухИтоги.Субконто();
КонецЕсли;
// Если нужно группировать по подразделениям, то
// позиционируемся на запись в таблице Подразделений
Если ГруппироватьПоПодразделениям = 1 Тогда
ТекПодразделение = БухИтоги.Субконто(1).Подразделение.Получить(Дата2);
Стр = """";
Если ТзПодразделений.НайтиЗначение(ТекПодразделение,Стр,"Подразделение") = 0 Тогда
Продолжить;
Иначе
ТзПодразделений.ПолучитьСтрокуПоНомеру(Стр);
КонецЕсли;
КонецЕсли;
БухИтоги.ВыбратьСчета();
Если ОтображатьСоциальныйНалог = 1 Тогда
// сумма исчисленного социального налога
Если БухИтоги.ПолучитьСчет(,СчетПоКоду("ПНЦ.1")) = 1 Тогда
тзНачисленийУдержаний.СоциальныйНалог = БухИтоги.ДО();
// накапливаем итоги в таблице Подразделений
Если ГруппироватьПоПодразделениям = 1 Тогда
ТзПодразделений.СоциальныйНалог = ТзПодразделений.СоциальныйНалог + БухИтоги.ДО();
КонецЕсли;
КонецЕсли;
// сумма выплат в фонд обязательного социального страхования
СуммаСоцСтрах = 0;
Если БухИтогиВсп.ПолучитьСубконто(1,,БухИтоги.Субконто(1)) = 1 Тогда
СуммаСоцСтрах = БухИтогиВсп.КО();
БухИтогиВсп.ВыбратьКорСчета();
Если БухИтогиВсп.ПолучитьКорСчет(, СчетПоКоду("3398")) = 1 Тогда
СуммаСоцСтрах = СуммаСоцСтрах - БухИтогиВсп.КорКО();
КонецЕсли;
тзНачисленийУдержаний.СоциальноеСтрахование = СуммаСоцСтрах;
// накапливаем итоги в таблице Подразделений
Если ГруппироватьПоПодразделениям = 1 Тогда
ТзПодразделений.СоциальноеСтрахование = ТзПодразделений.СоциальноеСтрахование + СуммаСоцСтрах;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если БухИтоги.ПолучитьСчет(,СчетПоКоду("335")) = 1 Тогда
тзНачисленийУдержаний.СНК = БухИтоги.СНК("С");
тзНачисленийУдержаний.СКК = БухИтоги.СКК("С");
тзНачисленийУдержаний.Выдано = 0;
Удержания = СоздатьОбъект("ТаблицаЗначений");
Удержания.НоваяКолонка("Счет", "Счет.Основной");
Удержания.НоваяКолонка("Сумма", "Число", 15, 2);
БухИтоги.ВыбратьКорСчета(,1);
Пока БухИтоги.ПолучитьКорСчет() = 1 Цикл
Если БухИтоги.КорСчет.ЭтоГруппа() = 1 Тогда
Продолжить;
КонецЕсли;
Если (БухИтоги.КорСчет = СчетПоКоду("101")) или (БухИтоги.КорСчет = СчетПоКоду("103")) или (БухИтоги.КорСчет = СчетПоКоду("1021")) Тогда
тзНачисленийУдержаний.Выдано = тзНачисленийУдержаний.Выдано + БухИтоги.КорДО("С");
Продолжить;
КонецЕсли;
Удержания.НоваяСтрока();
Удержания.Счет = БухИтоги.КорСчет;
Удержания.Сумма = БухИтоги.КорДО("С");
Стр = 0;
Если тзУдержаний.НайтиЗначение(БухИтоги.КорСчет, Стр, "Счет") = 0 Тогда
тзУдержаний.НоваяСтрока();
тзУдержаний.Счет = БухИтоги.КорСчет;
тзУдержаний.Сумма = БухИтоги.КорДО("С");
Иначе
тзУдержаний.ПолучитьСтрокуПоНомеру(Стр);
тзУдержаний.Сумма = тзУдержаний.Сумма + БухИтоги.КорДО("С");
КонецЕсли;
// Накапливаем итоги по подразделениям
Если ГруппироватьПоПодразделениям = 1 Тогда
Стр = """";
Если тзПодразделений.Удержания.НайтиЗначение(БухИтоги.КорСчет, Стр, "Счет") = 0 Тогда
тзПодразделений.Удержания.НоваяСтрока();
тзПодразделений.Удержания.Счет = БухИтоги.КорСчет;
тзПодразделений.Удержания.Сумма = БухИтоги.КорДО("С");
Иначе
тзПодразделений.Удержания.ПолучитьСтрокуПоНомеру(Стр);
тзПодразделений.Удержания.Сумма = тзПодразделений.Удержания.Сумма + БухИтоги.КорДО("С");
КонецЕсли;
КонецЕсли;
КонецЦикла;
тзНачисленийУдержаний.Удержания = Удержания;
БухИтоги.ВыбратьКорСчета(,2);
Пока БухИтоги.ПолучитьКорСчет() = 1 Цикл
Если (БухИтоги.КорСчет = СчетПоКоду("101")) или (БухИтоги.КорСчет = СчетПоКоду("103")) или (БухИтоги.КорСчет = СчетПоКоду("1021")) Тогда
тзНачисленийУдержаний.Возврат = тзНачисленийУдержаний.Возврат + БухИтоги.КорКО("С");
Прервать;
КонецЕсли;
КонецЦикла;
// накапливаем итоги в таблице Подразделений
Если ГруппироватьПоПодразделениям = 1 Тогда
ТзПодразделений.СНК = ТзПодразделений.СНК + БухИтоги.СНК("С");
ТзПодразделений.СКК = ТзПодразделений.СКК + БухИтоги.СКК("С");
ТзПодразделений.Выдано = ТзПодразделений.Выдано + тзНачисленийУдержаний.Выдано;
ТзПодразделений.Возврат = ТзПодразделений.Возврат + тзНачисленийУдержаний.Возврат ;
КонецЕсли;
КонецЕсли; // Если ПолучитьСчет(, СчетПоКоду("681")) =1 Тогда
КонецЦикла;
тзНачислений.Сортировать("+Начисление");
тзУдержаний.Сортировать("+Счет");
СтрокаСортировки = """";
Если ГруппироватьПоПодразделениям = 1 Тогда
СтрокаСортировки = "+Подразделение";
КонецЕсли;
Если ПоТабельномуНомеру = 1 Тогда
СтрокаСортировки = СтрокаСортировки + ?(ПустоеЗначение(СтрокаСортировки) = 0,",+ТабельныйНомер","+ТабельныйНомер");
Иначе
СтрокаСортировки = СтрокаСортировки + ?(ПустоеЗначение(СтрокаСортировки) = 0,",+Сотрудник","+Сотрудник");
КонецЕсли;
Если ПустоеЗначение(СтрокаСортировки) = 0 Тогда
тзНачисленийУдержаний.Сортировать(СтрокаСортировки);
КонецЕсли;
Т.ВывестиСекцию("Шапка|Сотрудник");
тзНачислений.ВыбратьСтроки();
Пока тзНачислений.ПолучитьСтроку() = 1 Цикл
Представление = СокрЛП(тзНачислений.Начисление);
Т.ПрисоединитьСекцию("Шапка|" + ПолучитьИмяСекцииНачисления(тзНачислений.Дни, тзНачислений.Часы));
КонецЦикла;
Т.ПрисоединитьСекцию("Шапка|ВсегоНачислено");
тзУдержаний.ВыбратьСтроки();
Пока тзУдержаний.ПолучитьСтроку() = 1 Цикл
Представление = тзУдержаний.Счет.Наименование;
Т.ПрисоединитьСекцию("Шапка|Удержание");
КонецЦикла;
Т.ПрисоединитьСекцию("Шапка|ВсегоУдержано");
Т.ПрисоединитьСекцию("Шапка|Выплачено");
Если тзНачисленийУдержаний.Итог("Возврат") > 0 Тогда
Т.ПрисоединитьСекцию("Шапка|Возврат");
КонецЕсли;
Т.ПрисоединитьСекцию("Шапка|КВыплате");
Если ОтображатьСоциальныйНалог = 1 Тогда
Т.ПрисоединитьСекцию("Шапка|СоцНалог");
КонецЕсли;
Если ГруппироватьПоПодразделениям = 1 Тогда
ПредыдущееПодразделение = """";
КонецЕсли;
НомерСтроки = 0;
тзНачисленийУдержаний.ВыбратьСтроки();
Пока тзНачисленийУдержаний.ПолучитьСтроку() = 1 Цикл
Если ГруппироватьПоПодразделениям = 1 Тогда
// Проверим смену подразделения
Если тзНачисленийУдержаний.Подразделение <> ПредыдущееПодразделение Тогда
// Позициониируемся на итогах по подразделению
// в таблице подразделений
ПредыдущееПодразделение = тзНачисленийУдержаний.Подразделение;
НомерСтроки = 0;
Стр = """";
Если тзПодразделений.НайтиЗначение(тзНачисленийУдержаний.Подразделение,Стр,"Подразделение") = 1 Тогда
тзПодразделений.ПолучитьСтрокуПоНомеру(Стр);
ВсегоНачислено = 0;
ВсегоУдержано = 0;
Начисления = тзПодразделений.Начисления;
Удержания = тзПодразделений.Удержания;
Если ПустоеЗначение(Начисления) = 0 Тогда
ВсегоНачислено = Начисления.Итог("Сумма");
КонецЕсли;
Если ПустоеЗначение(Удержания) = 0 Тогда
ВсегоУдержано = Удержания.Итог("Сумма");
КонецЕсли;
Т.ВывестиСекцию("Подразделение|Сотрудник");
тзНачислений.ВыбратьСтроки();
Пока тзНачислений.ПолучитьСтроку() = 1 Цикл
Стр = 0; Начислено = 0; Дни = 0; Часы = 0;
Если ПустоеЗначение(Начисления) = 0 Тогда
Если Начисления.НайтиЗначение(тзНачислений.Начисление, Стр, "Начисление") = 1 Тогда
Начисления.ПолучитьСтрокуПоНомеру(Стр);
Начислено = Начисления.Сумма;
Дни = Начисления.Дни;
Часы = Начисления.Часы;
КонецЕсли;
КонецЕсли;
Т.ПрисоединитьСекцию("Подразделение|" + ПолучитьИмяСекцииНачисления(тзНачислений.Дни, тзНачислений.Часы));
КонецЦикла;
Т.ПрисоединитьСекцию("Подразделение|ВсегоНачислено");
тзУдержаний.ВыбратьСтроки();
Пока тзУдержаний.ПолучитьСтроку() = 1 Цикл
Стр = 0; Удержано = 0;
Если ПустоеЗначение(Удержания) = 0 Тогда
Если Удержания.НайтиЗначение(тзУдержаний.Счет, Стр, "Счет") = 1 Тогда
Удержания.ПолучитьСтрокуПоНомеру(Стр);
Удержано = Удержания.Сумма;
КонецЕсли;
КонецЕсли;
Т.ПрисоединитьСекцию("Подразделение|Удержание");
КонецЦикла;
Т.ПрисоединитьСекцию("Подразделение|ВсегоУдержано");
Т.ПрисоединитьСекцию("Подразделение|Выплачено");
Если тзНачисленийУдержаний.Итог("Возврат") > 0 Тогда
Т.ПрисоединитьСекцию("Подразделение|Возврат");
КонецЕсли;
Т.ПрисоединитьСекцию("Подразделение|КВыплате");
Если ОтображатьСоциальныйНалог = 1 Тогда
Т.ПрисоединитьСекцию("Подразделение|СоцНалог");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
НомерСтроки = НомерСтроки + 1;
ВсегоНачислено = 0;
ВсегоУдержано = 0;
Начисления = тзНачисленийУдержаний.Начисления;
Удержания = тзНачисленийУдержаний.Удержания;
Если ПустоеЗначение(Начисления) = 0 Тогда
ВсегоНачислено = Начисления.Итог("Сумма");
КонецЕсли;
Если ПустоеЗначение(Удержания) = 0 Тогда
ВсегоУдержано = Удержания.Итог("Сумма");
КонецЕсли;
Т.ВывестиСекцию("Строка|Сотрудник");
тзНачислений.ВыбратьСтроки();
Пока тзНачислений.ПолучитьСтроку() = 1 Цикл
Стр = 0; Начислено = 0; Дни = 0; Часы = 0;
Если ПустоеЗначение(Начисления) = 0 Тогда
Если Начисления.НайтиЗначение(тзНачислений.Начисление, Стр, "Начисление") = 1 Тогда
Начисления.ПолучитьСтрокуПоНомеру(Стр);
Начислено = Начисления.Сумма;
Дни = Начисления.Дни;
Часы = Начисления.Часы;
КонецЕсли;
КонецЕсли;
Т.ПрисоединитьСекцию("Строка|" + ПолучитьИмяСекцииНачисления(тзНачислений.Дни, тзНачислений.Часы));
КонецЦикла;
Т.ПрисоединитьСекцию("Строка|ВсегоНачислено");
тзУдержаний.ВыбратьСтроки();
Пока тзУдержаний.ПолучитьСтроку() = 1 Цикл
Стр = 0; Удержано = 0;
Если ПустоеЗначение(Удержания) = 0 Тогда
Если Удержания.НайтиЗначение(тзУдержаний.Счет, Стр, "Счет") = 1 Тогда
Удержания.ПолучитьСтрокуПоНомеру(Стр);
Удержано = Удержания.Сумма;
КонецЕсли;
КонецЕсли;
Т.ПрисоединитьСекцию("Строка|Удержание");
КонецЦикла;
Т.ПрисоединитьСекцию("Строка|ВсегоУдержано");
Т.ПрисоединитьСекцию("Строка|Выплачено");
Если тзНачисленийУдержаний.Итог("Возврат") > 0 Тогда
Т.ПрисоединитьСекцию("Строка|Возврат");
КонецЕсли;
Т.ПрисоединитьСекцию("Строка|КВыплате");
Если ОтображатьСоциальныйНалог = 1 Тогда
Т.ПрисоединитьСекцию("Строка|СоцНалог");
КонецЕсли;
КонецЦикла;
Т.ВывестиСекцию("Подвал|Сотрудник");
тзНачислений.ВыбратьСтроки();
Пока тзНачислений.ПолучитьСтроку() = 1 Цикл
Дни = тзНачислений.Дни;
Часы = тзНачислений.Часы;
Т.ПрисоединитьСекцию("Подвал|" + ПолучитьИмяСекцииНачисления(тзНачислений.Дни, тзНачислений.Часы));
КонецЦикла;
Т.ПрисоединитьСекцию("Подвал|ВсегоНачислено");
тзУдержаний.ВыбратьСтроки();
Пока тзУдержаний.ПолучитьСтроку() = 1 Цикл
Т.ПрисоединитьСекцию("Подвал|Удержание");
КонецЦикла;
Т.ПрисоединитьСекцию("Подвал|ВсегоУдержано");
Т.ПрисоединитьСекцию("Подвал|Выплачено");
Если тзНачисленийУдержаний.Итог("Возврат") > 0 Тогда
Т.ПрисоединитьСекцию("Подвал|Возврат");
КонецЕсли;
Т.ПрисоединитьСекцию("Подвал|КВыплате");
Если ОтображатьСоциальныйНалог = 1 Тогда
Т.ПрисоединитьСекцию("Подвал|СоцНалог");
КонецЕсли;
ВерхнийКолонтитул = "Расчетно-платежная ведомость "+?(ТипЗначения(РазделительУчета)=0, """", " "+РазделительУчета);
НижнийКолонтитул = "Отчет сформирован "+ТекущаяДата()+" "+ТекущееВремя()+?(ПустоеЗначение(ИмяПользователя())=0," Пользователь: "+ИмяПользователя(),"""");
Т.ТолькоПросмотр(1);
Т.Опции(0, 0, 11, 4, "ОпцииПечатиРасчетноПлатежнаяВедомость", "РасчетноПлатежнаяВедомость");
Т.ОбластьПечати(2);
Т.ПараметрыСтраницы(1,,,,,,,,, 0);
Т.Показать(ВерхнийКолонтитул, """");
Если (ФлагЗакрытияФормы = 1) Или (Обновить = 2) Тогда
СтрокаДействийФормы = "#Закрыть";
КонецЕсли;
КонецПроцедуры
//-----------------------------------------------
Процедура УправлениеРУ(ТипУправления="""")
Если ТипУправления = """" Тогда
Если ПустоеЗначение(РазделительУчета) = 1 Тогда
Форма.РазделительУчета.Доступность(0);
ПоВсемРУ = 1;
Иначе
ПоВсемРУ = 0;
КонецЕсли;
ИначеЕсли ТипУправления = "ПоВсемРУ" Тогда
Если ПоВсемРУ = 1 Тогда
РазделительУчета = 0;
Форма.РазделительУчета.Доступность(0);
Иначе
Форма.РазделительУчета.Доступность(1);
КонецЕсли;
КонецЕсли;
УстановитьВладельца(РазделительУчета, Подразделение);
КонецПроцедуры
//-----------------------------------------------
Процедура ПриОткрытии()
глДоступностьОрганизацииВОтчете(Контекст);
ВидДеятельности=Константа.Бюджет;
Если глФлагРасшифровки = 1 Тогда
Закрыть = 1;
Обновить = глОбновить;
РазделительУчета = глРасшифровка.Получить("РазделительУчета");
ВариантФормирования = глРасшифровка.Получить("ВариантФормирования");
Дата1 = глРасшифровка.Получить("Дата1");
Дата2 = глРасшифровка.Получить("Дата2");
Подразделение = глРасшифровка.Получить("Подразделение");
ДокументНачисления = глРасшифровка.Получить("ДокументНачисления");
СписокСотрудников = глРасшифровка.Получить("СписокСотрудников");
ПоТабельномуНомеру = глРасшифровка.Получить("ПоТабельномуНомеру");
ОтображатьСоциальныйНалог = глРасшифровка.Получить("ОтображатьСоциальныйНалог");
ОтображатьДниЧасыПоВидамНачислений = глРасшифровка.Получить("ОтображатьДниЧасыПоВидамНачислений");
ГруппироватьПоПодразделениям = глРасшифровка.Получить("ГруппироватьПоПодразделениям");
Если Обновить <> 0 Тогда
Т = глТаблица;
КонецЕсли;
Если Обновить <> 2 Тогда
Сформировать();
СтатусВозврата(0);
Возврат;
КонецЕсли;
Иначе
ВариантФормирования = 1;
ДокументНачисления = """";
Закрыть = 0;
Обновить = 0;
Дата1 = НачалоПериодаБИ();
Дата2 = КонецПериодаБИ();
КонецЕсли;
ПриВыбореВарианта();
УправлениеРУ();
КонецПроцедуры"
Добавил строку БухИтоги.ИспользоватьСубконто(ВидыСубконто.ВидыДеятельности, ВидДеятельности);
Ошибка число фильтров субконто превысило допустимое значение
Перем Т;
Перем Обновить;
Перем Расшифровка;
Перем Закрыть;
Перем СписокСотрудников;
//-----------------------------------------------
Процедура УстановитьВладельца(РУ, Объект)
Назначить = 0;
Если ТипЗначенияСтр(Объект) = "Справочник" Тогда
Назначить = 1;
Если (ТипЗначенияСтр(РУ) = "Справочник") Тогда
МДСубконто = Метаданные.Справочник(Объект.Вид());
Если МДСубконто.Владелец.Выбран() = 1 Тогда
Если МДСубконто.Владелец.Идентификатор = РУ.Вид() Тогда
Назначить = 2;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Назначить = 1 Тогда
Объект.ИспользоватьВладельца("""");
ИначеЕсли Назначить = 2 Тогда
Объект.ИспользоватьВладельца(РУ);
КонецЕсли;
КонецПроцедуры
//-------------------------------------------------------------------
Процедура ПриВыбореВарианта()
Если ВариантФормирования = 1 Тогда
Форма.ДокументНачисления.Доступность(0);
Форма.ПодписьС.Доступность(1);
Форма.Дата1.Доступность(1);
Форма.ПодписьПо.Доступность(1);
Форма.Дата2.Доступность(1);
Форма.КнПериода.Доступность(1);
Форма.ПодписьПодразделения.Доступность(1);
Форма.Подразделение.Доступность(1);
Форма.КнОчиститьПодразделение.Доступность(1);
Иначе
Форма.ПодписьС.Доступность(0);
Форма.Дата1.Доступность(0);
Форма.ПодписьПо.Доступность(0);
Форма.Дата2.Доступность(0);
Форма.КнПериода.Доступность(0);
Форма.ПодписьПодразделения.Доступность(0);
Форма.Подразделение.Доступность(0);
Подразделение = 0;
Форма.КнОчиститьПодразделение.Доступность(0);
Форма.ДокументНачисления.Доступность(1);
КонецЕсли;
КонецПроцедуры //ПриВыбореВарианта
//-----------------------------------------------
Функция РасшифровкаОбновить(Обновить)
Расшифровка.Установить("Обновить", Обновить);
Возврат Расшифровка;
КонецФункции //Функция РасшифровкаОбновить(Обновить)
//-----------------------------------------------
Функция ПредставлениеУдержания(Сотрудник, Счет, Субконто1, Субконто2, Субконто3)
Представление = "Удержание";
СписокСубконто = СоздатьОбъект("СписокЗначений");
СписокСубконто.ДобавитьЗначение(Субконто1);
СписокСубконто.ДобавитьЗначение(Субконто2);
СписокСубконто.ДобавитьЗначение(Субконто3);
Для СчетчикЦиклов = 1 по СписокСубконто.РазмерСписка() Цикл
ЗначениеСубконто = СписокСубконто.ПолучитьЗначение(СчетчикЦиклов);
Если глВидЗначения(ЗначениеСубконто) = "НалогиСборыОтчисления" Тогда
Представление = СокрЛП(ЗначениеСубконто);
Прервать;
КонецЕсли;
Если глВидЗначения(ЗначениеСубконто) = "Сотрудники" Тогда
Представление = Счет.Наименование;
Прервать;
КонецЕсли;
Если глВидЗначения(ЗначениеСубконто) = "Контрагенты" Тогда
Представление = """";
Если ПустоеЗначение(Субконто2) = 0 Тогда
Представление = СокрЛП(Субконто2)+": ";
КонецЕсли;
Представление = Представление + СокрЛП(Субконто1);
Если ПустоеЗначение(Субконто3) = 0 Тогда
Представление = Представление + ", " + СокрЛП(Субконто3);
КонецЕсли;
Прервать;
КонецЕсли;
КонецЦикла;
Возврат Представление;
КонецФункции
//-----------------------------------------------
Функция ПолучитьИмяСекцииНачисления(Дни, Часы)
ИмяСекцииНачисления = "Начисление";
Если ОтображатьДниЧасыПоВидамНачислений = 0 Тогда
Возврат ИмяСекцииНачисления;
КонецЕсли;
Если Дни + Часы > 0 Тогда
ИмяСекцииНачисления = "НачисленияПоДням";
КонецЕсли;
Возврат ИмяСекцииНачисления;
КонецФункции
//-----------------------------------------------
Процедура Сформировать(ФлагЗакрытияФормы = 0)
// проверка периода бухгалтерских итогов
Если глПределыБухгалтерскихИтогов(, Дата2, 0) = 0 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
Если (ВариантФормирования = 1) Тогда
Если (ПустоеЗначение(Дата1) = 1) или (ПустоеЗначение(Дата2) = 1) Тогда
Предупреждение("Неверно указан период формирования отчета!",60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;
Если (ВариантФормирования = 2) и (ДокументНачисления.Выбран() = 0) Тогда
Предупреждение("Необходимо выбрать документ начисления!",60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
Если (ВариантФормирования = 2) и (ДокументНачисления.Выбран() = 1) Тогда
СписокСотрудников = СоздатьОбъект("СписокЗначений");
ДокументНачисления.ВыгрузитьТабличнуюЧасть(СписокСотрудников, "Сотрудник");
Иначе
СписокСотрудников = """";
КонецЕсли;
Если (ТипЗначенияСтр(Т) <> "Таблица")ИЛИ(Обновить=0) Тогда
Т = СоздатьОбъект("Таблица");
Иначе
Т.Очистить();
КонецЕсли;
Т.ИсходнаяТаблица("Таблица");
Расшифровка = СоздатьОбъект("СписокЗначений");
Расшифровка.Установить("Отчет", "РасчетноПлатежнаяВедомость");
Расшифровка.Установить("РазделительУчета", РазделительУчета);
Расшифровка.Установить("Дата1", Дата1);
Расшифровка.Установить("Дата2", Дата2);
Расшифровка.Установить("Подразделение", Подразделение);
Расшифровка.Установить("СписокСотрудников", СписокСотрудников);
Расшифровка.Установить("ПоТабельномуНомеру", ПоТабельномуНомеру);
Расшифровка.Установить("ДокументНачисления", ДокументНачисления);
Расшифровка.Установить("ВариантФормирования", ВариантФормирования);
Расшифровка.Установить("ОтображатьСоциальныйНалог", ОтображатьСоциальныйНалог);
Расшифровка.Установить("ОтображатьДниЧасыПоВидамНачислений", ОтображатьДниЧасыПоВидамНачислений);
Расшифровка.Установить("ГруппироватьПоПодразделениям", ГруппироватьПоПодразделениям);
Т.ВывестиСекцию("Обновить|Сотрудник");
Если ВариантФормирования = 1 Тогда
Расшифровка.Установить("Отчет",);
Расшифровка.Установить("РазделительУчета",);
Расшифровка.Установить("Дата1",);
Расшифровка.Установить("Дата2",);
Расшифровка.Установить("Подразделение",);
Расшифровка.Установить("СписокСотрудников",);
Расшифровка.Установить("ПоТабельномуНомеру",);
Расшифровка.Установить("ОтображатьСоциальныйНалог",);
Расшифровка.Установить("ОтображатьДниЧасыПоВидамНачислений");
Расшифровка.Установить("ГруппироватьПоПодразделениям",);
Иначе
Расшифровка.Установить("ДокументНачисления", ДокументНачисления);
КонецЕсли;
Если ГруппироватьПоПодразделениям = 1 Тогда
// создаем вспомогательную таблицу для группировки по подразделениям
тзПодразделений = СоздатьОбъект("ТаблицаЗначений");
тзПодразделений.НоваяКолонка("Подразделение");
тзПодразделений.НоваяКолонка("Начисления", "ТаблицаЗначений");
тзПодразделений.НоваяКолонка("Удержания", "ТаблицаЗначений");
тзПодразделений.НоваяКолонка("СНК", "Число", 15, 2);
тзПодразделений.НоваяКолонка("СКК", "Число", 15, 2);
тзПодразделений.НоваяКолонка("Выдано", "Число", 15, 2);
тзПодразделений.НоваяКолонка("Возврат", "Число", 15, 2);
тзПодразделений.НоваяКолонка("Дни", "Число", 15, 0);
тзПодразделений.НоваяКолонка("Часы", "Число", 15, 0);
тзПодразделений.НоваяКолонка("СоциальныйНалог", "Число", 15, 2);
тзПодразделений.НоваяКолонка("СоциальноеСтрахование", "Число", 15, 2);
КонецЕсли;
тзНачисленийУдержаний = СоздатьОбъект("ТаблицаЗначений");
тзНачисленийУдержаний.НоваяКолонка("Сотрудник");
тзНачисленийУдержаний.НоваяКолонка("Подразделение");
тзНачисленийУдержаний.НоваяКолонка("Должность");
тзНачисленийУдержаний.НоваяКолонка("ТабельныйНомер");
тзНачисленийУдержаний.НоваяКолонка("Начисления", "ТаблицаЗначений");
тзНачисленийУдержаний.НоваяКолонка("Удержания", "ТаблицаЗначений");
тзНачисленийУдержаний.НоваяКолонка("СНК", "Число", 15, 2);
тзНачисленийУдержаний.НоваяКолонка("СКК", "Число", 15, 2);
тзНачисленийУдержаний.НоваяКолонка("Выдано", "Число", 15, 2);
тзНачисленийУдержаний.НоваяКолонка("Возврат", "Число", 15, 2);
тзНачисленийУдержаний.НоваяКолонка("Дни", "Число", 10, 1);
тзНачисленийУдержаний.НоваяКолонка("Часы", "Число", 10, 0);
тзНачисленийУдержаний.НоваяКолонка("СоциальныйНалог", "Число", 15, 2);
тзНачисленийУдержаний.НоваяКолонка("СоциальноеСтрахование", "Число", 15, 2);
тзНачислений = СоздатьОбъект("ТаблицаЗначений");
тзНачислений.НоваяКолонка("Начисление");
тзНачислений.НоваяКолонка("Сумма", "Число", 15, 2);
тзНачислений.НоваяКолонка("Дни", "Число", 10, 1);
тзНачислений.НоваяКолонка("Часы", "Число", 10, 0);
тзУдержаний = СоздатьОбъект("ТаблицаЗначений");
тзУдержаний.НоваяКолонка("Счет", "Счет.Основной");
тзУдержаний.НоваяКолонка("Сумма", "Число", 15, 2);
БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги");
БухИтоги.ИспользоватьПланСчетов(ВыбранныйПланСчетов());
Если Метаданные.РазделительУчета.Выбран() = 1 Тогда
Если ПустоеЗначение(РазделительУчета) = 0 Тогда
БухИтоги.ИспользоватьРазделительУчета(РазделительУчета);
КонецЕсли;
КонецЕсли;
НачДата = ?(ВариантФормирования = 1, Дата1, ДокументНачисления);
КонДата = ?(ВариантФормирования = 1, Дата2, ДокументНачисления);
БухИтоги.ИспользоватьСубконто(ВидыСубконто.Сотрудники, СписокСотрудников);
//&&&&&&&&&&&&&&&&&&&&&&
БухИтоги.ИспользоватьСубконто(ВидыСубконто.ВидыДеятельности, ВидДеятельности);
//&&&&&&&&&&&&&&&&&&&&&&
БухИтоги.ВыполнитьЗапрос(НачДата, КонДата, "335");
БухИтоги.ВыбратьСубконто(1);
Пока БухИтоги.ПолучитьСубконто(1) = 1 Цикл
Если Подразделение.Выбран() = 1 Тогда
Если БухИтоги.Субконто(1).Подразделение.Получить(КонДата) <> Подразделение Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
тзНачисленийУдержаний.НоваяСтрока();
тзНачисленийУдержаний.Сотрудник = БухИтоги.Субконто(1);
тзНачисленийУдержаний.Подразделение = БухИтоги.Субконто(1).Подразделение.Получить(Дата2);
тзНачисленийУдержаний.Должность = БухИтоги.Субконто(1).Должность;
тзНачисленийУдержаний.ТабельныйНомер = БухИтоги.Субконто(1).Код;
// Если нужно группировать по подразделениям, то
// позиционируемся на запись в таблице Подразделений
Если ГруппироватьПоПодразделениям = 1 Тогда
ТекПодразделение = БухИтоги.Субконто(1).Подразделение.Получить(Дата2);
Стр = """";
Если ТзПодразделений.НайтиЗначение(ТекПодразделение,Стр,"Подразделение") = 0 Тогда
ТзПодразделений.НоваяСтрока();
ТзПодразделений.Подразделение = ТекПодразделение;
ТзПодразделений.Начисления = СоздатьОбъект("ТаблицаЗначений");
ТзПодразделений.Начисления.НоваяКолонка("Начисление");
ТзПодразделений.Начисления.НоваяКолонка("Сумма", "Число", 15, 2);
ТзПодразделений.Начисления.НоваяКолонка("Дни", "Число", 10, 1);
ТзПодразделений.Начисления.НоваяКолонка("Часы", "Число", 10, 0);
ТзПодразделений.Удержания = СоздатьОбъект("ТаблицаЗначений");
ТзПодразделений.Удержания.НоваяКолонка("Счет", "Счет.Основной");
ТзПодразделений.Удержания.НоваяКолонка("Сумма", "Число", 15, 2);
ТзПодразделений.СНК = 0;
ТзПодразделений.СКК = 0;
ТзПодразделений.Выдано = 0;
ТзПодразделений.Возврат = 0;
ТзПодразделений.Дни = 0;
ТзПодразделений.Часы = 0;
ТзПодразделений.СоциальныйНалог = 0;
ТзПодразделений.СоциальноеСтрахование = 0;
Иначе
ТзПодразделений.ПолучитьСтрокуПоНомеру(Стр);
КонецЕсли;
КонецЕсли;
КонецЦикла;
НачислениеОклад = глПолучитьНачисление("Оклад", 1, "Заработная плата");
НачислениеТариф = глПолучитьНачисление("Тариф", 1, "Заработная плата");
БухИтоги.ИспользоватьСубконто(ВидыСубконто.Сотрудники, СписокСотрудников);
БухИтоги.ИспользоватьСубконто(ВидыСубконто.ВидыНачисленийИПрочихДоходов);
БухИтоги.ИспользоватьСубконто(ВидыСубконто.ЕдиницыУчетаРабочегоВремени);
//&&&&&&&&&&&&&&&&&&&&&&
БухИтоги.ИспользоватьСубконто(ВидыСубконто.ВидыДеятельности, ВидДеятельности);
//&&&&&&&&&&&&&&&&&&&&&&
БухИтоги.ВыполнитьЗапрос(НачДата, КонДата, "ПНС");
БухИтоги.ВыбратьСубконто(1);
Пока БухИтоги.ПолучитьСубконто(1) = 1 Цикл
Стр = 0;
Если тзНачисленийУдержаний.НайтиЗначение(БухИтоги.Субконто(1), Стр, "Сотрудник") = 0 Тогда
Продолжить;
Иначе
тзНачисленийУдержаний.ПолучитьСтрокуПоНомеру(Стр);
КонецЕсли;
// Если нужно группировать по подразделениям, то
// позиционируемся на запись в таблице Подразделений
Если ГруппироватьПоПодразделениям = 1 Тогда
ТекПодразделение = БухИтоги.Субконто(1).Подразделение.Получить(Дата2);
Стр = """";
Если ТзПодразделений.НайтиЗначение(ТекПодразделение,Стр,"Подразделение") = 0 Тогда
Продолжить;
Иначе
ТзПодразделений.ПолучитьСтрокуПоНомеру(Стр);
КонецЕсли;
КонецЕсли;
Начисления = СоздатьОбъект("ТаблицаЗначений");
Начисления.НоваяКолонка("Начисление");
Начисления.НоваяКолонка("Сумма", "Число", 15, 2);
Начисления.НоваяКолонка("Дни", "Число", 10, 1);
Начисления.НоваяКолонка("Часы", "Число", 10, 0);
БухИтоги.ВыбратьСубконто(2);
Пока БухИтоги.ПолучитьСубконто(2) = 1 Цикл
Если БухИтоги.ДО("С") = 0 Тогда
Продолжить;
КонецЕсли;
// по дням и часам
Дни = 0;
Часы = 0;
БухИтоги.ВыбратьСубконто(3);
Пока БухИтоги.ПолучитьСубконто(3) = 1 Цикл
Если БухИтоги.Субконто(3) = Перечисление.ЕдиницыУчетаРабочегоВремени.Часы Тогда
Часы = Часы + БухИтоги.ДО("К");
Иначе
Дни = Дни + БухИтоги.ДО("К");
КонецЕсли;
КонецЦикла;
Начисления.НоваяСтрока();
Начисления.Начисление = БухИтоги.Субконто(2);
Начисления.Сумма = БухИтоги.ДО("С");
Начисления.Дни = Дни;
Начисления.Часы = Часы;
Стр = 0;
Если тзНачислений.НайтиЗначение(БухИтоги.Субконто(2), Стр, "Начисление") = 0 Тогда
тзНачислений.НоваяСтрока();
тзНачислений.Начисление = БухИтоги.Субконто(2);
тзНачислений.Сумма = 0;
тзНачислений.Дни = 0;
тзНачислений.Часы = 0;
Иначе
тзНачислений.ПолучитьСтрокуПоНомеру(Стр);
КонецЕсли;
тзНачислений.Сумма = тзНачислений.Сумма + БухИтоги.ДО("С");
тзНачислений.Дни = Дни;
тзНачислений.Часы = Часы;
// Накапливаем итоги по подразделениям
Если ГруппироватьПоПодразделениям = 1 Тогда
Стр = """";
Если тзПодразделений.Начисления.НайтиЗначение(БухИтоги.Субконто(2), Стр, "Начисление") = 0 Тогда
тзПодразделений.Начисления.НоваяСтрока();
тзПодразделений.Начисления.Начисление = БухИтоги.Субконто(2);
тзПодразделений.Начисления.Сумма = БухИтоги.ДО("С");
тзПодразделений.Начисления.Дни = Дни;
тзПодразделений.Начисления.Часы = Часы;
Иначе
тзПодразделений.Начисления.ПолучитьСтрокуПоНомеру(Стр);
тзПодразделений.Начисления.Сумма = тзПодразделений.Начисления.Сумма + БухИтоги.ДО("С");
тзПодразделений.Начисления.Дни = тзПодразделений.Начисления.Дни + Дни;
тзПодразделений.Начисления.Часы = тзПодразделений.Начисления.Часы + Часы;
КонецЕсли;
тзПодразделений.Дни = тзПодразделений.Дни + Дни;
тзПодразделений.Часы = тзПодразделений.Часы + Часы;
КонецЕсли;
КонецЦикла; // По видам начислений
тзНачисленийУдержаний.Начисления = Начисления;
тзНачисленийУдержаний.Дни = Начисления.Итог("Дни");
тзНачисленийУдержаний.Часы = Начисления.Итог("Часы");
КонецЦикла;
БухИтоги.ВключатьСубсчета(1, -1);
БухИтоги.ИспользоватьСубконто(ВидыСубконто.Сотрудники, СписокСотрудников);
//&&&&&&&&&&&&&&&&&&&&&&
БухИтоги.ИспользоватьСубконто(ВидыСубконто.ВидыДеятельности, ВидДеятельности);
//&&&&&&&&&&&&&&&&&&&&&&
СписокСчетовЗапроса = "335";
Если ОтображатьСоциальныйНалог = 1 Тогда
СписокСчетовЗапроса = СписокСчетовЗапроса + ",ПНЦ";
БухИтогиВсп = СоздатьОбъект("БухгалтерскиеИтоги");
Если Метаданные.РазделительУчета.Выбран() = 1 Тогда
Если ПустоеЗначение(РазделительУчета) = 0 Тогда
БухИтогиВсп.ИспользоватьРазделительУчета(РазделительУчета);
КонецЕсли;
КонецЕсли;
БухИтогиВсп.ВключатьСубсчета(-1, -1);
БухИтогиВсп.ИспользоватьСубконто(ВидыСубконто.Сотрудники, СписокСотрудников,1);
БухИтогиВсп.ИспользоватьСубконто(ВидыСубконто.ВидыПлатежей, Перечисление.ВидыПлатежей.НалогВзнос,2);
//&&&&&&&&&&&&&&&&&&&&&&
БухИтоги.ИспользоватьСубконто(ВидыСубконто.ВидыДеятельности, ВидДеятельности);
//&&&&&&&&&&&&&&&&&&&&&&
БухИтогиВсп.ВыполнитьЗапрос(НачДата, КонДата, "321",,,3);
БухИтогиВсп.ВыбратьСубконто();
КонецЕсли;
БухИтоги.ВыполнитьЗапрос(НачДата, КонДата, СписокСчетовЗапроса,,,3);
БухИтоги.ВыбратьСубконто();
Пока БухИтоги.ПолучитьСубконто() = 1 Цикл
Если Подразделение.Выбран() = 1 Тогда
Если БухИтоги.Субконто(1).Подразделение.Получить(КонДата) <> Подразделение Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Стр = 0;
Если тзНачисленийУдержаний.НайтиЗначение(БухИтоги.Субконто(), Стр, "Сотрудник") = 1 Тогда
тзНачисленийУдержаний.ПолучитьСтрокуПоНомеру(Стр);
Иначе
тзНачисленийУдержаний.НоваяСтрока();
тзНачисленийУдержаний.Сотрудник = БухИтоги.Субконто();
КонецЕсли;
// Если нужно группировать по подразделениям, то
// позиционируемся на запись в таблице Подразделений
Если ГруппироватьПоПодразделениям = 1 Тогда
ТекПодразделение = БухИтоги.Субконто(1).Подразделение.Получить(Дата2);
Стр = """";
Если ТзПодразделений.НайтиЗначение(ТекПодразделение,Стр,"Подразделение") = 0 Тогда
Продолжить;
Иначе
ТзПодразделений.ПолучитьСтрокуПоНомеру(Стр);
КонецЕсли;
КонецЕсли;
БухИтоги.ВыбратьСчета();
Если ОтображатьСоциальныйНалог = 1 Тогда
// сумма исчисленного социального налога
Если БухИтоги.ПолучитьСчет(,СчетПоКоду("ПНЦ.1")) = 1 Тогда
тзНачисленийУдержаний.СоциальныйНалог = БухИтоги.ДО();
// накапливаем итоги в таблице Подразделений
Если ГруппироватьПоПодразделениям = 1 Тогда
ТзПодразделений.СоциальныйНалог = ТзПодразделений.СоциальныйНалог + БухИтоги.ДО();
КонецЕсли;
КонецЕсли;
// сумма выплат в фонд обязательного социального страхования
СуммаСоцСтрах = 0;
Если БухИтогиВсп.ПолучитьСубконто(1,,БухИтоги.Субконто(1)) = 1 Тогда
СуммаСоцСтрах = БухИтогиВсп.КО();
БухИтогиВсп.ВыбратьКорСчета();
Если БухИтогиВсп.ПолучитьКорСчет(, СчетПоКоду("3398")) = 1 Тогда
СуммаСоцСтрах = СуммаСоцСтрах - БухИтогиВсп.КорКО();
КонецЕсли;
тзНачисленийУдержаний.СоциальноеСтрахование = СуммаСоцСтрах;
// накапливаем итоги в таблице Подразделений
Если ГруппироватьПоПодразделениям = 1 Тогда
ТзПодразделений.СоциальноеСтрахование = ТзПодразделений.СоциальноеСтрахование + СуммаСоцСтрах;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если БухИтоги.ПолучитьСчет(,СчетПоКоду("335")) = 1 Тогда
тзНачисленийУдержаний.СНК = БухИтоги.СНК("С");
тзНачисленийУдержаний.СКК = БухИтоги.СКК("С");
тзНачисленийУдержаний.Выдано = 0;
Удержания = СоздатьОбъект("ТаблицаЗначений");
Удержания.НоваяКолонка("Счет", "Счет.Основной");
Удержания.НоваяКолонка("Сумма", "Число", 15, 2);
БухИтоги.ВыбратьКорСчета(,1);
Пока БухИтоги.ПолучитьКорСчет() = 1 Цикл
Если БухИтоги.КорСчет.ЭтоГруппа() = 1 Тогда
Продолжить;
КонецЕсли;
Если (БухИтоги.КорСчет = СчетПоКоду("101")) или (БухИтоги.КорСчет = СчетПоКоду("103")) или (БухИтоги.КорСчет = СчетПоКоду("1021")) Тогда
тзНачисленийУдержаний.Выдано = тзНачисленийУдержаний.Выдано + БухИтоги.КорДО("С");
Продолжить;
КонецЕсли;
Удержания.НоваяСтрока();
Удержания.Счет = БухИтоги.КорСчет;
Удержания.Сумма = БухИтоги.КорДО("С");
Стр = 0;
Если тзУдержаний.НайтиЗначение(БухИтоги.КорСчет, Стр, "Счет") = 0 Тогда
тзУдержаний.НоваяСтрока();
тзУдержаний.Счет = БухИтоги.КорСчет;
тзУдержаний.Сумма = БухИтоги.КорДО("С");
Иначе
тзУдержаний.ПолучитьСтрокуПоНомеру(Стр);
тзУдержаний.Сумма = тзУдержаний.Сумма + БухИтоги.КорДО("С");
КонецЕсли;
// Накапливаем итоги по подразделениям
Если ГруппироватьПоПодразделениям = 1 Тогда
Стр = """";
Если тзПодразделений.Удержания.НайтиЗначение(БухИтоги.КорСчет, Стр, "Счет") = 0 Тогда
тзПодразделений.Удержания.НоваяСтрока();
тзПодразделений.Удержания.Счет = БухИтоги.КорСчет;
тзПодразделений.Удержания.Сумма = БухИтоги.КорДО("С");
Иначе
тзПодразделений.Удержания.ПолучитьСтрокуПоНомеру(Стр);
тзПодразделений.Удержания.Сумма = тзПодразделений.Удержания.Сумма + БухИтоги.КорДО("С");
КонецЕсли;
КонецЕсли;
КонецЦикла;
тзНачисленийУдержаний.Удержания = Удержания;
БухИтоги.ВыбратьКорСчета(,2);
Пока БухИтоги.ПолучитьКорСчет() = 1 Цикл
Если (БухИтоги.КорСчет = СчетПоКоду("101")) или (БухИтоги.КорСчет = СчетПоКоду("103")) или (БухИтоги.КорСчет = СчетПоКоду("1021")) Тогда
тзНачисленийУдержаний.Возврат = тзНачисленийУдержаний.Возврат + БухИтоги.КорКО("С");
Прервать;
КонецЕсли;
КонецЦикла;
// накапливаем итоги в таблице Подразделений
Если ГруппироватьПоПодразделениям = 1 Тогда
ТзПодразделений.СНК = ТзПодразделений.СНК + БухИтоги.СНК("С");
ТзПодразделений.СКК = ТзПодразделений.СКК + БухИтоги.СКК("С");
ТзПодразделений.Выдано = ТзПодразделений.Выдано + тзНачисленийУдержаний.Выдано;
ТзПодразделений.Возврат = ТзПодразделений.Возврат + тзНачисленийУдержаний.Возврат ;
КонецЕсли;
КонецЕсли; // Если ПолучитьСчет(, СчетПоКоду("681")) =1 Тогда
КонецЦикла;
тзНачислений.Сортировать("+Начисление");
тзУдержаний.Сортировать("+Счет");
СтрокаСортировки = """";
Если ГруппироватьПоПодразделениям = 1 Тогда
СтрокаСортировки = "+Подразделение";
КонецЕсли;
Если ПоТабельномуНомеру = 1 Тогда
СтрокаСортировки = СтрокаСортировки + ?(ПустоеЗначение(СтрокаСортировки) = 0,",+ТабельныйНомер","+ТабельныйНомер");
Иначе
СтрокаСортировки = СтрокаСортировки + ?(ПустоеЗначение(СтрокаСортировки) = 0,",+Сотрудник","+Сотрудник");
КонецЕсли;
Если ПустоеЗначение(СтрокаСортировки) = 0 Тогда
тзНачисленийУдержаний.Сортировать(СтрокаСортировки);
КонецЕсли;
Т.ВывестиСекцию("Шапка|Сотрудник");
тзНачислений.ВыбратьСтроки();
Пока тзНачислений.ПолучитьСтроку() = 1 Цикл
Представление = СокрЛП(тзНачислений.Начисление);
Т.ПрисоединитьСекцию("Шапка|" + ПолучитьИмяСекцииНачисления(тзНачислений.Дни, тзНачислений.Часы));
КонецЦикла;
Т.ПрисоединитьСекцию("Шапка|ВсегоНачислено");
тзУдержаний.ВыбратьСтроки();
Пока тзУдержаний.ПолучитьСтроку() = 1 Цикл
Представление = тзУдержаний.Счет.Наименование;
Т.ПрисоединитьСекцию("Шапка|Удержание");
КонецЦикла;
Т.ПрисоединитьСекцию("Шапка|ВсегоУдержано");
Т.ПрисоединитьСекцию("Шапка|Выплачено");
Если тзНачисленийУдержаний.Итог("Возврат") > 0 Тогда
Т.ПрисоединитьСекцию("Шапка|Возврат");
КонецЕсли;
Т.ПрисоединитьСекцию("Шапка|КВыплате");
Если ОтображатьСоциальныйНалог = 1 Тогда
Т.ПрисоединитьСекцию("Шапка|СоцНалог");
КонецЕсли;
Если ГруппироватьПоПодразделениям = 1 Тогда
ПредыдущееПодразделение = """";
КонецЕсли;
НомерСтроки = 0;
тзНачисленийУдержаний.ВыбратьСтроки();
Пока тзНачисленийУдержаний.ПолучитьСтроку() = 1 Цикл
Если ГруппироватьПоПодразделениям = 1 Тогда
// Проверим смену подразделения
Если тзНачисленийУдержаний.Подразделение <> ПредыдущееПодразделение Тогда
// Позициониируемся на итогах по подразделению
// в таблице подразделений
ПредыдущееПодразделение = тзНачисленийУдержаний.Подразделение;
НомерСтроки = 0;
Стр = """";
Если тзПодразделений.НайтиЗначение(тзНачисленийУдержаний.Подразделение,Стр,"Подразделение") = 1 Тогда
тзПодразделений.ПолучитьСтрокуПоНомеру(Стр);
ВсегоНачислено = 0;
ВсегоУдержано = 0;
Начисления = тзПодразделений.Начисления;
Удержания = тзПодразделений.Удержания;
Если ПустоеЗначение(Начисления) = 0 Тогда
ВсегоНачислено = Начисления.Итог("Сумма");
КонецЕсли;
Если ПустоеЗначение(Удержания) = 0 Тогда
ВсегоУдержано = Удержания.Итог("Сумма");
КонецЕсли;
Т.ВывестиСекцию("Подразделение|Сотрудник");
тзНачислений.ВыбратьСтроки();
Пока тзНачислений.ПолучитьСтроку() = 1 Цикл
Стр = 0; Начислено = 0; Дни = 0; Часы = 0;
Если ПустоеЗначение(Начисления) = 0 Тогда
Если Начисления.НайтиЗначение(тзНачислений.Начисление, Стр, "Начисление") = 1 Тогда
Начисления.ПолучитьСтрокуПоНомеру(Стр);
Начислено = Начисления.Сумма;
Дни = Начисления.Дни;
Часы = Начисления.Часы;
КонецЕсли;
КонецЕсли;
Т.ПрисоединитьСекцию("Подразделение|" + ПолучитьИмяСекцииНачисления(тзНачислений.Дни, тзНачислений.Часы));
КонецЦикла;
Т.ПрисоединитьСекцию("Подразделение|ВсегоНачислено");
тзУдержаний.ВыбратьСтроки();
Пока тзУдержаний.ПолучитьСтроку() = 1 Цикл
Стр = 0; Удержано = 0;
Если ПустоеЗначение(Удержания) = 0 Тогда
Если Удержания.НайтиЗначение(тзУдержаний.Счет, Стр, "Счет") = 1 Тогда
Удержания.ПолучитьСтрокуПоНомеру(Стр);
Удержано = Удержания.Сумма;
КонецЕсли;
КонецЕсли;
Т.ПрисоединитьСекцию("Подразделение|Удержание");
КонецЦикла;
Т.ПрисоединитьСекцию("Подразделение|ВсегоУдержано");
Т.ПрисоединитьСекцию("Подразделение|Выплачено");
Если тзНачисленийУдержаний.Итог("Возврат") > 0 Тогда
Т.ПрисоединитьСекцию("Подразделение|Возврат");
КонецЕсли;
Т.ПрисоединитьСекцию("Подразделение|КВыплате");
Если ОтображатьСоциальныйНалог = 1 Тогда
Т.ПрисоединитьСекцию("Подразделение|СоцНалог");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
НомерСтроки = НомерСтроки + 1;
ВсегоНачислено = 0;
ВсегоУдержано = 0;
Начисления = тзНачисленийУдержаний.Начисления;
Удержания = тзНачисленийУдержаний.Удержания;
Если ПустоеЗначение(Начисления) = 0 Тогда
ВсегоНачислено = Начисления.Итог("Сумма");
КонецЕсли;
Если ПустоеЗначение(Удержания) = 0 Тогда
ВсегоУдержано = Удержания.Итог("Сумма");
КонецЕсли;
Т.ВывестиСекцию("Строка|Сотрудник");
тзНачислений.ВыбратьСтроки();
Пока тзНачислений.ПолучитьСтроку() = 1 Цикл
Стр = 0; Начислено = 0; Дни = 0; Часы = 0;
Если ПустоеЗначение(Начисления) = 0 Тогда
Если Начисления.НайтиЗначение(тзНачислений.Начисление, Стр, "Начисление") = 1 Тогда
Начисления.ПолучитьСтрокуПоНомеру(Стр);
Начислено = Начисления.Сумма;
Дни = Начисления.Дни;
Часы = Начисления.Часы;
КонецЕсли;
КонецЕсли;
Т.ПрисоединитьСекцию("Строка|" + ПолучитьИмяСекцииНачисления(тзНачислений.Дни, тзНачислений.Часы));
КонецЦикла;
Т.ПрисоединитьСекцию("Строка|ВсегоНачислено");
тзУдержаний.ВыбратьСтроки();
Пока тзУдержаний.ПолучитьСтроку() = 1 Цикл
Стр = 0; Удержано = 0;
Если ПустоеЗначение(Удержания) = 0 Тогда
Если Удержания.НайтиЗначение(тзУдержаний.Счет, Стр, "Счет") = 1 Тогда
Удержания.ПолучитьСтрокуПоНомеру(Стр);
Удержано = Удержания.Сумма;
КонецЕсли;
КонецЕсли;
Т.ПрисоединитьСекцию("Строка|Удержание");
КонецЦикла;
Т.ПрисоединитьСекцию("Строка|ВсегоУдержано");
Т.ПрисоединитьСекцию("Строка|Выплачено");
Если тзНачисленийУдержаний.Итог("Возврат") > 0 Тогда
Т.ПрисоединитьСекцию("Строка|Возврат");
КонецЕсли;
Т.ПрисоединитьСекцию("Строка|КВыплате");
Если ОтображатьСоциальныйНалог = 1 Тогда
Т.ПрисоединитьСекцию("Строка|СоцНалог");
КонецЕсли;
КонецЦикла;
Т.ВывестиСекцию("Подвал|Сотрудник");
тзНачислений.ВыбратьСтроки();
Пока тзНачислений.ПолучитьСтроку() = 1 Цикл
Дни = тзНачислений.Дни;
Часы = тзНачислений.Часы;
Т.ПрисоединитьСекцию("Подвал|" + ПолучитьИмяСекцииНачисления(тзНачислений.Дни, тзНачислений.Часы));
КонецЦикла;
Т.ПрисоединитьСекцию("Подвал|ВсегоНачислено");
тзУдержаний.ВыбратьСтроки();
Пока тзУдержаний.ПолучитьСтроку() = 1 Цикл
Т.ПрисоединитьСекцию("Подвал|Удержание");
КонецЦикла;
Т.ПрисоединитьСекцию("Подвал|ВсегоУдержано");
Т.ПрисоединитьСекцию("Подвал|Выплачено");
Если тзНачисленийУдержаний.Итог("Возврат") > 0 Тогда
Т.ПрисоединитьСекцию("Подвал|Возврат");
КонецЕсли;
Т.ПрисоединитьСекцию("Подвал|КВыплате");
Если ОтображатьСоциальныйНалог = 1 Тогда
Т.ПрисоединитьСекцию("Подвал|СоцНалог");
КонецЕсли;
ВерхнийКолонтитул = "Расчетно-платежная ведомость "+?(ТипЗначения(РазделительУчета)=0, """", " "+РазделительУчета);
НижнийКолонтитул = "Отчет сформирован "+ТекущаяДата()+" "+ТекущееВремя()+?(ПустоеЗначение(ИмяПользователя())=0," Пользователь: "+ИмяПользователя(),"""");
Т.ТолькоПросмотр(1);
Т.Опции(0, 0, 11, 4, "ОпцииПечатиРасчетноПлатежнаяВедомость", "РасчетноПлатежнаяВедомость");
Т.ОбластьПечати(2);
Т.ПараметрыСтраницы(1,,,,,,,,, 0);
Т.Показать(ВерхнийКолонтитул, """");
Если (ФлагЗакрытияФормы = 1) Или (Обновить = 2) Тогда
СтрокаДействийФормы = "#Закрыть";
КонецЕсли;
КонецПроцедуры
//-----------------------------------------------
Процедура УправлениеРУ(ТипУправления="""")
Если ТипУправления = """" Тогда
Если ПустоеЗначение(РазделительУчета) = 1 Тогда
Форма.РазделительУчета.Доступность(0);
ПоВсемРУ = 1;
Иначе
ПоВсемРУ = 0;
КонецЕсли;
ИначеЕсли ТипУправления = "ПоВсемРУ" Тогда
Если ПоВсемРУ = 1 Тогда
РазделительУчета = 0;
Форма.РазделительУчета.Доступность(0);
Иначе
Форма.РазделительУчета.Доступность(1);
КонецЕсли;
КонецЕсли;
УстановитьВладельца(РазделительУчета, Подразделение);
КонецПроцедуры
//-----------------------------------------------
Процедура ПриОткрытии()
глДоступностьОрганизацииВОтчете(Контекст);
ВидДеятельности=Константа.Бюджет;
Если глФлагРасшифровки = 1 Тогда
Закрыть = 1;
Обновить = глОбновить;
РазделительУчета = глРасшифровка.Получить("РазделительУчета");
ВариантФормирования = глРасшифровка.Получить("ВариантФормирования");
Дата1 = глРасшифровка.Получить("Дата1");
Дата2 = глРасшифровка.Получить("Дата2");
Подразделение = глРасшифровка.Получить("Подразделение");
ДокументНачисления = глРасшифровка.Получить("ДокументНачисления");
СписокСотрудников = глРасшифровка.Получить("СписокСотрудников");
ПоТабельномуНомеру = глРасшифровка.Получить("ПоТабельномуНомеру");
ОтображатьСоциальныйНалог = глРасшифровка.Получить("ОтображатьСоциальныйНалог");
ОтображатьДниЧасыПоВидамНачислений = глРасшифровка.Получить("ОтображатьДниЧасыПоВидамНачислений");
ГруппироватьПоПодразделениям = глРасшифровка.Получить("ГруппироватьПоПодразделениям");
Если Обновить <> 0 Тогда
Т = глТаблица;
КонецЕсли;
Если Обновить <> 2 Тогда
Сформировать();
СтатусВозврата(0);
Возврат;
КонецЕсли;
Иначе
ВариантФормирования = 1;
ДокументНачисления = """";
Закрыть = 0;
Обновить = 0;
Дата1 = НачалоПериодаБИ();
Дата2 = КонецПериодаБИ();
КонецЕсли;
ПриВыбореВарианта();
УправлениеРУ();
КонецПроцедуры"