Имя: Пароль:
1C
1С v8
ЗиУП. Расчетные листки.
0 егаис
 
23.12.13
13:38
Доброго дня.
Народ, нужен совет, необходимо из документа Начисление з/п печатать расчетные листки по всем сотрудникам из этого документа.
Ну или, как вариант, передать список сотрудников из документа в штатный отчет "Расчетные листки". Подскажите, кто сталкивался, как передать список сотрудников в отчет?
1 егаис
 
23.12.13
13:42
я так понимаю нужно передать параметры компоновки, буду благодарен примеру
2 егаис
 
23.12.13
14:09
Процедура ДействияФормыРасчетныеЛистки(Кнопка)
    
    ОтчетРС = Отчеты.РасчетныеЛисткиОрганизаций.Создать();
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    ВложенныйЗапрос.Сотрудник
        |ИЗ
        |    (ВЫБРАТЬ
        |        НачислениеЗарплатыРаботникамОрганизацийНачисления.Сотрудник КАК Сотрудник
        |    ИЗ
        |        Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК НачислениеЗарплатыРаботникамОрганизацийНачисления
        |    ГДЕ
        |        НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка = &Ссылка
        |    
        |    ОБЪЕДИНИТЬ
        |    
        |    ВЫБРАТЬ
        |        НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Сотрудник
        |    ИЗ
        |        Документ.НачислениеЗарплатыРаботникамОрганизаций.ДополнительныеНачисления КАК НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления
        |    ГДЕ
        |        НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Ссылка = &Ссылка
        |    
        |    ОБЪЕДИНИТЬ
        |    
        |    ВЫБРАТЬ
        |        НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.Сотрудник
        |    ИЗ
        |        Документ.НачислениеЗарплатыРаботникамОрганизаций.ДоговорыНаВыполнениеРабот КАК НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот
        |    ГДЕ
        |        НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.Ссылка = &Ссылка) КАК ВложенныйЗапрос";

    Запрос.УстановитьПараметр("Ссылка", Ссылка);

    Результат = Запрос.Выполнить().Выгрузить();
    
    СписокСотрудников = Новый СписокЗначений;
    СписокСотрудников.ЗагрузитьЗначения(Результат.ВыгрузитьКолонку("Сотрудник"));
    
    СотрудникОтбор = Новый Структура("ЛевоеЗначение, ВидСравнения, ПравоеЗначение");
    СотрудникОтбор.Вставить("ЛевоеЗначение", "Сотрудник");
    СотрудникОтбор.Вставить("ВидСравнения", ВидСравненияКомпоновкиДанных.ВСписке);
    СотрудникОтбор.Вставить("ПравоеЗначение",СписокСотрудников);
    
    МассивОтборовСотрудников = Новый Массив;
    МассивОтборовСотрудников.Добавить(СотрудникОтбор);
    
    МассивОтборовПериода = Новый Массив;
    МассивОтборовПериода.Добавить(Новый Структура("Параметр,Значение","НачалоПериода",ПериодНачисленияДатаНачала));
    МассивОтборовПериода.Добавить(Новый Структура("Параметр,Значение","КонецПериода",ПериодНачисленияДатаОкончания));
    
    ОтчетРС.НастроитьОтборыПарметры(МассивОтборовСотрудников,МассивОтборовПериода);
    
    ОтчетРС.ПолучитьФорму("ФормаОтчета").Открыть();
    
КонецПроцедуры
3 егаис
 
23.12.13
14:09
почти нетленка ))
Не выходит каменный цветочек, что упустил?
4 егаис
 
23.12.13
14:12
Массив строится верно, но в отчет данные не передаются ( Открывается с сохраненными значениями (
5 егаис
 
23.12.13
14:21
хелп
6 Аннушка
 
23.12.13
14:25
Посмотри, как сделано в модуле отчёта "УнифицированнаяФормаТ54а" в конце процедуры "СформироватьМакет", там как раз открываются расчётные листки.
7 Dmitry77
 
23.12.13
14:27
Добавить кнопку по которой будет открываться отчет "расчетный листок"... Лутше всего сделать это как внешнюю печатную форму...
8 егаис
 
23.12.13
14:36
ееессс
(6) огромное спсибо за наводку )
Знаю что кому-то пригодится )

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    ВложенныйЗапрос.Сотрудник
        |ИЗ
        |    (ВЫБРАТЬ
        |        НачислениеЗарплатыРаботникамОрганизацийНачисления.Сотрудник.Физлицо КАК Сотрудник
        |    ИЗ
        |        Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК НачислениеЗарплатыРаботникамОрганизацийНачисления
        |    ГДЕ
        |        НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка = &Ссылка
        |    
        |    ОБЪЕДИНИТЬ
        |    
        |    ВЫБРАТЬ
        |        НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Сотрудник.Физлицо
        |    ИЗ
        |        Документ.НачислениеЗарплатыРаботникамОрганизаций.ДополнительныеНачисления КАК НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления
        |    ГДЕ
        |        НачислениеЗарплатыРаботникамОрганизацийДополнительныеНачисления.Ссылка = &Ссылка
        |    
        |    ОБЪЕДИНИТЬ
        |    
        |    ВЫБРАТЬ
        |        НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.Сотрудник.Физлицо
        |    ИЗ
        |        Документ.НачислениеЗарплатыРаботникамОрганизаций.ДоговорыНаВыполнениеРабот КАК НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот
        |    ГДЕ
        |        НачислениеЗарплатыРаботникамОрганизацийДоговорыНаВыполнениеРабот.Ссылка = &Ссылка) КАК ВложенныйЗапрос";

    Запрос.УстановитьПараметр("Ссылка", Ссылка);

    Результат = Запрос.Выполнить().Выгрузить();
    
    СписокСотрудников = Новый СписокЗначений;
    СписокСотрудников.ЗагрузитьЗначения(Результат.ВыгрузитьКолонку("Сотрудник"));
    
    ОтчетРасчетныеЛистки = Отчеты.РасчетныеЛисткиОрганизаций.Создать();
    ТиповыеОтчеты.ДобавитьОтбор(ОтчетРасчетныеЛистки.КомпоновщикНастроек, "ФизЛицо",     СписокСотрудников, ВидСравненияКомпоновкиДанных.ВСписке);
    
    ТиповыеОтчеты.УстановитьПараметр(ОтчетРасчетныеЛистки.КомпоновщикНастроек, "НачалоПериода", ПериодНачисленияДатаНачала);
    ТиповыеОтчеты.УстановитьПараметр(ОтчетРасчетныеЛистки.КомпоновщикНастроек, "КонецПериода",  ПериодНачисленияДатаОкончания);
    ТиповыеОтчеты.УстановитьПараметр(ОтчетРасчетныеЛистки.КомпоновщикНастроек, "Группировать",  ложь);
    ТиповыеОтчеты.УстановитьПараметр(ОтчетРасчетныеЛистки.КомпоновщикНастроек, "ВидРасчетногоЛистка",  "Подробно");
    
    ЭлементПорядка = ОтчетРасчетныеЛистки.КомпоновщикНастроек.Настройки.Порядок.Элементы.Вставить(0, Тип("ЭлементПорядкаКомпоновкиДанных"));
    ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("ПериодРегистрации");
    ЭлементПорядка.Использование = Истина;

    РасчетныеЛисткиОрганизацийОтчет = Новый ТабличныйДокумент;
    ОтчетРасчетныеЛистки.СформироватьОтчет(РасчетныеЛисткиОрганизацийОтчет);
    РасчетныеЛисткиОрганизацийОтчет.Показать();
9 Аннушка
 
23.12.13
14:40
Ну я бы ещё период передала по началу концу месяца регистрации, а не месяца начисления, а то ведь в перерасчётах откроются совсем не те листки, которые нужны. А ещё может быть случай, когда в таблицах с начислениями записей нет (например, весь месяц сотрудник проболел или пробыл в отпуске), поэтому надо людей из всех табличных частей вытянуть, а не только из начислений.
10 егаис
 
23.12.13
14:44
хм, а если форму не печатать, а вывести, то данные не передаются ((
11 Пеппи
 
23.12.13
14:50
(7) +100

Открыть отчет , передав в него в параметр список сотрудников из документа.
12 егаис
 
23.12.13
14:52
(11) вы вообще в теме? писать свой отчет? Зачем?
Вопрос стоял в передаче параметров в СКД типового отчета
13 Аннушка
 
23.12.13
15:02
А может лучше нажать на надпись "Показывать расчетный листок" в начислении зарплаты и оттуда печатать? Только фильтр переделать, чтобы не одного человека показывал, а всех из документа.
14 Dmitry77
 
23.12.13
15:09
(12) что бы не ломать типовой ЗиУП... Он слишком часто меняется.
Писать отчет - выбрать типовой и сделать его внешним...
15 егаис
 
23.12.13
15:13
Аннушка, еще вопрос
Как вывести вычисляемые поля? Есть поле "Сумма к выплате", оно не выводится таким методом
16 егаис
 
23.12.13
15:14
(14) он и не ломается
17 Пеппи
 
23.12.13
15:20
(12) Я то в теме, открываешь типовой отчет, передав в него параметры. Как в Бухгалтерии из ОСВ открываются доп.отчеты с доп.отборами
18 егаис
 
23.12.13
15:26
я медленно охреневаю, закрыл/открыл ЗУП, суммы выводятся )
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn