Кадровая история сотрудника организации (периодами) в ЗУП 2.5

24.12.15

Разработка - Механизмы типовых конфигураций

Как получить кадровую историю сотрудника? Как работать с регистрами сведений, имеющими ресурс "Период завершения"? Об этом данная статья.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Статья и запрос
.zip 130,10Kb
34
34 Скачать (1 SM) Купить за 1 850 руб.

Хочу сразу обратить внимание уважаемых коллег на то, что статья представляет собой учебный материал по работе с регистрами сведений, имеющими ресурс «Период завершения», и вряд ли будет интересна и полезна гуру (хотя, как знать). Вопросы и конструктивная критика приветствуются Wink

Кадровая история сотрудников организации хранится в регистре сведений «РаботникиОрганизаций» (в пользовательском режиме – «Кадровая история сотрудников (по юрлицам)» или «Сотрудники организации»). Регистраторами для данного регистра являются документы приема в организацию, кадрового перемещения, увольнения из организации и переноса данных.

Регистр «РаботникиОрганизаций», как и многие другие, такие как «ПлановыеНачисленияРаботниковОрганизаций», «ПлановыеУдержанияРаботниковОрганизаций», «СостояниеРаботниковОрганизаций» и т.п.) в своем составе имеют одноименный ресурс с добавлением постфикса «Завершения». Приведем примеры (в конфигурации их гораздо больше):

№ п/п Регистр сведений Ресурс (основной) Ресурс завершения
1 РаботникиОрганизаций ПодразделениеОрганизации ПодразделениеОрганизацииЗавершения
Должность ДолжностьЗавершения
ГрафикРаботы ГрафикРаботыЗавершения
2 ПлановыеНачисленияРаботниковОрганизаций ВидРасчета ВидРасчетаЗавершения
Показатель1 Показатель1Завершения
3 СостояниеРаботников Состояние СостояниеЗавершения

 И, кроме этого, для измерения «Период» имеется ресурс «ПериодЗавершения». Эти два свойства записи определяют состояние объекта на временной оси.

Ресурс «ПериодЗавершения» показывает, что запись характеризуется еще и концом своего действия (в случае, если ресурс заполнен). В этом случае с даты, указанной в ресурсе «ПериодЗавершения», актуальными становятся ресурсы с постфиксом «Завершения» («ДолжностьЗавершения», «ГрафикРаботыЗавершения» и т.д.)

Для того, чтобы понимать, почему была разработана именно такая архитектура периодических регистров сведений, характеризующихся окончанием периода действия, рекомендую ознакомиться со статьей ИТС Регистрация изменений на некоторый промежуток времени с возвратом в исходное состояние. Также в статье Запросы к регистрам сведений с реквизитом "ПериодЗавершения" обсуждаются плюсы и минусы такого решения.

Лирическое отступление закончим. Перейдем непосредственно к задаче получения кадровой истории сотрудника организации (далее, сотрудника). Для того, чтобы не загромождать статью кодом, в запросе будем получать только подразделение сотрудника. Чтобы получить должность, график работы и подобные ресурсы, нужно использовать точно такие же конструкции с «ВЫБОР»,  которые применяются в приведенных ниже запросах. Но для того, чтобы наглядно показать откуда, почему и какие данные получаются (в целях обучения), в результат запросов помещены дополнительные поля, которые можно не использовать в своих разработках в будущем.

 

Постановка задачи:

Необходимо получить кадровую историю сотрудника в следующем виде (с отбором по периоду):

 Следует учесть тот момент, что документом «Кадровое перемещение организаций АР000000002 от 14.01.2015 15:27:05» сотрудник был переведен в Отдел продаж с 14.01.15 по 04.03.15 (для других кадровых перемещений период завершения не заполнялся):

 


Последовательность решения:

1. Находим подразделение сотрудника на дату начала периода (пусть это будет 01.01.15 г.). Для этого используем виртуальную таблицу среза последних регистра сведений «РаботникиОрганизаций», параметризованную по сотруднику и дате начала периода

 ВЫБРАТЬ
	"1" КАК НомерПодзапроса,
	РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
	ВЫБОР
		КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &НачалоПериода
				И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
			ТОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения
		ИНАЧЕ РаботникиОрганизацийСрезПоследних.Период
	КОНЕЦ КАК Период,
	ВЫБОР
		КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &НачалоПериода
				И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
			ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения
		ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
	КОНЕЦ КАК ПодразделениеОрганизации,
	ВЫБОР
		КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &НачалоПериода
				И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
			ТОГДА РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостоянияЗавершения
		ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния
	КОНЕЦ КАК ПричинаИзмененияСостояния,
	РаботникиОрганизацийСрезПоследних.Регистратор
ИЗ
	РегистрСведений.РаботникиОрганизаций.СрезПоследних(&НачалоПериода, Сотрудник = &Сотрудник) КАК РаботникиОрганизацийСрезПоследних

 

 Результат подзапроса № 1:

В подзапросе № 1 используется конструкция «ВЫБОР» с проверкой значения ресурса «ПериодЗавершения». Если период завершения заполнен и наступил этот период, возвращаем ресурс с постфиксом «Завершения», иначе возвращаем обычный ресурс (или измерение «Период»). Повторюсь, что данную конструкцию необходимо использовать для получения любых ресурсов, характеризующихся датой окончания действия (Должность, ГрафикРаботы и т.п.)

Также можно увидеть, что в подзапрос включено поле «Номер подзапроса» для визуального отображения в будущем, какой подзапрос какие данные вернул (напомню, что это поле для решения поставленной задачи необязательно).

 

2. Находим подразделения сотрудника с даты, следующей за датой начала периода, и по дату окончания периода (пусть это будет 31.12.15 г.) Для этого используем физическую таблицу регистра сведений «РаботникиОрганизаций» с отбором по сотруднику и датам начала и окончания периода

ВЫБРАТЬ
	"2" КАК НомерПодзапроса,
	РаботникиОрганизаций.Сотрудник КАК Сотрудник,
	РаботникиОрганизаций.Период КАК Период,
	РаботникиОрганизаций.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
	РаботникиОрганизаций.ПричинаИзмененияСостояния КАК ПричинаИзмененияСостояния,
	РаботникиОрганизаций.Регистратор
ИЗ
	РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
ГДЕ
	РаботникиОрганизаций.Сотрудник = &Сотрудник
	И РаботникиОрганизаций.Период > &НачалоПериода
	И РаботникиОрганизаций.Период <= &КонецПериода

Результат подзапроса № 2:

 

3. Находим подразделения сотрудника по датам завершения событий с даты, следующей за датой начала периода, и по дату окончания периода

ВЫБРАТЬ
	"3" КАК НомерПодзапроса,
	РаботникиОрганизаций.Сотрудник КАК Сотрудник,
	РаботникиОрганизаций.ПериодЗавершения КАК Период,
	РаботникиОрганизаций.ПодразделениеОрганизацииЗавершения КАК ПодразделениеОрганизации,
	РаботникиОрганизаций.ПричинаИзмененияСостоянияЗавершения КАК ПричинаИзмененияСостояния,
	РаботникиОрганизаций.Регистратор
ИЗ
	РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
ГДЕ
	РаботникиОрганизаций.Сотрудник = &Сотрудник
	И РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
	И РаботникиОрганизаций.ПериодЗавершения > &НачалоПериода
	И РаботникиОрганизаций.ПериодЗавершения <= &КонецПериода

Результат подзапроса № 3:

 

4. Объединим подзапросы конструкцией «ОБЪЕДИНИТЬ ВСЕ» и поместим во временную таблицу

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

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

ВЫБРАТЬ
	"2",
	РаботникиОрганизаций.Сотрудник,
	РаботникиОрганизаций.Период,
	РаботникиОрганизаций.ПодразделениеОрганизации,
	РаботникиОрганизаций.ПричинаИзмененияСостояния,
	РаботникиОрганизаций.Регистратор
ИЗ
	РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
ГДЕ
	РаботникиОрганизаций.Сотрудник = &Сотрудник
	И РаботникиОрганизаций.Период > &НачалоПериода
	И РаботникиОрганизаций.Период <= &КонецПериода

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

ВЫБРАТЬ
	"3",
	РаботникиОрганизаций.Сотрудник,
	РаботникиОрганизаций.ПериодЗавершения,
	РаботникиОрганизаций.ПодразделениеОрганизацииЗавершения,
	РаботникиОрганизаций.ПричинаИзмененияСостоянияЗавершения,
	РаботникиОрганизаций.Регистратор
ИЗ
	РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
ГДЕ
	РаботникиОрганизаций.Сотрудник = &Сотрудник
	И РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
	И РаботникиОрганизаций.ПериодЗавершения > &НачалоПериода
	И РаботникиОрганизаций.ПериодЗавершения <= &КонецПериода

Временная таблица ВТ_ДатыСобытий будет содержать следующие данные:

Как видно, для того, чтобы получить все даты начала нахождения сотрудника в каком-либо подразделении, нам необходимо было формировать три подзапроса (если устанавливать разные даты начала и окончания периода, то можно увидеть что кадровую историю сотрудника за период можно получить с помощью одного или двух подзапросов, чего будет явно недостаточно для общего случая).

 

5. Получаем итоговую таблицу (текст получения временной таблицы ВТ_ДатыСобытий не повторяю). Для этого временную таблицу с датами наступления событий соединяем саму с собой по сотруднику и условию того, что дата начала события должна быть меньше даты его окончания.

Если сотрудник работает и дата окончания меньше даты события очередного кадрового документа, «Дату по» ставим равной дате окончания.

Если сотрудника уволили, дату начала данного события устанавливаем на следующую дату за последним рабочим днем, а дату окончания устанавливаем в NULL (нет там уже никакой протяженности во времени).

Подразделение после увольнения оставляем равным последнему подразделению сотрудника.

//получили ВТ_ДатыСобытий в п. 4
;

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

СГРУППИРОВАТЬ ПО
	ДатыНачала.Сотрудник,
	ДатыНачала.Период,
	ДатыНачала.ПодразделениеОрганизации,
	ДатыНачала.Регистратор,
	ДатыНачала.ПричинаИзмененияСостояния

УПОРЯДОЧИТЬ ПО
	ДатаС

Результат запроса:

Таким образом, мы получили кадровую историю сотрудника (периодами).

 P.S. В файле находится архив с данной статьей в формате MS Word и файл запроса.

кадровая история ЗУП сотрудников

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159706    876    399    

862

Запросы Программист Бесплатно (free)

Увидел cheatsheet по SQL и захотелось нарисовать подобное, но про запросы.

18.10.2024    9956    sergey279    18    

64

Запросы Программист Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

Столкнулся с интересной ситуацией, которую хотел бы разобрать, ввиду её неочевидности. Речь пойдёт про использование функции запроса АВТОНОМЕРЗАПИСИ() и проблемы, которые могут возникнуть.

11.10.2024    5208    XilDen    36    

80

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

Часто при разработке отчетов в СКД возникает ситуация, когда не совсем понятно, почему отчет выводит не те данные, которые нужны, либо не выводит вовсе. Возникает потребность увидеть конечный запрос, который формирует СКД. Как это сделать, рассмотрим в этой статье.

15.05.2024    8733    implecs_team    6    

47

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    4052    YA_418728146    11    

53

Инструментарий разработчика Запросы Программист Стажер Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Бесплатно (free)

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

15.01.2024    10160    142    mkalimulin    32    

60

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист Стажер Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

Используются для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 1С:Бухгалтерия предприятия, в других конфигурациях могут быть другие, а могут быть и похожие объекты.

28.12.2023    6445    mrXoxot    11    

112
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. echo77 1906 24.12.15 18:39 Сейчас в теме
Ссылки на ИТС - это очень хорошо в статье
2. MishaD 14 25.12.15 08:47 Сейчас в теме
Не понял, зачем нужна проверка пересечений. Только что попробовал провести изменение должности в интервале с 17.01.15 по 19.01.15(10.02.15). Зуп не позволяет, ругается на прошлое перемещение с 14.01.2015 по 04.02.2015. Хотя пытался изменить не подразделение, как в том перемещении, а должность. То есть, даже если захочешь, то совмещение(пересечение)периодов сделать не получится.
3. HEKPOH 76 25.12.15 11:13 Сейчас в теме
(2) Спасибо за комментарий - не стоило мне так перестраховываться :)
Публикацию обновил
4. karpik666 3853 25.12.15 12:09 Сейчас в теме
Если вы объяняете это для зуп, то там есть свой запрос для получения кадровой истории сотрудника и находится он в модулей СотрудникиОрганизацииСервер
Функция ТекстЗапросаИзмененияМестаРаботыОрганизации(ЗапрашиватьОклад)
	
	ТекстЗапроса =  
	"ВЫБРАТЬ
	|	Работники.Период КАК Период,
	|	Работники.ОбособленноеПодразделение КАК ОбособленноеПодразделение,
	|	Работники.ПодразделениеОрганизации КАК Подразделение,
	|	Работники.Должность КАК Должность,
	|	Работники.ГрафикРаботы КАК ГрафикРаботы,
	|	Работники.Регистратор КАК Регистратор
	|ПОМЕСТИТЬ ИзмененияПозиции
	|ИЗ
	|	РегистрСведений.РаботникиОрганизаций КАК Работники
	|ГДЕ
	|	Работники.Сотрудник = &Сотрудник
	|	И Работники.Организация = &Организация
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	Работники.ПериодЗавершения,
	|	Работники.ОбособленноеПодразделениеЗавершения,
	|	Работники.ПодразделениеОрганизацииЗавершения,
	|	Работники.ДолжностьЗавершения,
	|	Работники.ГрафикРаботыЗавершения,
	|	Работники.Регистратор
	|ИЗ
	|	РегистрСведений.РаботникиОрганизаций КАК Работники
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК ОсновноеНазначение
	|		ПО (ОсновноеНазначение.Период = Работники.ПериодЗавершения)
	|			И (ОсновноеНазначение.Сотрудник = Работники.Сотрудник)
	|			И (ОсновноеНазначение.Организация = Работники.Организация)
	|ГДЕ
	|	Работники.Сотрудник = &Сотрудник
	|	И Работники.Организация = &Организация
	|	И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
	|	И ОсновноеНазначение.Период ЕСТЬ NULL 
	|;
	|";
	
	Если ЗапрашиватьОклад Тогда
		ТекстЗапроса = ТекстЗапроса + "	
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	ПлановыеНачисления.Период,
		|	ВЫБОР
		|		КОГДА ПлановыеНачисления.ВидРасчета.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПроизвольнаяФормула)
		|			ТОГДА ВЫБОР
		|					КОГДА ПоказателиВидовРасчета.Показатель.ТипПоказателя = ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд)
		|						ТОГДА ВЫБОР
		|								КОГДА ПоказателиВидовРасчета.НомерСтроки = 1
		|									ТОГДА ПлановыеНачисления.ТарифныйРазряд1
		|								КОГДА ПоказателиВидовРасчета.НомерСтроки = 2
		|									ТОГДА ПлановыеНачисления.ТарифныйРазряд2
		|								КОГДА ПоказателиВидовРасчета.НомерСтроки = 3
		|									ТОГДА ПлановыеНачисления.ТарифныйРазряд3
		|								КОГДА ПоказателиВидовРасчета.НомерСтроки = 4
		|									ТОГДА ПлановыеНачисления.ТарифныйРазряд4
		|								КОГДА ПоказателиВидовРасчета.НомерСтроки = 5
		|									ТОГДА ПлановыеНачисления.ТарифныйРазряд5
		|								КОГДА ПоказателиВидовРасчета.НомерСтроки = 6
		|									ТОГДА ПлановыеНачисления.ТарифныйРазряд6
		|								ИНАЧЕ NULL
		|							КОНЕЦ
		|					ИНАЧЕ ВЫБОР
		|							КОГДА ПоказателиВидовРасчета.НомерСтроки = 1
		|								ТОГДА ПлановыеНачисления.Показатель1
		|							КОГДА ПоказателиВидовРасчета.НомерСтроки = 2
		|								ТОГДА ПлановыеНачисления.Показатель2
		|							КОГДА ПоказателиВидовРасчета.НомерСтроки = 3
		|								ТОГДА ПлановыеНачисления.Показатель3
		|							КОГДА ПоказателиВидовРасчета.НомерСтроки = 4
		|								ТОГДА ПлановыеНачисления.Показатель4
		|							КОГДА ПоказателиВидовРасчета.НомерСтроки = 5
		|								ТОГДА ПлановыеНачисления.Показатель5
		|							КОГДА ПоказателиВидовРасчета.НомерСтроки = 6
		|								ТОГДА ПлановыеНачисления.Показатель6
		|							ИНАЧЕ NULL
		|						КОНЕЦ
		|				КОНЕЦ
		|		ИНАЧЕ ВЫБОР
		|				КОГДА ПлановыеНачисления.ВидРасчета.ТребуетВводаТарифногоРазряда
		|					ТОГДА ПлановыеНачисления.ТарифныйРазряд1
		|				ИНАЧЕ ПлановыеНачисления.Показатель1
		|			КОНЕЦ
		|	КОНЕЦ КАК Оклад,
		|	ПлановыеНачисления.Регистратор,
		|	ВЫБОР
		|		КОГДА ПлановыеНачисления.ВидРасчета.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПроизвольнаяФормула)
		|			ТОГДА ПоказателиВидовРасчета.Показатель.ТочностьПредставления
		|		ИНАЧЕ ВЫБОР
		|				КОГДА ПлановыеНачисления.ВидРасчета.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоЧасовойТарифнойСтавке)
		|					ТОГДА 3
		|				ИНАЧЕ 2
		|			КОНЕЦ
		|	КОНЕЦ КАК ТочностьПредставления
		|ПОМЕСТИТЬ ИзмененияОклада
		|ИЗ
		|	РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисления
		|		ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК ПоказателиВидовРасчета
		|		ПО ПлановыеНачисления.ВидРасчета = ПоказателиВидовРасчета.Ссылка
		|			И (ПоказателиВидовРасчета.Показатель.ТарифнаяСтавка
		|				ИЛИ ПоказателиВидовРасчета.Показатель В (ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная), ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная), ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая)))
		|			И (ПоказателиВидовРасчета.ЗапрашиватьПриКадровыхПеремещениях)
		|			И (ПоказателиВидовРасчета.Ссылка.ЗачетОтработанногоВремени)
		|ГДЕ
		|	ПлановыеНачисления.Сотрудник = &Сотрудник
		|	И ПлановыеНачисления.Организация = &Организация
		|	И ПлановыеНачисления.ВидРасчетаИзмерение = НЕОПРЕДЕЛЕНО
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	ПлановыеНачисления.ПериодЗавершения,
		|	ВЫБОР
		|		КОГДА ПлановыеНачисления.ВидРасчетаЗавершения.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПроизвольнаяФормула)
		|			ТОГДА ВЫБОР
		|					КОГДА ПоказателиВидовРасчета.Показатель.ТипПоказателя = ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейСхемМотивации.ТарифныйРазряд)
		|						ТОГДА ВЫБОР
		|								КОГДА ПоказателиВидовРасчета.НомерСтроки = 1
		|									ТОГДА ПлановыеНачисления.ТарифныйРазряд1Завершения
		|								КОГДА ПоказателиВидовРасчета.НомерСтроки = 2
		|									ТОГДА ПлановыеНачисления.ТарифныйРазряд2Завершения
		|								КОГДА ПоказателиВидовРасчета.НомерСтроки = 3
		|									ТОГДА ПлановыеНачисления.ТарифныйРазряд3Завершения
		|								КОГДА ПоказателиВидовРасчета.НомерСтроки = 4
		|									ТОГДА ПлановыеНачисления.ТарифныйРазряд4Завершения
		|								КОГДА ПоказателиВидовРасчета.НомерСтроки = 5
		|									ТОГДА ПлановыеНачисления.ТарифныйРазряд5Завершения
		|								КОГДА ПоказателиВидовРасчета.НомерСтроки = 6
		|									ТОГДА ПлановыеНачисления.ТарифныйРазряд6Завершения
		|								ИНАЧЕ NULL
		|							КОНЕЦ
		|					ИНАЧЕ ВЫБОР
		|							КОГДА ПоказателиВидовРасчета.НомерСтроки = 1
		|								ТОГДА ПлановыеНачисления.Показатель1Завершения
		|							КОГДА ПоказателиВидовРасчета.НомерСтроки = 2
		|								ТОГДА ПлановыеНачисления.Показатель2Завершения
		|							КОГДА ПоказателиВидовРасчета.НомерСтроки = 3
		|								ТОГДА ПлановыеНачисления.Показатель3Завершения
		|							КОГДА ПоказателиВидовРасчета.НомерСтроки = 4
		|								ТОГДА ПлановыеНачисления.Показатель4Завершения
		|							КОГДА ПоказателиВидовРасчета.НомерСтроки = 5
		|								ТОГДА ПлановыеНачисления.Показатель5Завершения
		|							КОГДА ПоказателиВидовРасчета.НомерСтроки = 6
		|								ТОГДА ПлановыеНачисления.Показатель6Завершения
		|							ИНАЧЕ NULL
		|						КОНЕЦ
		|				КОНЕЦ
		|		ИНАЧЕ ВЫБОР
		|				КОГДА ПлановыеНачисления.ВидРасчета.ТребуетВводаТарифногоРазряда
		|					ТОГДА ПлановыеНачисления.ТарифныйРазряд1Завершения
		|				ИНАЧЕ ПлановыеНачисления.Показатель1Завершения
		|			КОНЕЦ
		|	КОНЕЦ,
		|	ПлановыеНачисления.Регистратор,
		|	ВЫБОР
		|		КОГДА ПлановыеНачисления.ВидРасчетаЗавершения.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПроизвольнаяФормула)
		|			ТОГДА ПоказателиВидовРасчета.Показатель.ТочностьПредставления
		|		ИНАЧЕ ВЫБОР
		|				КОГДА ПлановыеНачисления.ВидРасчетаЗавершения.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоЧасовойТарифнойСтавке)
		|					ТОГДА 3
		|				ИНАЧЕ 2
		|			КОНЕЦ
		|	КОНЕЦ
		|ИЗ
		|	РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисления
		|		ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.ОсновныеНачисленияОрганизаций.Показатели КАК ПоказателиВидовРасчета
		|		ПО ПлановыеНачисления.ВидРасчетаЗавершения = ПоказателиВидовРасчета.Ссылка
		|			И (ПоказателиВидовРасчета.Показатель.ТарифнаяСтавка
		|				ИЛИ ПоказателиВидовРасчета.Показатель В (ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаМесячная), ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаДневная), ЗНАЧЕНИЕ(Справочник.ПоказателиСхемМотивации.ТарифнаяСтавкаЧасовая)))
		|			И (ПоказателиВидовРасчета.ЗапрашиватьПриКадровыхПеремещениях)
		|			И (ПоказателиВидовРасчета.Ссылка.ЗачетОтработанногоВремени)
		|ГДЕ
		|	ПлановыеНачисления.Сотрудник = &Сотрудник
		|	И ПлановыеНачисления.Организация = &Организация
		|	И ПлановыеНачисления.ВидРасчетаИзмерение = НЕОПРЕДЕЛЕНО
		|	И ПлановыеНачисления.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
		|;
		|";
	Иначе
		ТекстЗапроса = ТекстЗапроса + "	
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	NULL КАК Период,
		|	NULL КАК Оклад,
		|	NULL КАК Регистратор,
		|	0 КАК ТочностьПредставления
		|ПОМЕСТИТЬ ИзмененияОклада
		|ГДЕ
		|	ЛОЖЬ
		|;
		|";
	КонецЕсли;
	
	ТекстЗапроса = ТекстЗапроса + "	
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ЕСТЬNULL(ИзмененияПозиции.Период, ИзмененияОклада.Период) КАК Период,
	|	ИзмененияПозиции.ОбособленноеПодразделение,
	|	ИзмененияПозиции.Подразделение,
	|	ИзмененияПозиции.Должность,
	|	ИзмененияПозиции.ГрафикРаботы,
	|";
	Если ЗапрашиватьОклад Тогда
		ТекстЗапроса = ТекстЗапроса + "	
		|	ИзмененияОклада.Оклад,
		|";
	КонецЕсли;
	ТекстЗапроса = ТекстЗапроса + "	
	|	ЕСТЬNULL(ИзмененияПозиции.Регистратор, ИзмененияОклада.Регистратор) КАК Основание,
	|	ИзмененияОклада.ТочностьПредставления КАК ТочностьПредставления
	|ИЗ
	| 	ИзмененияПозиции КАК ИзмененияПозиции
	|	ПОЛНОЕ СОЕДИНЕНИЕ ИзмененияОклада КАК ИзмененияОклада
	|	ПО (ИзмененияОклада.Период = ИзмененияПозиции.Период)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Период";
	
	Возврат ТекстЗапроса;
	
КонецФункции // ТекстЗапросаИзмененияМестаРаботыОрганизации
Показать


В принципе, все что здесь описано, уже итак известно, если начать разбираться с зупом, хотя может кому-то и будет полезно.
NatashaSK; Alien_job; +2 Ответить
5. dgolovanov 27.12.15 12:42 Сейчас в теме
(4) karpik666, Вы пишете про 3.0? В 2.5 ничего такого нет.
6. karpik666 3853 27.12.15 14:38 Сейчас в теме
(5) dgolovanov, нет я как раз пишу про 2.5
9. vishiv 27 19.03.16 16:52 Сейчас в теме
(4) karpik666, Запрос тоже не совсем корректный. Попробуйте сделать кадровое перемещение с какого то число по какое то и увольте сотрудника посередине этого интервала
10. karpik666 3853 19.03.16 17:18 Сейчас в теме
(9) vishiv, программа не даст провести документ увольнения, так как идет пересечение периодов.
7. Ratibor_ 01.01.16 09:14 Сейчас в теме
А вот проверку пересечений зря совсем убрали. Я не видел как она была реализована, но скорее всего в ней учитывалась ситуация, когда период завершения одной записи регистра равен периоду другой, а такое вполне может быть. Кстати, в запросе предоставленном karpik666 это учтено.
8. paulpit 18 17.01.16 22:21 Сейчас в теме
Вот такими условиями
И РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)


Проблематично вообще соваться, где большой объем данных.
Оставьте свое сообщение