8.х ДопОтпуск

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Swl68, 4 окт 2012.

  1. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Код:
    /// Дополнительный отпуск и ежегодный
    ЕжегодныйОтпуск = Новый СписокЗначений();
    ЕжегодныйОтпуск.Добавить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускЕжегодный);
    ЕжегодныйОтпуск.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций);
    Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
    Если ФлажокДополнительныйОтпуск и ФлажокЕжегодныйОтпуск
    Тогда
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Номер,
    |ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Дата,
    |ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация,
    |ОтпускаОрганизацийРаботникиОрганизации.Сотрудник,
    |ОтпускаОрганизацийРаботникиОрганизации.ВидДополнительногоОтпуска КАК ВидОтпуска,
    |ОтпускаОрганизацийРаботникиОрганизации.ДатаНачалаДоп КАК ДатаНачала,
    |ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания,
    |ОтпускаОрганизацийРаботникиОрганизации.КоличествоДней,
    |ОтпускаОрганизацийРаботникиОрганизации.РабочийГодС,
    |ОтпускаОрганизацийРаботникиОрганизации.РабочийГодПо,
    |ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.Должность КАК Должность,
    |ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.ПодразделениеОрганизации КАК ПодразделениеОрганизации
    |    ИЗ
    |Документ.ОтпускаОрганизаций.РаботникиОрганизации КАК ОтпускаОрганизацийРаботникиОрганизации
    |   ГДЕ
    |ВЫБОР КОГДА &Организация = НЕОПРЕДЕЛЕНО ТОГДА ИСТИНА ИНАЧЕ ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация = &Организация КОНЕЦ
    |И ОтпускаОрганизацийРаботникиОрганизации.ДатаНачалаДоп >= &ДатаНачала
    |И ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания <= &ДатаОкончания
    |И ОтпускаОрганизацийРаботникиОрганизации.ВидДополнительногоОтпуска В (&ДополнительныйОтпуск)
    |
    |ОБЪЕДИНИТЬ
    |
    |ВЫБРАТЬ
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Номер,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Дата,
    | ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация.Наименование КАК Организация,
    | ОтпускаОрганизацийРаботникиОрганизации.Сотрудник,
    | ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия КАК ВидОтпуска,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала,
    | ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания,
    | ОтпускаОрганизацийРаботникиОрганизации.КоличествоДней,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодС КАК РабочийГодС,
    | ОтпускаОрганизацийРаботникиОрганизации.РабочийГодПо КАК РабочийГодПо,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.Должность КАК Должность,
    |   ОтпускаОрганизацийРаботникиОрганизации.Сотрудник.ПодразделениеОрганизации КАК ПодразделениеОрганизации
    |ИЗ
    | Документ.ОтпускаОрганизаций.РаботникиОрганизации КАК ОтпускаОрганизацийРаботникиОрганизации
    |ГДЕ
    | ОтпускаОрганизацийРаботникиОрганизации.ПричинаОтсутствия В (&ЕжегодныйОтпуск)
    | И ВЫБОР КОГДА &Организация = НЕОПРЕДЕЛЕНО ТОГДА ИСТИНА ИНАЧЕ ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Организация = &Организация КОНЕЦ
    | И ОтпускаОрганизацийРаботникиОрганизации.Ссылка.Проведен
    | И НЕ ОтпускаОрганизацийРаботникиОрганизации.Ссылка.ПометкаУдаления
    | И (ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала >= &ДатаНачала
    |    И ОтпускаОрганизацийРаботникиОрганизации.ДатаНачала <= &ДатаОкончания
    |   ИЛИ ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания >= &ДатаНачала
    |    И ОтпускаОрганизацийРаботникиОрганизации.ДатаОкончания <= &ДатаОкончания)";
    
    
    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
    Запрос.УстановитьПараметр("ЕжегодныйОтпуск", ЕжегодныйОтпуск) ;
    Запрос.УстановитьПараметр("Организация", ?(ЗначениеЗаполнено(Организация),Организация, Неопределено));
    Результат = Запрос.Выполнить();
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    
    КонецЕсли;
    
    Никак не пойму, ДопОтпуск берется из ПлановВидовРасчета, но как добавить его в список значений...
  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    а ситуацию обясниет, что вообще хотите?
  3. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    а, да. При выборе двух флажков на форме получать макет и по ежегодному отпуску и по дополнительному. Ежегодный из перечислений добавляется в СписокЗначений там все ясно, а Дополнительный из ПланыВидовРасчета. Как (
    Код:
    ЕжегодныйОтпуск.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций);
    ) добавить
  4. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Ну начнем с того, что дополнительных отпусков у Вас может быть несколько (теоретически) За вредные условия труда, За многосменный режим работы и т.д.

    По этому раньше 1С писло запрос к К основным начислениям с условиям, что выбрать все основные начисления у которых реквизит ОбозначениеВТабелеУчетаРабочегоВремени равен Справочники.КлассификаторИспользованияРабочегоВремени.ДополнительныйОтпуск

    Обрразно

    Выбрать
    Ссылка
    Из
    ПланВидовРасчета.ОсновныеНачисления
    Где
    Ссылка.ОбозначениеВТабелеУчетаРабочегоВремени=ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.ДополнительныйОтпуск)
    ну или через параметр

    Вот вы получает список всег начислений которые являются доп отпусками, а дальше что хотите
  5. TopicStarter Overlay
    Swl68
    Offline

    Swl68 Опытный в 1С

    Регистрация:
    13 сен 2012
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    что-то не догоняю я. Это "Выбрать
    Ссылка
    Из
    ПланВидовРасчета.ОсновныеНачисления
    Где

    Ссылка.ОбозначениеВТабелеУчетаРабочегоВремени=ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.Дополнительны" как бы в запрос.
    Мне нужно
    Код:
    ЕжегодныйОтпуск = Новый СписокЗначений();
    ЕжегодныйОтпуск.Добавить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускЕжегодный);
    ЕжегодныйОтпуск.Добавить(ПланыВидовРасчета.
    Получиьб допОтпуск в этот список значений

Поделиться этой страницей