наверх
Свободные IT публикации
быстро и доступно
логин:
пароль:

Сложные периодические расчеты в 1С 8.x


Как получить сумму начисления по конкретному виду расчета указанному сотруднику в указанном периоде?

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

Запрос.УстановитьПараметр("Период", НачалоМесяца(Период1)); 
Запрос.УстановитьПараметр("ВидРасчета", ВидРасчета); 
Запрос.УстановитьПараметр("ФизЛицо", ФизЛицо);

Как получить сумму всех начислений указанному сотруднику в указанном периоде?

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

ОБЪЕДИНИТЬ ВСЕ 

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

Как получить таблицу перерасчетов по перерасчетам нескольких регистров?

ВЫБРАТЬ 
	ПерерасчетОсновных.ФизЛицо КАК Работник, 
	ПерерасчетОсновных.ВидРасчета, 
	ПерерасчетОсновных.ОбъектПерерасчета КАК Документ 
ИЗ 
	РегистрРасчета.ОсновныеНачисленияРаботниковОрганизации.ПерерасчетОсновныхНачислений 
КАК ПерерасчетОсновных 

ОБЪЕДИНИТЬ ВСЕ 

ВЫБРАТЬ 
	ПерерасчетДополнительных.ФизЛицо, 
	ПерерасчетДополнительных.ВидРасчета, 
	ПерерасчетДополнительных.ОбъектПерерасчета 
ИЗ 
	РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизации.ПерерасчетДополнительныхНачислений 
КАК ПерерасчетДополнительных

Как для документа "НачислениеЗарплатыРаботникам" определить номера строк записей полностью вытесненных видов расчета?

ВЫБРАТЬ РАЗРЕШЕННЫЕ 
	УправленческиеНачисления.НомерСтроки КАК НомерСтроки 
ИЗ 
	РегистрРасчета.УправленческиеНачисления КАК УправленческиеНачисления 
ЛЕВОЕ СОЕДИНЕНИЕ 
	РегистрРасчета.УправленческиеНачисления.ФактическийПериодДействия(Регистратор = &парамСсылка) 
КАК УправленческиеНачисленияФактическийПериодДействия 
ПО 
	УправленческиеНачисления.НомерСтроки = УправленческиеНачисленияФактическийПериодДействия.НомерСтроки 
	И 
	УправленческиеНачисления.Регистратор = УправленческиеНачисленияФактическийПериодДействия.Регистратор 
ГДЕ 
	УправленческиеНачисления.Регистратор = &парамСсылка 
	И
	((УправленческиеНачисленияФактическийПериодДействия.Регистратор) ЕСТЬ NULL )

Как сформировать расчетный листок сотрудника?

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

	ОБЪЕДИНИТЬ ВСЕ 

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

Как организовать сторнирование уже произведенных расчетов прошлых периодов?

ТаблицаСторноЗаписей = Движения.ОсновныеНачисленияРаботниковОрганизации.ПолучитьДополнение(); 

Для каждого СтрокаСторно Из ТаблицаСторноЗаписей Цикл 

	// Добавить сторно-записи в набор записей регистра. 
	// Новая запись движений. 
	Движение = Движения.ОсновныеНачисленияРаботниковОрганизации.Добавить(); 

	// Заполнить свойства. 
	Движение.ПериодРегистрации = Строка.ПериодРегистрацииСторно; 
	Движение.ПериодДействияНачало = Строка.ПериодДействияНачалоСторно; 
	Движение.ПериодДействияКонец = Строка.ПериодДействияКонецСторно; 
	Движение.БазовыйПериодНачало = Строка.БазовыйПериодНачало; 
	Движение.БазовыйПериодКонец = Строка.БазовыйПериодКонец; 
	Движение.ВидРасчета = Строка.ВидРасчета; 
	Движение.Сторно = Истина; 

	// Заполнить измерения. 
	Движение.ФизЛицо = Строка.ФизЛицо; 
	Движение.Приказ = Строка.Приказ; 
	Движение.Организация = Строка.Организация; 

	// Ресурсы не заполнять, потому что здесь не происходит расчет, 
	// только подготовка новой записи 

	// Заполнить реквизиты. 
	Движение.ГрафикРаботы = Строка.ГрафикРаботы; 
	Движение.Размер = Строка.Размер; 
	Движение.ВидУчетаВремени = Строка.ВидУчетаВремени; 
	Движение.ПодразделениеОрганизации = Строка.ПодразделениеОрганизации; 
	Движение.ПериодРасчетаСреднегоЗаработкаНачало = Строка.ПериодРасчетаСреднегоЗаработкаНачало; 
	Движение.ПериодРасчетаСреднегоЗаработкаОкончание = Строка.ПериодРасчетаСреднегоЗаработкаОкончание; 
КонецЦикла; 

Движения.ОсновныеНачисленияРаботниковОрганизации.Записать();