Поиск  Пользователи  Правила  Войти
RSS
РасчетноПлатежнаяВедомость
 
"Нужна РасчетноПлатежнаяВедомость по видам деятельности
Добавил строку БухИтоги.ИспользоватьСубконто(ВидыСубконто.ВидыДеятельности, ВидДеятельности);
Ошибка число фильтров субконто превысило допустимое значение


Перем Т;
Перем Обновить;
Перем Расшифровка;
Перем Закрыть;  

Перем СписокСотрудников;

//-----------------------------------------------
Процедура УстановитьВладельца(РУ, Объект)
Назначить = 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 = КонецПериодаБИ();
КонецЕсли;    

ПриВыбореВарианта();
УправлениеРУ();

КонецПроцедуры"
 
""Многа букав..." но осилил
смотрите внимательно, у вас вставка
> БухИтоги.ИспользоватьСубконто(ВидыСубконто.ВидыДеятельности, ВидДеятельности);
сделана много раз (четыре), при этом в одном месте (в последнем) она сделана неверно, надо чтобы было написано:
БухИтогиВсп.ИспользоватьСубконто(ВидыСубконто.ВидыДеятельности, ВидДеятельности);

а иначе у вас получилось, что примерение метода ИспользоватьСубконто() для вида субконто ВидыСубконто.ВидыДеятельности получилось дважды перед выполнением запроса в объекте БухИтоги

"
Читают тему

Читайте нас: