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

Учет выходных дней в отчете

Автор a.nikulnikova, 11 янв 2016, 12:52

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

a.nikulnikova

УПП 8.3 (обычное приложение)1.3.9.5
Добрый день, создаю отчет по соц.отпускам на СКД. Подскажите пожалуйста, как можно, что если у человека за период, на который он "взял" без содержания попали выходные дни, то их не считать.
Для определения данных по сотрудникам использую Р.С. состояния сотрудников организаций.
Графики работ у сотрудников разные, присутствует и сменный и пятидневка.
В документе по соц.отпускам нет данных по количеству дней, есть только данные с какого и по какое человек отсутствовал, и по какой причине.
отчет создается как внешний, код запроса:
ВЫБРАТЬ
    СостояниеРаботниковОрганизаций.Сотрудник КАК Сотрудник,
    СотрудникиОрганизаций.ДатаПриемаНаРаботу,
    СостояниеРаботниковОрганизаций.Регистратор,
    СостояниеРаботниковОрганизаций.Состояние,
    СостояниеРаботниковОрганизаций.Период,
    СостояниеРаботниковОрганизаций.ПериодЗавершения,
    СостояниеРаботниковОрганизаций.СостояниеЗавершения,
    РАЗНОСТЬДАТ(СостояниеРаботниковОрганизаций.Период, СостояниеРаботниковОрганизаций.ПериодЗавершения, ДЕНЬ) КАК КоличествоДней,
    ГОД(НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(СотрудникиОрганизаций.ДатаПриемаНаРаботу, ГОД), СЕКУНДА, РАЗНОСТЬДАТ(СотрудникиОрганизаций.ДатаПриемаНаРаботу, СостояниеРаботниковОрганизаций.Период, СЕКУНДА)), ГОД)) КАК РабочийГод,
    СостоянияРаботникаОрганизации.Ссылка
ИЗ
    РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГрафикиРаботы КАК ГрафикиРаботы
            ПО СотрудникиОрганизаций.ГрафикРаботы = ГрафикиРаботы.Ссылка
        ПО СостояниеРаботниковОрганизаций.Сотрудник = СотрудникиОрганизаций.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Перечисление.СостоянияРаботникаОрганизации КАК СостоянияРаботникаОрганизации
        ПО СостояниеРаботниковОрганизаций.Состояние = СостоянияРаботникаОрганизации.Ссылка
            И СостояниеРаботниковОрганизаций.СостояниеЗавершения = СостоянияРаботникаОрганизации.Ссылка
ГДЕ
    СостояниеРаботниковОрганизаций.Регистратор ССЫЛКА Документ.ОтпускаОрганизаций

УПОРЯДОЧИТЬ ПО
    Сотрудник


AIFrame

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

ВидДня = Новый СписокЗначений;
ВидДня.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный);
ВидДня.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий);

Запрос.УстановитьПараметр("ВидДня",ВидДня);

Возврат Запрос.Выполнить().Пустой();

КонецФункции


a.nikulnikova

Цитата: AIFrame от 11 янв 2016, 13:33
Функция ЭтоВыходной(ДатаОтсрочки)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               | РегламентированныйПроизводственныйКалендарь.ДатаКалендаря,
               | РегламентированныйПроизводственныйКалендарь.ВидДня
               |ИЗ
               | РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
               |ГДЕ
               | РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = &ДатаКалендаря
               | И РегламентированныйПроизводственныйКалендарь.ВидДня В(&ВидДня)";
Запрос.УстановитьПараметр("ДатаКалендаря",НачалоДня(ДатаОтсрочки));

ВидДня = Новый СписокЗначений;
ВидДня.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный);
ВидДня.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий);

Запрос.УстановитьПараметр("ВидДня",ВидДня);

Возврат Запрос.Выполнить().Пустой();

КонецФункции


Вопрос:
1) это типовая функция?
2) как можно примерно такую же функцию сделать для скд?

AIFrame

1. Почти. Если в конфигурации есть производственный календарь - взлетит. Но он много где присутствует.
2. Нет, для СКД не получится.

vitasw

Цитата: AIFrame от 13 янв 2016, 21:312. Нет, для СКД не получится.
Это где так написано?

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


Но это самый простейший вариант и, боюсь, его конкретно нужно дарабатывать. Т.к. календарь может конкретно не совпадать с индивидуальными графиками. Например, у физ. лица какой-то сменный график и все эти пяти- и шести- дневки ему никоим образом не подходят. Нужно еще цеплять информацию из РС об индивидуальных графиках.

Теги:

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

Рейтинг@Mail.ru

Поиск