|
Помогите решить задачку. Документ Перемещение сотрудника | ☑ | ||
---|---|---|---|---|
0
Бурундук
29.10.21
✎
12:54
|
Перед тем, как провести документ Перемещение сотрудника, мне нужно убедиться, что данный сотрудник не был уволен и что он вообще был принят на работу другим документом. Запрет на перемещение уволенного сотрудника у меня получилось написать и эта функция успешно работает. Однако функция, которая проверяет, был ли принят сотрудник на работу, у меня не срабатывает и у меня получается произвести поведение документа Кадровое Перемещение по сотруднику, который даже не был принят на работу. Что я делаю не так? Может не правильно вызываю функцию в процедуре ОбработкаПроведения? Буду признательна за ответ
Функция СотрудникУволен(Сотрудник) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КадровыеПеремещения.ПричинаИзмененияСостояния КАК ПричинаИзмененияСостояния |ИЗ | РегистрСведений.КадровыеПеремещения КАК КадровыеПеремещения |ГДЕ | КадровыеПеремещения.Сотрудник = &Сотрудник | И КадровыеПеремещения.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояний.Увольнение)"; Запрос.УстановитьПараметр("Сотрудник", Сотрудник); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Если Выборка.Следующий() Тогда Возврат Истина; КонецЕсли; Возврат Ложь; КонецФункции Функция СотрудникНеПринятНаРаботу(Сотрудник) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриёмНаРаботу.Ссылка КАК Ссылка |ИЗ | Документ.ПриёмНаРаботу КАК ПриёмНаРаботу |ГДЕ | ПриёмНаРаботу.Сотрудник = &Сотрудник"; Запрос.УстановитьПараметр("Сотрудник", Сотрудник); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Если Выборка.Следующий() Тогда Возврат Истина; КонецЕсли; Возврат Ложь; КонецФункции Процедура ОбработкаПроведения(Отказ, РежимПроведения) //Проверка Если СотрудникУволен(Сотрудник) Тогда Сообщить("Документ нельзя провести! Данный сотрудник был уволен!"); Отказ = Истина; Возврат; КонецЕсли; //Проверка Если СотрудникНеПринятНаРаботу(Сотрудник) Тогда Сообщить("Документ не проведён! Сотрудник ещё не был принят на работу!"); Отказ = Ложь; Возврат; КонецЕсли; // регистр КадровыеПеремещения Движения.КадровыеПеремещения.Записывать = Истина; Движения.КадровыеПеремещения.Очистить(); Движение = Движения.КадровыеПеремещения.Добавить(); Движение.Период = Дата; Движение.Сотрудник = Сотрудник; Движение.Должность = Должность; Движение.Подразделение = Подразделение; Движение.Оклад = Оклад; Движение.ПричинаИзмененияСостояния = Перечисления.ПричиныИзмененияСостояний.Перемещение; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры |
|||
1
Михаил Козлов
29.10.21
✎
12:57
|
В функции СотрудникНеПринятНаРаботу вроде наоборот нужно возвращать?
|
|||
2
Волшебник
модератор
29.10.21
✎
12:57
|
функция СотрудникНеПринятНаРаботу возвращает инвертированное значение для своего названия
|
|||
3
Pprog151713
29.10.21
✎
12:59
|
СотрудникНеПринятНаРаботу(Сотрудник) Так это принят сотрудник. :)
|
|||
4
Бурундук
29.10.21
✎
13:01
|
Мне нужно убедиться, что сотрудник был принят на работу, и если нет, то отказать в проведении документа Кадровые Перемещения.
Так что мне нужно написать в коде в таком случае? |
|||
5
lubitelxml
29.10.21
✎
13:05
|
Функция СотрудникНеПринятНаРаботу(Сотрудник)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриёмНаРаботу.Ссылка КАК Ссылка |ИЗ | Документ.ПриёмНаРаботу КАК ПриёмНаРаботу |ГДЕ ПриёмНаРаботу.Проведен | И ПриёмНаРаботу.Сотрудник = &Сотрудник"; Запрос.УстановитьПараметр("Сотрудник", Сотрудник); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Если Выборка.Следующий() Тогда Возврат ЛОЖЬ; КонецЕсли; Возврат ИСТИНА; КонецФункции |
|||
6
lubitelxml
29.10.21
✎
13:06
|
а еще проверка наверное нужна что он числится в том подразделении, откуда его перемещают
|
|||
7
Базис
naïve
29.10.21
✎
13:08
|
Возможно, надо смотреть совсем другой регистр сведений.
|
|||
8
ГдеСобака Зарыта
29.10.21
✎
13:13
|
+(6) И что числится на момент перевода. Короче не документ нужно смотреть а регистр кадровой истории
|
|||
9
Бурундук
29.10.21
✎
13:17
|
Lubitelxml, СПАСИБО ВАМ ОГРОМНОЕ! Получилось! Да, вы правы, нужна ещё и проверка, что сотрудник числится в том подразделении, откуда его перемещают
|
|||
10
2S
29.10.21
✎
13:19
|
||||
11
Бурундук
29.10.21
✎
13:24
|
2S, Спасибо большое. Я только начала осваивать программирование 1С и думаю, мне это пригодится
|
|||
12
ГдеСобака Зарыта
29.10.21
✎
13:25
|
(10) Так у него ж не ЗУП а нетленка какая-то
|
|||
13
Бурундук
29.10.21
✎
13:31
|
ГдеСобакаЗакрыта, всмысле нетленка какая-то??
|
|||
14
lubitelxml
29.10.21
✎
13:33
|
(13) нетленка - не типовая 1с
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |