public object ВременноСвободныеСтавкиСтрокШтатногоРасписания(/*ТаблицаСтрок, ГоловнаяОрганизация*/)
{
//Запрос = Новый Запрос;
//Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
//Запрос.УстановитьПараметр("ГоловнаяОрганизация", ГоловнаяОрганизация);
//Запрос.УстановитьПараметр("ДанныеДокумента", ТаблицаСтрок);
/*Запрос.Текст =
"ВЫБРАТЬ
| РаботникиДокумента.НомерСтроки КАК НомерСтроки,
| РаботникиДокумента.ДатаНачала,
| РаботникиДокумента.ПодразделениеОрганизации,
| РаботникиДокумента.Должность
|ПОМЕСТИТЬ ВТСтрокиДокумента
|ИЗ
| &ДанныеДокумента КАК РаботникиДокумента
|
|ИНДЕКСИРОВАТЬ ПО
| НомерСтроки";*/
//Запрос.Выполнить();
/*Запрос.Текст =
"ВЫБРАТЬ
| ТЧРаботникиОрганизации.НомерСтроки КАК НомерСтроки,
| ТЧРаботникиОрганизации.ДатаНачала,
| ВЫБОР
| КОГДА ДанныеПоРаботникуДоНазначения.ПериодЗавершения <= ТЧРаботникиОрганизации.ДатаНачала
| И ДанныеПоРаботникуДоНазначения.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА ДанныеПоРаботникуДоНазначения.ЗанимаемыхСтавокЗавершения
| ИНАЧЕ ДанныеПоРаботникуДоНазначения.ЗанимаемыхСтавок
| КОНЕЦ КАК ЗанимаемыхСтавок,
| ДатыПоследнихДвиженийРаботников.Сотрудник
|ПОМЕСТИТЬ ВТСотрудникиНаШтатныхЕдиницах
|ИЗ
| ВТСтрокиДокумента КАК ТЧРаботникиОрганизации
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ТЧРаботникиОрганизации.НомерСтроки КАК НомерСтроки,
| МАКСИМУМ(Работники.Период) КАК Период,
| Работники.Сотрудник КАК Сотрудник
| ИЗ
| ВТСтрокиДокумента КАК ТЧРаботникиОрганизации
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК Работники
| ПО ТЧРаботникиОрганизации.ДатаНачала >= Работники.Период
| ГДЕ
| Работники.Организация = &ГоловнаяОрганизация
|
| СГРУППИРОВАТЬ ПО
| ТЧРаботникиОрганизации.НомерСтроки,
| Работники.Сотрудник) КАК ДатыПоследнихДвиженийРаботников
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК ДанныеПоРаботникуДоНазначения
| ПО ДатыПоследнихДвиженийРаботников.Период = ДанныеПоРаботникуДоНазначения.Период
| И ДатыПоследнихДвиженийРаботников.Сотрудник = ДанныеПоРаботникуДоНазначения.Сотрудник
| ПО ТЧРаботникиОрганизации.НомерСтроки = ДатыПоследнихДвиженийРаботников.НомерСтроки
|ГДЕ
| ТЧРаботникиОрганизации.ПодразделениеОрганизации = ВЫБОР
| КОГДА ДанныеПоРаботникуДоНазначения.ПериодЗавершения <= ТЧРаботникиОрганизации.ДатаНачала
| И ДанныеПоРаботникуДоНазначения.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА ДанныеПоРаботникуДоНазначения.ПодразделениеОрганизацииЗавершения
| ИНАЧЕ ДанныеПоРаботникуДоНазначения.ПодразделениеОрганизации
| КОНЕЦ
| И ТЧРаботникиОрганизации.Должность = ВЫБОР
| КОГДА ДанныеПоРаботникуДоНазначения.ПериодЗавершения <= ТЧРаботникиОрганизации.ДатаНачала
| И ДанныеПоРаботникуДоНазначения.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА ДанныеПоРаботникуДоНазначения.ДолжностьЗавершения
| ИНАЧЕ ДанныеПоРаботникуДоНазначения.Должность
| КОНЕЦ
| И ВЫБОР
| КОГДА ДанныеПоРаботникуДоНазначения.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
| И ДанныеПоРаботникуДоНазначения.ПериодЗавершения <= ТЧРаботникиОрганизации.ДатаНачала
| ТОГДА ДанныеПоРаботникуДоНазначения.ПричинаИзмененияСостоянияЗавершения
| ИНАЧЕ ДанныеПоРаботникуДоНазначения.ПричинаИзмененияСостояния
| КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
|
|ИНДЕКСИРОВАТЬ ПО
| НомерСтроки
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДатыПоследнихИзмененийСотрудников.НомерСтроки,
| ДатыПоследнихИзмененийСотрудников.Сотрудник,
| ДатыПоследнихИзмененийСотрудников.ДатаНачала
|ПОМЕСТИТЬ ВТСотрудникиОсвободившиеСтавку
|ИЗ
| (ВЫБРАТЬ
| МАКСИМУМ(СотрудникиОсвободившиеСтавкиВОрганизациях.Период) КАК ПериодПоследнегоДвижения,
| СотрудникиОсвободившиеСтавкиВОрганизациях.Сотрудник КАК Сотрудник,
| СтрокиДокумента.НомерСтроки КАК НомерСтроки,
| СтрокиДокумента.ДатаНачала КАК ДатаНачала
| ИЗ
| ВТСотрудникиНаШтатныхЕдиницах КАК СтрокиДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СотрудникиОсвободившиеСтавкиВОрганизациях КАК СотрудникиОсвободившиеСтавкиВОрганизациях
| ПО СтрокиДокумента.ДатаНачала >= СотрудникиОсвободившиеСтавкиВОрганизациях.Период
| И СтрокиДокумента.Сотрудник.Организация = СотрудникиОсвободившиеСтавкиВОрганизациях.Организация
|
| СГРУППИРОВАТЬ ПО
| СтрокиДокумента.НомерСтроки,
| СотрудникиОсвободившиеСтавкиВОрганизациях.Сотрудник,
| СтрокиДокумента.ДатаНачала) КАК ДатыПоследнихИзмененийСотрудников
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СотрудникиОсвободившиеСтавкиВОрганизациях КАК СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних
| ПО ДатыПоследнихИзмененийСотрудников.ПериодПоследнегоДвижения = СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.Период
| И ДатыПоследнихИзмененийСотрудников.Сотрудник = СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.Сотрудник
|ГДЕ
| ВЫБОР
| КОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
| И СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <= ДатыПоследнихИзмененийСотрудников.ДатаНачала
| ТОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавкуЗавершения
| ИНАЧЕ СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавку
| КОНЕЦ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПоследниеДаты.НомерСтроки,
| ВЫБОР
| КОГДА РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
| И РаботникиОрганизаций.ПериодЗавершения <= ПоследниеДаты.ДатаНачала
| ТОГДА РаботникиОрганизаций.ПодразделениеОрганизацииЗавершения
| ИНАЧЕ РаботникиОрганизаций.ПодразделениеОрганизации
| КОНЕЦ КАК ПодразделениеОрганизации,
| ВЫБОР
| КОГДА РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
| И РаботникиОрганизаций.ПериодЗавершения <= ПоследниеДаты.ДатаНачала
| ТОГДА РаботникиОрганизаций.ДолжностьЗавершения
| ИНАЧЕ РаботникиОрганизаций.Должность
| КОНЕЦ КАК Должность,
| СУММА(ВЫБОР
| КОГДА РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
| И РаботникиОрганизаций.ПериодЗавершения <= ПоследниеДаты.ДатаНачала
| ТОГДА РаботникиОрганизаций.ЗанимаемыхСтавокЗавершения
| ИНАЧЕ РаботникиОрганизаций.ЗанимаемыхСтавок
| КОНЕЦ) КАК Ставка
|ПОМЕСТИТЬ ОсвободившиесяСтавки
|ИЗ
| (ВЫБРАТЬ
| ВТСотрудникиОсвободившиеСтавку.НомерСтроки КАК НомерСтроки,
| ВТСотрудникиОсвободившиеСтавку.Сотрудник КАК Сотрудник,
| МАКСИМУМ(РаботникиОрганизаций.Период) КАК Период,
| ВТСотрудникиОсвободившиеСтавку.ДатаНачала КАК ДатаНачала
| ИЗ
| ВТСотрудникиОсвободившиеСтавку КАК ВТСотрудникиОсвободившиеСтавку
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
| ПО ВТСотрудникиОсвободившиеСтавку.ДатаНачала >= РаботникиОрганизаций.Период
| И ВТСотрудникиОсвободившиеСтавку.Сотрудник = РаботникиОрганизаций.Сотрудник
|
| СГРУППИРОВАТЬ ПО
| ВТСотрудникиОсвободившиеСтавку.НомерСтроки,
| ВТСотрудникиОсвободившиеСтавку.Сотрудник,
| ВТСотрудникиОсвободившиеСтавку.ДатаНачала) КАК ПоследниеДаты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
| ПО ПоследниеДаты.Сотрудник = РаботникиОрганизаций.Сотрудник
| И ПоследниеДаты.Период = РаботникиОрганизаций.Период
|
|СГРУППИРОВАТЬ ПО
| ПоследниеДаты.НомерСтроки,
| ВЫБОР
| КОГДА РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
| И РаботникиОрганизаций.ПериодЗавершения <= ПоследниеДаты.ДатаНачала
| ТОГДА РаботникиОрганизаций.ПодразделениеОрганизацииЗавершения
| ИНАЧЕ РаботникиОрганизаций.ПодразделениеОрганизации
| КОНЕЦ,
| ВЫБОР
| КОГДА РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
| И РаботникиОрганизаций.ПериодЗавершения <= ПоследниеДаты.ДатаНачала
| ТОГДА РаботникиОрганизаций.ДолжностьЗавершения
| ИНАЧЕ РаботникиОрганизаций.Должность
| КОНЕЦ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТСтрокиДокумента.НомерСтроки,
| СУММА(ОсвободившиесяСтавки.Ставка) КАК ОсвобожденныеСтавки
|ИЗ
| ВТСтрокиДокумента КАК ВТСтрокиДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ОсвободившиесяСтавки КАК ОсвободившиесяСтавки
| ПО ВТСтрокиДокумента.НомерСтроки = ОсвободившиесяСтавки.НомерСтроки
| И ВТСтрокиДокумента.ПодразделениеОрганизации = ОсвободившиесяСтавки.ПодразделениеОрганизации
| И ВТСтрокиДокумента.Должность = ОсвободившиесяСтавки.Должность
|
|СГРУППИРОВАТЬ ПО
| ВТСтрокиДокумента.НомерСтроки";*/
return null;
}