V82.ОбщиеМодули.ПроведениеРасчетовДополнительный.ПериодыРасчетаБазыВсехДругихНачислений C# (CSharp) Method

ПериодыРасчетаБазыВсехДругихНачислений() public method

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