Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
23 ноя 2024, 04:22

Отчет в разрезе подразделений

Автор Sheriff, 12 июл 2017, 07:19

0 Пользователей и 1 гость просматривают эту тему.

Sheriff

Всем привет!
В общем, проблема такая:
Есть в организации Подразделение - назовём его "УиОГП", у этого подразделения, есть еще подразделения, назовём их "УиОГП" и "УиОГП сезонные". Так вот, в отчете, я когда выбираю подразделение "УиОГП", то у меня не выводятся данные, а когда выбираю каждое подразделение по отдельности, то выводит данные.
Как сделать в отчете так, чтобы он мне выводил данные по "УиОГП" и "УиОГП сезонные", когда выбираю "УиОГП" подразделение.

Golickoff

Там откуда вы берёте данные нет записей по подразделению "УиОГП". Если при его выборе вы хотите видеть данные дочерних подразделений, в запросе нужно добавить условие отбора по подразделению у которого родитель = "УиОГП".
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Sheriff

Цитата: Golickoff от 12 июл 2017, 07:25
Там откуда вы берёте данные нет записей по подразделению "УиОГП". Если при его выборе вы хотите видеть данные дочерних подразделений, в запросе нужно добавить условие отбора по подразделению у которого родитель = "УиОГП".
Процедура Отчет(ТабДок, Дата1, Дата2, СубконтоДт1, СчетДт) Экспорт
НП = Новый НастройкаПериода;

ТЗ = Новый ТаблицаЗначений;
тз.Колонки.Добавить("Сотрудник");
тз.Колонки.Добавить("Должность");
тз.Колонки.Добавить("СЗ");
тз.Колонки.Добавить("ЗП");
тз.Колонки.Добавить("СН");
тз.Колонки.Добавить("СО");
////
тз.Колонки.Добавить("ПодразделениеОрганизации");
    ////

Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.ФизЛицо,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетДт,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетКт,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Сумма
|ИЗ
| Документ.ОтражениеЗарплатыВРеглУчете.ОтражениеВУчете КАК ОтражениеЗарплатыВРеглУчетеОтражениеВУчете
|ГДЕ
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетДт = &СчетДт
| И ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1 = &СубконтоДт1
| И ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2";

Запрос.УстановитьПараметр("Дата1", Дата1);
Запрос.УстановитьПараметр("Дата2", конецдня(Дата2));
Запрос.УстановитьПараметр("СубконтоДт1", СубконтоДт1);
Запрос.УстановитьПараметр("СчетДт", СчетДт);

Результат = Запрос.Выполнить();

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
ОбластьСЗ = Макет.ПолучитьОбласть("СЗ");

ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();

ВыборкаДетальныеЗаписи = Результат.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
///  находим  должность

Запрос11 = Новый Запрос;
Запрос11.Текст =
"ВЫБРАТЬ
| РаботникиОрганизацийСрезПоследних.Должность,
| РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
|ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(
| &Дата2,
| ПодразделениеОрганизации = &ПодразделениеОрганизации
| И Физлицо = &Физлицо) КАК РаботникиОрганизацийСрезПоследних";

Запрос11.УстановитьПараметр("Дата2", конецдня(Дата2));
Запрос11.УстановитьПараметр("ПодразделениеОрганизации", ВыборкаДетальныеЗаписи.СубконтоДт1);        ////ПодразделениеОрганизации);
Запрос11.УстановитьПараметр("Физлицо", ВыборкаДетальныеЗаписи.Физлицо);

Результат11 = Запрос11.Выполнить();

ВыборкаДетальныеЗаписи11 = Результат11.Выбрать();

Пока ВыборкаДетальныеЗаписи11.Следующий() Цикл
Должность = ВыборкаДетальныеЗаписи11.Должность ;
ПодразделениеОрганизации = ВыборкаДетальныеЗаписи11.ПодразделениеОрганизации;
КонецЦикла;


/////////// находим статью затрат
СЗ = "";
Запрос22 = Новый Запрос;
Запрос22.Текст =
"ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Значение
|ИЗ
| РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Свойство = &Свойство
| И ЗначенияСвойствОбъектов.Объект = &Объект";

Запрос22.УстановитьПараметр("Объект", Должность);
Запрос22.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("СтатьяЗатрат"));////  Свойство);

Результат22 = Запрос22.Выполнить();

ВыборкаДетальныеЗаписи22 = Результат22.Выбрать();

Пока ВыборкаДетальныеЗаписи22.Следующий() Цикл
СЗ =  ВыборкаДетальныеЗаписи22.Значение;
КонецЦикла;

Таб = тз.Добавить();
Таб.Сотрудник =   ВыборкаДетальныеЗаписи.ФизЛицо;
Таб.СЗ=  СЗ;
Таб.Должность=Должность;
///
Таб.ПодразделениеОрганизации=ПодразделениеОрганизации;
///
если ВыборкаДетальныеЗаписи.СчетКт   = ПланыСчетов.Типовой.КраткосрочнаяЗадолженностьПоОплатеТруда тогда     ///3350
Таб.ЗП=   ВыборкаДетальныеЗаписи.Сумма ;
иначеесли ВыборкаДетальныеЗаписи.СчетКт   = ПланыСчетов.Типовой.СоциальныйНалог тогда     //3150
Таб.СН= ВыборкаДетальныеЗаписи.Сумма;
иначеесли ВыборкаДетальныеЗаписи.СчетКт   = ПланыСчетов.Типовой.ОбязательстваПоСоциальномуСтрахованию тогда    //3210
Таб.СО= ВыборкаДетальныеЗаписи.Сумма;
конецесли;

КонецЦикла;
ЗП_=0;СН_=0; СО_=0;
тз.Свернуть("СЗ,Сотрудник,Должность,ПодразделениеОрганизации","ЗП,СН,СО");
ТзСЗ =  тз.Скопировать();
ТзСЗ.Свернуть("СЗ","ЗП,СН,СО");
Для каждого стрСЗ Из ТзСЗ  Цикл
ОбластьСЗ.Параметры.ЗП= стрСЗ.ЗП;
ОбластьСЗ.Параметры.СН= стрСЗ.СН;
ОбластьСЗ.Параметры.СО= стрСЗ.СО;
ОбластьСЗ.Параметры.СЗ= стрСЗ.СЗ;     
ТабДок.Вывести(ОбластьСЗ);
ЗП_ = ЗП_+ стрСЗ.ЗП;
СН_ = СН_+ стрСЗ.СН;
СО_ = СО_+ стрСЗ.СО;
если Кратко = Истина тогда
иначе
Для каждого стр Из тз  Цикл
если стр.СЗ =стрСЗ.СЗ тогда
ОбластьДетальныхЗаписей.Параметры.ЗП= стр.ЗП;
ОбластьДетальныхЗаписей.Параметры.СН= стр.СН;
ОбластьДетальныхЗаписей.Параметры.СО= стр.СО;
ОбластьДетальныхЗаписей.Параметры.СЗ= стр.СЗ;     
ОбластьДетальныхЗаписей.Параметры.Должность = стр.Должность;
///
ОбластьДетальныхЗаписей.Параметры.ПодразделениеОрганизации = стр.ПодразделениеОрганизации;
///
ОбластьДетальныхЗаписей.Параметры.Сотрудник = стр.Сотрудник  ;
ТабДок.Вывести(ОбластьДетальныхЗаписей);
конецесли;
КонецЦикла;
конецесли;
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ОбластьПодвал.Параметры.ЗП_=ЗП_;
ОбластьПодвал.Параметры.СН_=СН_;
ОбластьПодвал.Параметры.СО_=СО_;

ТабДок.Вывести(ОбластьПодвал);
КонецПроцедуры

Подскажите пожалуйста, куда и что тут нужно добавить, чтобы выходили данные по дочерним подразделениям.

Golickoff

