gifts2017

В помощь кадровикам, работающим на ЗиК 7.7

Опубликовал @lex alexeew (@lex) в раздел Программирование - Практика программирования

В помощь кадровикам, работающим на ЗиК 7.7 при оформлении документов прием на работу и кадровое перемещение

Всем известно, что работа со штатным расписанием в стандартных конфигурациях для кадровиков сплошное недоразумение - не видно, сколько должностей по ШР занято, без использования отчета Штатное расписание, можно легко запутаться при выборе подразделений (например: есть головное предприятие со своей структурой и филиалы, построенные по одному принципу с одинаковой структурой подразделений - 1Филиал: подразделения - Отдел продаж, маркетинг и 2Филиал: подразделения - Отдел продаж, маркетинг). Думаю, смысл понятен...

Данный код частично решает проблему:

Процедура ПриНачалеВыбораЗначения(Элемент,ФлагОбработки)
......
ИначеЕсли Элемент = "Должность" Тогда
СписокДолжностей=СоздатьОбъект("СписокЗначений");
Спр=СоздатьОбъект("Справочник.ШтатноеРасписание");
Сотруд = СоздатьОбъект("Справочник.Сотрудники");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
Если (Спр.Подразделение.ПолноеНаименование() = Подразделение.ПолноеНаименование()) Тогда
Если (Спр.СтавокВсего.Получить(Начало) > 0) Тогда
Сотруд.ВыбратьЭлементы();
Ставки = 0;
Пока Сотруд.ПолучитьЭлемент() = 1 Цикл
Если Сотруд.ЭтоГруппа() =1 Тогда
Продолжить;
КонецЕсли;
Если Сотруд.СостояниеФизлица.Получить(Начало) = Перечисление.СостояниеФизлица.СотрудникОсновной Тогда
Если Сотруд.Должность.Получить(Начало) = Спр.Должность Тогда
Ставки = Ставки+1;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если (Ставки >= Спр.СтавокВсего.Получить(Начало)) и (Спр.Должность <> ЗначениеПериодическогоРеквизитаНаНачало("Должность")) Тогда
Продолжить;
КонецЕсли;
СписокДолжностей.ДобавитьЗначение(Спр.Должность);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Должн = "";
Если СписокДолжностей.РазмерСписка() = 0 Тогда
Предупреждение("В данном подразделении нет вакансий!",60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
Если СписокДолжностей.ВыбратьЗначение(Должн,"Должности подразделения "+Подразделение.Наименование,,,2)=1 Тогда
СпрДолжн = СоздатьОбъект("Справочник.Должности");
СпрДолжн.НайтиПоКоду(Строка(Должн.Код));
Должность = СпрДолжн.ТекущийЭлемент();
КонецЕсли;
КонецЕсли;

КонецПроцедуры // ПриНачалеВыбораЗначения

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

 Замечаниям и предложениям по оптимизации буду только рад (как, впрочем, и плюсам)... :)

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа