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