На форме отчёта между полем флажка "Кратко" и полем ввода "Субконто дт1" добавьте поле флажка "Включать дочерние".
Процедура Отчет(ТабДок, Дата1, Дата2, СубконтоДт1, СчетДт) Экспорт
НП = Новый НастройкаПериода;
   
    ТЗ = Новый ТаблицаЗначений;
    тз.Колонки.Добавить("Сотрудник");
    тз.Колонки.Добавить("Должность");
    тз.Колонки.Добавить("СЗ");
    тз.Колонки.Добавить("ЗП");
    тз.Колонки.Добавить("СН");
    тз.Колонки.Добавить("СО");
    ////
    тз.Колонки.Добавить("ПодразделениеОрганизации");
    ////
   
    Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.ФизЛицо,
    |    ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетДт,
    |    ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1,
    |    ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетКт,
    |    ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Сумма
    |ИЗ
    |    Документ.ОтражениеЗарплатыВРеглУчете.ОтражениеВУчете КАК ОтражениеЗарплатыВРеглУчетеОтражениеВУчете
    |ГДЕ
    |    ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетДт = &СчетДт
    |    И ((НЕ &ВключатьДочерние И ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1 = &СубконтоДт1) ИЛИ (&ВключатьДочерние И ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1 В ИЕРАРХИИ &СубконтоДт1))
    |    И ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2";
   
    Запрос.УстановитьПараметр("Дата1", Дата1);
    Запрос.УстановитьПараметр("Дата2", конецдня(Дата2));
    Запрос.УстановитьПараметр("ВключатьДочерние", ВключатьДочерние);
    Запрос.УстановитьПараметр("СубконтоДт1", СубконтоДт1);
    Запрос.УстановитьПараметр("СчетДт", СчетДт);
   
    Результат = Запрос.Выполнить();
   
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ОбластьСЗ = Макет.ПолучитьОбласть("СЗ");
       
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
   
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
   
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ///  находим  должность
       
        Запрос11 = Новый Запрос;
        Запрос11.Текст =
        "ВЫБРАТЬ
        |    РаботникиОрганизацийСрезПоследних.Должность,
        |    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
        |ИЗ
        |    РегистрСведений.РаботникиОрганизаций.СрезПоследних(
        |            &Дата2,
        |            ((НЕ &ВключатьДочерние И ПодразделениеОрганизации = &ПодразделениеОрганизации) ИЛИ (&ВключатьДочерние И ПодразделениеОрганизации В ИЕРАРХИИ &ПодразделениеОрганизации))
        |                И Физлицо = &Физлицо) КАК РаботникиОрганизацийСрезПоследних";
       
        Запрос11.УстановитьПараметр("Дата2", конецдня(Дата2));
        Запрос11.УстановитьПараметр("ВключатьДочерние", ВключатьДочерние);
        Запрос11.УстановитьПараметр("ПодразделениеОрганизации", ВыборкаДетальныеЗаписи.СубконтоДт1);        ////ПодразделениеОрганизации);
        Запрос11.УстановитьПараметр("Физлицо", ВыборкаДетальныеЗаписи.Физлицо);
       
        Результат11 = Запрос11.Выполнить();
       
        ВыборкаДетальныеЗаписи11 = Результат11.Выбрать();
       
        Пока ВыборкаДетальныеЗаписи11.Следующий() Цикл
            Должность = ВыборкаДетальныеЗаписи11.Должность ;
            ПодразделениеОрганизации = ВыборкаДетальныеЗаписи11.ПодразделениеОрганизации;
        КонецЦикла;
       
       
        /////////// находим статью затрат
        СЗ = "";   
        Запрос22 = Новый Запрос;
        Запрос22.Текст =
        "ВЫБРАТЬ
        |    ЗначенияСвойствОбъектов.Значение
        |ИЗ
        |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        |ГДЕ
        |    ЗначенияСвойствОбъектов.Свойство = &Свойство
        |    И ЗначенияСвойствОбъектов.Объект = &Объект";
       
        Запрос22.УстановитьПараметр("Объект", Должность);
        Запрос22.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("СтатьяЗатрат"));////  Свойство);
       
        Результат22 = Запрос22.Выполнить();
       
        ВыборкаДетальныеЗаписи22 = Результат22.Выбрать();
       
        Пока ВыборкаДетальныеЗаписи22.Следующий() Цикл
            СЗ =  ВыборкаДетальныеЗаписи22.Значение;
        КонецЦикла;
       
        Таб = тз.Добавить();
        Таб.Сотрудник     =   ВыборкаДетальныеЗаписи.ФизЛицо;
        Таб.СЗ=  СЗ;
        Таб.Должность=Должность;
        ///
        Таб.ПодразделениеОрганизации=ПодразделениеОрганизации;
        ///
        если ВыборкаДетальныеЗаписи.СчетКт   = ПланыСчетов.Типовой.КраткосрочнаяЗадолженностьПоОплатеТруда тогда     ///3350
            Таб.ЗП=   ВыборкаДетальныеЗаписи.Сумма ;
        иначеесли     ВыборкаДетальныеЗаписи.СчетКт   = ПланыСчетов.Типовой.СоциальныйНалог тогда     //3150
            Таб.СН= ВыборкаДетальныеЗаписи.Сумма;
        иначеесли     ВыборкаДетальныеЗаписи.СчетКт   = ПланыСчетов.Типовой.ОбязательстваПоСоциальномуСтрахованию тогда    //3210
            Таб.СО= ВыборкаДетальныеЗаписи.Сумма;
        конецесли;       
       
    КонецЦикла;
    ЗП_=0;СН_=0; СО_=0;
    тз.Свернуть("СЗ,Сотрудник,Должность,ПодразделениеОрганизации","ЗП,СН,СО");
    ТзСЗ =  тз.Скопировать();
    ТзСЗ.Свернуть("СЗ","ЗП,СН,СО");
    Для каждого стрСЗ Из ТзСЗ  Цикл
        ОбластьСЗ.Параметры.ЗП= стрСЗ.ЗП;
        ОбластьСЗ.Параметры.СН= стрСЗ.СН;
        ОбластьСЗ.Параметры.СО= стрСЗ.СО;
        ОбластьСЗ.Параметры.СЗ= стрСЗ.СЗ;     
        ТабДок.Вывести(ОбластьСЗ);
        ЗП_ = ЗП_+ стрСЗ.ЗП;
        СН_ = СН_+ стрСЗ.СН;
        СО_ = СО_+ стрСЗ.СО;
        если Кратко = Истина тогда
        иначе   
            Для каждого стр Из тз  Цикл
                если стр.СЗ =стрСЗ.СЗ тогда
                    ОбластьДетальныхЗаписей.Параметры.ЗП= стр.ЗП;
                    ОбластьДетальныхЗаписей.Параметры.СН= стр.СН;
                    ОбластьДетальныхЗаписей.Параметры.СО= стр.СО;
                    ОбластьДетальныхЗаписей.Параметры.СЗ= стр.СЗ;     
                    ОбластьДетальныхЗаписей.Параметры.Должность = стр.Должность;
                    ///
                    ОбластьДетальныхЗаписей.Параметры.ПодразделениеОрганизации = стр.ПодразделениеОрганизации;
                    ///
                    ОбластьДетальныхЗаписей.Параметры.Сотрудник = стр.Сотрудник  ;
                    ТабДок.Вывести(ОбластьДетальныхЗаписей);
                конецесли;
            КонецЦикла;
        конецесли;
    КонецЦикла;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ОбластьПодвал.Параметры.ЗП_=ЗП_;
    ОбластьПодвал.Параметры.СН_=СН_;
    ОбластьПодвал.Параметры.СО_=СО_;
   
    ТабДок.Вывести(ОбластьПодвал);
КонецПроцедуры
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Sheriff

Цитата: Golickoff от 12 июл 2017, 08:11
На форме отчёта между полем флажка "Кратко" и полем ввода "Субконто дт1" добавьте поле флажка "Включать дочерние".
Процедура Отчет(ТабДок, Дата1, Дата2, СубконтоДт1, СчетДт) Экспорт
НП = Новый НастройкаПериода;
   
    ТЗ = Новый ТаблицаЗначений;
    тз.Колонки.Добавить("Сотрудник");
    тз.Колонки.Добавить("Должность");
    тз.Колонки.Добавить("СЗ");
    тз.Колонки.Добавить("ЗП");
    тз.Колонки.Добавить("СН");
    тз.Колонки.Добавить("СО");
    ////
    тз.Колонки.Добавить("ПодразделениеОрганизации");
    ////
   
    Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.ФизЛицо,
    |    ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетДт,
    |    ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1,
    |    ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетКт,
    |    ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Сумма
    |ИЗ
    |    Документ.ОтражениеЗарплатыВРеглУчете.ОтражениеВУчете КАК ОтражениеЗарплатыВРеглУчетеОтражениеВУчете
    |ГДЕ
    |    ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетДт = &СчетДт
    |    И ((НЕ &ВключатьДочерние И ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1 = &СубконтоДт1) ИЛИ (&ВключатьДочерние И ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1 В ИЕРАРХИИ &СубконтоДт1))
    |    И ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2";
   
    Запрос.УстановитьПараметр("Дата1", Дата1);
    Запрос.УстановитьПараметр("Дата2", конецдня(Дата2));
    Запрос.УстановитьПараметр("ВключатьДочерние", ВключатьДочерние);
    Запрос.УстановитьПараметр("СубконтоДт1", СубконтоДт1);
    Запрос.УстановитьПараметр("СчетДт", СчетДт);
   
    Результат = Запрос.Выполнить();
   
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ОбластьСЗ = Макет.ПолучитьОбласть("СЗ");
       
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
   
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
   
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ///  находим  должность
       
        Запрос11 = Новый Запрос;
        Запрос11.Текст =
        "ВЫБРАТЬ
        |    РаботникиОрганизацийСрезПоследних.Должность,
        |    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
        |ИЗ
        |    РегистрСведений.РаботникиОрганизаций.СрезПоследних(
        |            &Дата2,
        |            ((НЕ &ВключатьДочерние И ПодразделениеОрганизации = &ПодразделениеОрганизации) ИЛИ (&ВключатьДочерние И ПодразделениеОрганизации В ИЕРАРХИИ &ПодразделениеОрганизации))
        |                И Физлицо = &Физлицо) КАК РаботникиОрганизацийСрезПоследних";
       
        Запрос11.УстановитьПараметр("Дата2", конецдня(Дата2));
        Запрос11.УстановитьПараметр("ВключатьДочерние", ВключатьДочерние);
        Запрос11.УстановитьПараметр("ПодразделениеОрганизации", ВыборкаДетальныеЗаписи.СубконтоДт1);        ////ПодразделениеОрганизации);
        Запрос11.УстановитьПараметр("Физлицо", ВыборкаДетальныеЗаписи.Физлицо);
       
        Результат11 = Запрос11.Выполнить();
       
        ВыборкаДетальныеЗаписи11 = Результат11.Выбрать();
       
        Пока ВыборкаДетальныеЗаписи11.Следующий() Цикл
            Должность = ВыборкаДетальныеЗаписи11.Должность ;
            ПодразделениеОрганизации = ВыборкаДетальныеЗаписи11.ПодразделениеОрганизации;
        КонецЦикла;
       
       
        /////////// находим статью затрат
        СЗ = "";   
        Запрос22 = Новый Запрос;
        Запрос22.Текст =
        "ВЫБРАТЬ
        |    ЗначенияСвойствОбъектов.Значение
        |ИЗ
        |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        |ГДЕ
        |    ЗначенияСвойствОбъектов.Свойство = &Свойство
        |    И ЗначенияСвойствОбъектов.Объект = &Объект";
       
        Запрос22.УстановитьПараметр("Объект", Должность);
        Запрос22.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("СтатьяЗатрат"));////  Свойство);
       
        Результат22 = Запрос22.Выполнить();
       
        ВыборкаДетальныеЗаписи22 = Результат22.Выбрать();
       
        Пока ВыборкаДетальныеЗаписи22.Следующий() Цикл
            СЗ =  ВыборкаДетальныеЗаписи22.Значение;
        КонецЦикла;
       
        Таб = тз.Добавить();
        Таб.Сотрудник     =   ВыборкаДетальныеЗаписи.ФизЛицо;
        Таб.СЗ=  СЗ;
        Таб.Должность=Должность;
        ///
        Таб.ПодразделениеОрганизации=ПодразделениеОрганизации;
        ///
        если ВыборкаДетальныеЗаписи.СчетКт   = ПланыСчетов.Типовой.КраткосрочнаяЗадолженностьПоОплатеТруда тогда     ///3350
            Таб.ЗП=   ВыборкаДетальныеЗаписи.Сумма ;
        иначеесли     ВыборкаДетальныеЗаписи.СчетКт   = ПланыСчетов.Типовой.СоциальныйНалог тогда     //3150
            Таб.СН= ВыборкаДетальныеЗаписи.Сумма;
        иначеесли     ВыборкаДетальныеЗаписи.СчетКт   = ПланыСчетов.Типовой.ОбязательстваПоСоциальномуСтрахованию тогда    //3210
            Таб.СО= ВыборкаДетальныеЗаписи.Сумма;
        конецесли;       
       
    КонецЦикла;
    ЗП_=0;СН_=0; СО_=0;
    тз.Свернуть("СЗ,Сотрудник,Должность,ПодразделениеОрганизации","ЗП,СН,СО");
    ТзСЗ =  тз.Скопировать();
    ТзСЗ.Свернуть("СЗ","ЗП,СН,СО");
    Для каждого стрСЗ Из ТзСЗ  Цикл
        ОбластьСЗ.Параметры.ЗП= стрСЗ.ЗП;
        ОбластьСЗ.Параметры.СН= стрСЗ.СН;
        ОбластьСЗ.Параметры.СО= стрСЗ.СО;
        ОбластьСЗ.Параметры.СЗ= стрСЗ.СЗ;     
        ТабДок.Вывести(ОбластьСЗ);
        ЗП_ = ЗП_+ стрСЗ.ЗП;
        СН_ = СН_+ стрСЗ.СН;
        СО_ = СО_+ стрСЗ.СО;
        если Кратко = Истина тогда
        иначе   
            Для каждого стр Из тз  Цикл
                если стр.СЗ =стрСЗ.СЗ тогда
                    ОбластьДетальныхЗаписей.Параметры.ЗП= стр.ЗП;
                    ОбластьДетальныхЗаписей.Параметры.СН= стр.СН;
                    ОбластьДетальныхЗаписей.Параметры.СО= стр.СО;
                    ОбластьДетальныхЗаписей.Параметры.СЗ= стр.СЗ;     
                    ОбластьДетальныхЗаписей.Параметры.Должность = стр.Должность;
                    ///
                    ОбластьДетальныхЗаписей.Параметры.ПодразделениеОрганизации = стр.ПодразделениеОрганизации;
                    ///
                    ОбластьДетальныхЗаписей.Параметры.Сотрудник = стр.Сотрудник  ;
                    ТабДок.Вывести(ОбластьДетальныхЗаписей);
                конецесли;
            КонецЦикла;
        конецесли;
    КонецЦикла;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ОбластьПодвал.Параметры.ЗП_=ЗП_;
    ОбластьПодвал.Параметры.СН_=СН_;
    ОбластьПодвал.Параметры.СО_=СО_;
   
    ТабДок.Вывести(ОбластьПодвал);
КонецПроцедуры

Спасибо, помогло!)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск