В начало

Проверка сотрудника перед приемом на работу

           

Необходимо проверить сотрудника перед приемом на работу, есть ли он уже на заданной должности или нет. И при условии того, что сотрудник уже работает на этой должности, повторно его не принимать, а на другую должность - всегда пожалуйста.

            Есть справочник Сотрудники, который показан ниже, в нем указан список сотрудников.

Рис. Справочник Сотрудники

            Также имеется в наличии регистр сведений Кадровые перемещения, в котором фиксируются кадровые перестановки сотрудников по должностям, он также показан далее.

Рис. Регистр сведений «Кадровые перемещения»

            Кроме того, имеется документ «Прием на работу», с помощью которого народ принимается на работу на заданную должность с указанием оклада.

Рис. Форма элемента документа ПриемНаРаботу

            Для того, чтобы проконтролировать вновь принимаемых сотрудников на заданную должность, необходимо подправить код в модуле объекта документа ПриемНаРаботу, листинг приведен ниже.

Листинг. Код в модуле объекта документа ПриемНаРаботу

Функция ПроверкаСотрудникаНаДолжности(Сотрудник, должность)

            Запрос = Новый Запрос;

            Запрос.Текст =

                        "ВЫБРАТЬ

                        |           КадровыеПеремещения.Сотрудник,

                        |           КадровыеПеремещения.Должность

                        |ИЗ

                        |           РегистрСведений.КадровыеПеремещения КАК КадровыеПеремещения

                        |ГДЕ

                        |           КадровыеПеремещения.Сотрудник = &Сотрудник

                        |           И КадровыеПеремещения.Должность = &Должность";

           

            Запрос.УстановитьПараметр("Сотрудник", Сотрудник);

            Запрос.УстановитьПараметр("Должность", Должность);

            Запроса = Запрос.Выполнить();

            Выборка = Запроса.Выбрать();

           

            Пока Выборка.Следующий() Цикл

                        Возврат Истина;

            КонецЦикла;

           

            Возврат Ложь;          

КонецФункции

 

Процедура ОбработкаПроведения(Отказ, Режим)

            //Проверка наличия сотрудника на заданной должности

            Если ПроверкаСотрудникаНаДолжности(Сотрудник, Должность) Тогда

                        Сообщить("Такой сотрудник уже есть!");

                        Отказ=Истина;

                        Возврат;

            КонецЕсли;

                       

            // регистр КадровыеПеремещения

            Движения.КадровыеПеремещения.Записывать = Истина;

            Движение = Движения.КадровыеПеремещения.Добавить();

            Движение.Период = Дата;

            Движение.Должность = Должность;

            Движение.Подразделение = Подразделение;

            Движение.Сотрудник = Сотрудник;

            Движение.Оклад = Оклад;

КонецПроцедуры

 

            Таким образом, с помощью функции ПроверкаСотрудникаНаДолжности мы проверяем есть ли сотрудник с заданной фамилией и указанной должностью, если – ДА, тогда отменяем проведение документа и выводим соответствующее сообщение.