Создание автоматизированной системы кадрового учета строительного предприятия
Принципы программирования в системе "1С: Предприятие": конфигуратор, синтакс-помощник, описание встроенного языка. Организация кадрового учета на предприятии, его документальное оформление. Автоматизация кадрового учета средствами системы программ "1С".
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 11.07.2011 |
Размер файла | 2,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Предупреждение("Не указано ФИО !");
Возврат 1;
ИначеЕсли Число(ДатаПриема) = 0 Тогда
Предупреждение("Не указана ДАТА ПРИЕМА");
Возврат 1;
ИначеЕсли Категория.Выбран()=0 Тогда
Предупреждение("Не указана КАТЕГОРИЯ");
Возврат 1;
ИначеЕсли Объект.Выбран()=0 Тогда
Предупреждение("Не указан ОБЪЕКТ");
Возврат 1;
ИначеЕсли (Должность.Выбран()=0) Тогда
Предупреждение("Не указана ДОЛЖНОСТЬ / СПЕЦИАЛЬНОСТЬ");
Возврат 1;
ИначеЕсли ГрафикРаботы.Выбран()=0 Тогда
Предупреждение("Не указан ГРАФИК РАБОТЫ");
Возврат 1;
ИначеЕсли (КодКатег<>1) И (КодКатег<>2) И (Объект=ОбъектИТР) Тогда
Предупреждение("При данной категории не может быть указан объект ИТР");
Возврат 1;
ИначеЕсли ((КодКатег=1) ИЛИ (КодКатег=2)) И (ДолжностьШтРасп.Выбран()=0) Тогда
Предупреждение("При данной категории должна быть выбрана должность из штатного расписания!");
Возврат 1;
ИначеЕсли (КодКатег<>1) И (КодКатег<>2) И (КодКатег<>3) И (Число(КонецКонтракта)=0) Тогда
Предупреждение("Не указан КОНЕЦ КОНТРАКТА");
Возврат 1;
ИначеЕсли (КодКатег<>1) И (КодКатег<>2) И (Разряд.Выбран()=0) Тогда
Предупреждение("При данной категории должен быть указан РАЗРЯД");
Возврат 1;
ИначеЕсли (КодКатег<>1) И (КодКатег<>2) И (Должность.Родитель<>ГруппаСпециальностей) Тогда
Предупреждение("При данной категории должна быть указана СПЕЦИАЛЬНОСТЬ, а не должность!");
Возврат 1;
ИначеЕсли (КодКатег<>5) И (ГрафикРаботы.Часов = 4) Тогда
Предупреждение("График работы 'Табель 4 часа' может быть только у совместителей");
Возврат 1;
ИначеЕсли (Число(КонецКонтракта)<>0) И (КонецКонтракта < ДатаПриема) Тогда
Предупреждение("Конец контракта должен быть больше дата приема!");
Возврат 1;
ИначеЕсли (ДолжностьШтРасп.Выбран()=1) И (Ставка = 0) Тогда
Предупреждение("Не указана СТАВКА");
Возврат 1;
ИначеЕсли (ДолжностьШтРасп.Выбран()=1) Тогда
Если БылаДолжностьШтРасп = ДолжностьШтРасп Тогда
Если (Ставка > ДолжностьШтРасп.Вакантно + БылаСтавка) Тогда
Предупреждение("Недостаточно вакансий в штатном расписании!");
Возврат 1;
КонецЕсли;
Иначе
Если (Ставка > ДолжностьШтРасп.Вакантно) Тогда
Предупреждение("Недостаточно вакансий в штатном расписании!");
Возврат 1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат 0;//ошибок нет
КонецФункции
//--------------------------------------------------------------------------------
Процедура Приказ()
Если ЕстьЛиОшибки()=1 Тогда
Возврат;
КонецЕсли;
//если требуется, то нужно назначить ТН новому сотруднику
Если Проведен()=0 Тогда
ТН = НовыйТН();
КонецЕсли;
Приказ = СоздатьОбъект("Таблица");
Приказ.ИсходнаяТаблица("Приказ");
Приказ.Вывести();
Приказ.Опции(0);//убрать сетку
Приказ.Показать("Приказ о приеме на работу");
КонецПроцедуры
//--------------------------------------------------------------------------------
Процедура ПриЗаписи()
Если ЕстьЛиОшибки()=1 Тогда
статусВозврата(0);
Возврат;
КонецЕсли;
//при записи автором документа становится тек. пользователь
Автор = ИмяПользователя();
//отражаем изменения в спр. ДокументыПоФИО
ОбновитьДокументыПоФИО(ТекущийДокумент());
КонецПроцедуры
//--------------------------------------------------------------------------------
Процедура СменаКатегории()
Если Категория.Выбран()=0 Тогда
Форма.Оклад.Доступность(0);Форма.Оклад_надпись.Доступность(0);
Форма.Разряд.Доступность(0);Форма.Разряд_надпись.Доступность(0);
Форма.Ставка.Доступность(0);Форма.Ставка_надпись.Доступность(0);
Форма.Объект.Доступность(0); Форма.Объект_надпись.Доступность(0);
Форма.Должность.Доступность(0);Форма.Должность_надпись.Доступность(0);
Форма.ДолжностьШтРасп.Доступность(0);
Форма.КонецКонтракта.Доступность(0);Форма.КонецКонтракта_надпись.Доступность(0);
Форма.ИспытСрок.Доступность(0);Форма.ИспытСрок_надпись.Доступность(0);
Форма.ГрафикРаботы.Доступность(0); Форма.ГрафикРаботы_надпись.Доступность(0);
Возврат;
КонецЕсли;
КодКатег = Число(Категория.Код);
//Рук. и спец.+ лин.ИТР
Если (КодКатег = 1) ИЛИ (КодКатег = 2) Тогда
Объект = ОбъектИТР;
Разряд = 0;Тариф = 0;
Если Ставка = 0 Тогда
Ставка = 1;
КонецЕсли;
Форма.Оклад.Доступность(1);Форма.Оклад_надпись.Доступность(1);
Форма.Объект.Доступность(0);Форма.Объект_надпись.Доступность(0);
Форма.Разряд.Видимость(0);Форма.Разряд_надпись.Видимость(0);
Форма.Разряд.Доступность(0);Форма.Разряд_надпись.Доступность(0);
Форма.Ставка.Видимость(1);Форма.Ставка_надпись.Видимость(1);
Форма.Ставка.Доступность(1);Форма.Ставка_надпись.Доступность(1);
Форма.Должность.Видимость(0);
Форма.Должность.Доступность(0);
Форма.ДолжностьШтРасп.Видимость(1);
Форма.ДолжностьШтРасп.Доступность(1);Форма.Должность_надпись.Доступность(1);
Иначе
Оклад = 0; Ставка = 0;
Объект = ?(Объект=ОбъектИТР,0,Объект);
ДолжностьШтРасп = 0;
Форма.Оклад.Доступность(0);Форма.Оклад_надпись.Доступность(0);
Форма.Объект.Доступность(1);Форма.Объект_надпись.Доступность(1);
Форма.Разряд.Видимость(1);Форма.Разряд_надпись.Видимость(1);
Форма.Разряд.Доступность(1);Форма.Разряд_надпись.Доступность(1);
Форма.Ставка.Видимость(0);Форма.Ставка_надпись.Видимость(0);
Форма.Ставка.Доступность(0);Форма.Ставка_надпись.Доступность(0);
Форма.ДолжностьШтРасп.Видимость(0);
Форма.ДолжностьШтРасп.Доступность(0);
Форма.Должность.Видимость(1);
Форма.Должность.Доступность(1);Форма.Должность_надпись.Доступность(1);
КонецЕсли;
//рук.и спец. + лин. ИТР + пост. раб.
Если (КодКатег = 1) ИЛИ (КодКатег = 2) ИЛИ (КодКатег = 3) Тогда
КонецКонтракта = 0;
Форма.КонецКонтракта.Доступность(0);Форма.КонецКонтракта_надпись.Доступность(0);
Форма.ИспытСрок.Доступность(1);Форма.ИспытСрок_надпись.Доступность(1);
Иначе
ИспытСрок = 0;
Форма.КонецКонтракта.Доступность(1);Форма.КонецКонтракта_надпись.Доступность(1);
Форма.ИспытСрок.Доступность(0);Форма.ИспытСрок_надпись.Доступность(0);
КонецЕсли;
//совместители
Если КодКатег = 5 Тогда
ГрафикРаботы = ПолучитьГрафикРаботы(4);
Форма.ГрафикРаботы.Доступность(0); Форма.ГрафикРаботы_надпись.Доступность(0);
Иначе
Форма.ГрафикРаботы.Доступность(1);Форма.ГрафикРаботы_надпись.Доступность(1);
КонецЕсли;
КонецПроцедуры
//------------------------------------------------------------------------
Процедура ВводНового()
ГрафикРаботы = ПолучитьГрафикРаботы(8);
Автор = ИмяПользователя();
КонецПроцедуры
//---------------------------------------------------------------------
Процедура ВыборДолжностиШтРасп()
Должность = ДолжностьШтРасп.Должность;
Если Оклад = 0 Тогда
Оклад = ДолжностьШтРасп.Оклад;
Иначе
//есть какой-то оклад
Если Оклад <> ДолжностьШтРасп.Оклад Тогда
Если Вопрос("Поменять оклад согласно штатному расписанию?","Да+Нет") = "Да" Тогда
Оклад = ДолжностьШтРасп.Оклад;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//------------------------------------------------------------------------
УстТариф();
СменаКатегории();
ПриЗаписиПерепроводить(1);
Документ «Кадровое перемещение»
//--------------------------------------------------------------------------------
Функция ЕстьЛиОшибки()
ДокПеремещ = СоздатьОбъект("Документ.КадровоеПеремещение");
Попытка
ДокПеремещ.НайтиДокумент(ТекущийДокумент());
БылаСтавка = ДокПеремещ.Ставка;
БылаДолжностьШтРасп = ДокПеремещ.ДолжностьШтРасп;
Исключение
//Документ только создается и еще не записан
КонецПопытки;
КодКатег = Число(Категория.Код);
Если Сотрудник.Выбран() = 0 Тогда
Предупреждение("Не указан СОТРУДНИК");
Возврат 1;
ИначеЕсли Число(Начало) = 0 Тогда
Предупреждение("Не указана ДАТА ПЕРЕМЕЩЕНИЯ");
Возврат 1;
ИначеЕсли Категория.Выбран()=0 Тогда
Предупреждение("Не указана КАТЕГОРИЯ");
Возврат 1;
ИначеЕсли Объект.Выбран()=0 Тогда
Предупреждение("Не указан ОБЪЕКТ");
Возврат 1;
ИначеЕсли (Должность.Выбран()=0) Тогда
Предупреждение("Не указана ДОЛЖНОСТЬ / СПЕЦИАЛЬНОСТЬ");
Возврат 1;
ИначеЕсли ГрафикРаботы.Выбран()=0 Тогда
Предупреждение("Не указан ГРАФИК РАБОТЫ");
Возврат 1;
ИначеЕсли (КодКатег<>1) И (КодКатег<>2) И (КодКатег<>3) И (Число(КонецКонтракта)=0) Тогда
Предупреждение("Не указан КОНЕЦ КОНТРАКТА");
Возврат 1;
ИначеЕсли (КодКатег<>1) И (КодКатег<>2) И (Объект=ОбъектИТР) Тогда
Предупреждение("При данной категории не может быть указан объект ИТР");
Возврат 1;
ИначеЕсли ((КодКатег=1) ИЛИ (КодКатег=2)) И (ДолжностьШтРасп.Выбран()=0) Тогда
Предупреждение("При данной категории должна быть выбрана должность из штатного расписания!");
Возврат 1;
ИначеЕсли (КодКатег<>1) И (КодКатег<>2) И (Разряд.Выбран()=0) Тогда
Предупреждение("При данной категории должен быть указан РАЗРЯД");
Возврат 1;
ИначеЕсли (КодКатег<>1) И (КодКатег<>2) И (Должность.Родитель<>ГруппаСпециальностей) Тогда
Предупреждение("При данной категории должна быть указана СПЕЦИАЛЬНОСТЬ, а не должность!");
Возврат 1;
ИначеЕсли (КодКатег<>5) И (ГрафикРаботы.Часов = 4) Тогда
Предупреждение("График работы 'Табель 4 час' может быть только у совместителей");
Возврат 1;
ИначеЕсли (Число(КонецКонтракта) <> 0) И (КонецКонтракта < Сотрудник.КонецКонтракта.Получить(Начало-1)) Тогда
Предупреждение("Новый КОНЕЦ КОНТРАКТА не может быть меньше старого!");
Возврат 1;
ИначеЕсли (ДолжностьШтРасп.Выбран()=1) И (Ставка = 0) Тогда
Предупреждение("Не указана СТАВКА");
Возврат 1;
ИначеЕсли (ДолжностьШтРасп.Выбран()=1) Тогда
БылаДолжностьШтРасп_сотр = Сотрудник.ДолжностьШтРасп.Получить(Начало-1);
БылаСтавка_сотр = Сотрудник.Ставка.Получить(Начало-1);
Если БылаДолжностьШтРасп_сотр = ДолжностьШтРасп Тогда
Если (Ставка > ДолжностьШтРасп.Вакантно + БылаСтавка_сотр) Тогда
Предупреждение("Недостаточно вакансий в штатном расписании!");
Возврат 1;
КонецЕсли;
Иначе
Если (Ставка > ДолжностьШтРасп.Вакантно) Тогда
Предупреждение("Недостаточно вакансий в штатном расписании!");
Возврат 1;
КонецЕсли;
КонецЕсли;
ИначеЕсли (СокрЛП(Основание) = "") Тогда
Предупреждение("Не указано ОСНОВАНИЕ");
Возврат 1;
КонецЕсли;
Возврат 0;//ошибок нет
КонецФункции
//--------------------------------------------------------------------------------
Процедура УстТариф()
Тариф = ЧислоВОтчет(?(Разряд.Выбран()=1,Разряд.Тариф.Получить(ДатаДок),0));
КонецПроцедуры
//--------------------------------------------------------------------------------
Процедура Приказ()
Если ЕстьЛиОшибки()=1 Тогда
Возврат;
КонецЕсли;
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьДату(Начало-1);
СпрСотр.НайтиЭлемент(Сотрудник);
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Приказ");
Таб.Вывести();
Таб.Опции(0);//убрать сетку
Таб.Показать("Кадровое перемещение")
КонецПроцедуры
//--------------------------------------------------------------------------------
Процедура ВводНового()
Автор = ИмяПользователя();
КонецПроцедуры
//--------------------------------------------------------------------------------
Процедура ПриЗаписи()
Если ЕстьЛиОшибки()=1 Тогда
статусВозврата(0);
КонецЕсли;
Автор = ИмяПользователя();
//отражаем изменения в спр. ДокументыПоФИО
ОбновитьДокументыПоФИО(ТекущийДокумент());
КонецПроцедуры
//--------------------------------------------------------------------------------
Процедура СменаКатегории()
Если Категория.Выбран() = 0 Тогда
Форма.Оклад.Доступность(0);
Форма.Объект.Доступность(0);
Форма.Разряд.Доступность(0);
Форма.Ставка.Доступность(0);
Форма.Должность.Доступность(0);
Форма.ДолжностьШтРасп.Доступность(0);
Форма.КонецКонтракта.Доступность(0);
Форма.ГрафикРаботы.Доступность(0);
КонецЕсли;
КодКатег = Число(Категория.Код);
//Рук. и спец.+ лин.ИТР
Если (КодКатег = 1) ИЛИ (КодКатег = 2) Тогда
Объект = ОбъектИТР;
Разряд = 0;Тариф = 0;
Если Ставка = 0 Тогда
Ставка = 1;
КонецЕсли;
Форма.Оклад.Доступность(1);
Форма.Объект.Доступность(0);
Форма.Разряд.Доступность(0);
Форма.Ставка.Доступность(1);
Форма.Должность.Видимость(0);
Форма.Должность.Доступность(0);
Форма.ДолжностьШтРасп.Видимость(1);
Форма.ДолжностьШтРасп.Доступность(1);
Иначе
Оклад = 0;
ДолжностьШтРасп = 0;
Ставка = 0;
Объект = ?(Объект=ОбъектИТР,0,Объект);
Форма.Оклад.Доступность(0);
Форма.Объект.Доступность(1);
Форма.Разряд.Доступность(1);
Форма.Ставка.Доступность(0);
Форма.ДолжностьШтРасп.Видимость(0);
Форма.ДолжностьШтРасп.Доступность(0);
Форма.Должность.Видимость(1);
Форма.Должность.Доступность(1);
КонецЕсли;
//рук.и спец. + лин. ИТР + пост. раб.
Если (КодКатег = 1) ИЛИ (КодКатег = 2) ИЛИ (КодКатег = 3) Тогда
КонецКонтракта = 0;
Форма.КонецКонтракта.Доступность(0);
Иначе
ИспытСрок = 0;
Форма.КонецКонтракта.Доступность(1);
КонецЕсли;
//совместители
Если КодКатег = 5 Тогда
ГрафикРаботы = ПолучитьГрафикРаботы(4);
Форма.ГрафикРаботы.Доступность(0);
Иначе
Форма.ГрафикРаботы.Доступность(1);
КонецЕсли;
Форма.Обновить();
КонецПроцедуры
//--------------------------------------------------------------------------------
Процедура Заполнить()
Если Число(Начало) <> 0 Тогда
Категория= Сотрудник.Категория.Получить (Начало-1);
Объект= Сотрудник.Объект.Получить (Начало-1);
Оклад= Сотрудник.Оклад.Получить (Начало-1);
Должность= Сотрудник.Должность.Получить (Начало-1);
ДолжностьШтРасп= Сотрудник.ДолжностьШтРасп.Получить (Начало-1);
Разряд= Сотрудник.Разряд.Получить (Начало-1);
Ставка= Сотрудник.Ставка.Получить (Начало-1);
ГрафикРаботы= Сотрудник.ГрафикРаботы.Получить (Начало-1);
КонецКонтракта= Сотрудник.КонецКонтракта.Получить (Начало-1);
УстТариф();
СменаКатегории();
КонецЕсли;
КонецПроцедуры
//--------------------------------------------------------------------------------
Процедура СменитьДату()
// при смене даты данные о прежнем месте работы заполняются
//именно на эту дату, т.е. где сотрудник в тот момент работал
Заполнить();
КонецПроцедуры
//--------------------------------------------------------------------------------
Процедура ПриВыбореСотра()
//при выборе сотрудника заполняем на него прежнее место работы
//и теми же данными новое место работы
Заполнить();
КонецПроцедуры
//------------------------------------------------------------------------
Процедура ВыборДолжностиШтРасп()
Должность = ДолжностьШтРасп.Должность;
Если Оклад = 0 Тогда
Оклад = ДолжностьШтРасп.Оклад;
Иначе
//есть какой-то оклад
Если Оклад <> ДолжностьШтРасп.Оклад Тогда
Если Вопрос("Поменять оклад согласно штатному расписанию?","Да+Нет") = "Да" Тогда
Оклад = ДолжностьШтРасп.Оклад;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//------------------------------------------------------------------------
ПриЗаписиПерепроводить(1);
СменаКатегории();
УстТариф();
Документ «Приказ об увольнении»
Функция ЕстьЛиОшибки()
Если Сотрудник.Выбран() = 0 Тогда
Предупреждение("Не указан СОТРУДНИК");
Возврат 1;
КонецЕсли;
КодКатег = Число(Сотрудник.Категория.Получить(ДатаУвольнения).Код);
Если Число(ДатаУвольнения) = 0 Тогда
Предупреждение("Не указана ДАТА УВОЛЬНЕНИЯ");
Возврат 1;
ИначеЕсли ДатаУвольнения < Сотрудник.ДатаПриема Тогда
Предупреждение("ДАТА УВОЛЬНЕНИЯ должна быть больше даты приема");
Возврат 1;
ИначеЕсли Основание.Выбран() = 0 Тогда
Предупреждение("Не указано ОСНОВАНИЕ");
Возврат 1;
ИначеЕсли (Компенсация <> 0) И (НеОтработано <> 0) Тогда
Предупреждение("Не может быть одновременно указана 'Компенсация' и 'Не отработано'!");
Возврат 1;
КонецЕсли;
Возврат 0;//ошибок нет
КонецФункции
//------------------------------------------------------------------------
Процедура ПечатьФормыТ8()
Если ЕстьЛиОшибки()=1 Тогда
Возврат;
КонецЕсли;
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьДату(ДатаУвольнения);
СпрСотр.НайтиЭлемент(Сотрудник);
ФормаТ8 = СоздатьОбъект("Таблица");
ФормаТ8.ИсходнаяТаблица("Приказ");
ФормаТ8.Вывести();
ФормаТ8.Опции(0);//убрать сетку
ФормаТ8.Показать("Приказ об увольнении");
КонецПроцедуры
//------------------------------------------------------------------------
Процедура ПриЗаписи()
Если ЕстьЛиОшибки()=1 Тогда
статусВозврата(0);
КонецЕсли;
Автор = ИмяПользователя();
//отражаем изменения в спр. ДокументыПоФИО
ОбновитьДокументыПоФИО(ТекущийДокумент());
КонецПроцедуры
//------------------------------------------------------------------------
Процедура ВводНового()
Автор = ИмяПользователя();
КонецПроцедуры
Документ «Приказ по отпуску»
Перем ПоШестидневке; //1 если отпуск по шестидневке
Перем ПоКалендДням;//1 если отпуск по календ. дням
//------------------------------------------------------------------------
Процедура УстРабГод()
КонРабГода = ДобавитьМесяц(НачРабГода,12)-1;
КонецПроцедуры
//------------------------------------------------------------------------
Функция ЕстьЛиОшибки()
//возвращает 1, если есть ошибки, иначе 0
Если Сотрудник.Выбран()=0 Тогда
Предупреждение("Не указан сотрудник!");
Возврат 1;
КонецЕсли;
Если (ПустоеЗначение(Начало) = 1) ИЛИ (ПустоеЗначение(Окончание) = 1) Тогда
Предупреждение("Не указана дата начала или окончания отпуска!");
Возврат 1;
КонецЕсли;
Если (Сотрудник.Родитель=Уволенные) И (Сотрудник.ДатаУвольнения < Окончание) Тогда
Сообщить("Сотрудник " + Сотрудник + " уволен " + Сотрудник.ДатаУвольнения + ", проверьте даты!", "!");
Возврат 1;
КонецЕсли;
Если Сотрудник.ДатаПриема > Начало Тогда
Сообщить("Сотрудник " + Сотрудник + " принят " + Сотрудник.ДатаПриема + ", проверьте даты!", "!");
Возврат 1;
КонецЕсли;
Если Окончание < Начало Тогда
Сообщить("Дата окончания должна быть больше даты начала!");
Возврат 1;
КонецЕсли;
Если ТипОтпуска = Перечисление.ТипОтпуска.Очередной Тогда
Если (ПустоеЗначение(НачРабГода) = 1) ИЛИ (ПустоеЗначение(КонРабГода) = 1) Тогда
Предупреждение("Не указан рабочий год, за который предоставляется отпуска!");
Возврат 1;
КонецЕсли;
КонецЕсли;
Если СокрЛП(Основание) = "" Тогда
Предупреждение("Не указано основание отпуска!");
Возврат 1;
КонецЕсли;
Если (ДнейДополнительного<>0) И (СокрЛП(ПричинаДоп) = "") Тогда
Предупреждение("Не указано основание дополнительного отпуска!");
Возврат 1;
КонецЕсли;
Возврат 0;//ошибок нет
КонецФункции
//------------------------------------------------------------------------
Процедура СменаТипаОтпуска();
Если ТипОтпуска = Перечисление.ТипОтпуска.Очередной Тогда
Форма.НадпРабГод.Видимость(1);
Форма.НачРабГода.Видимость(1);
Форма.КонРабГода.Видимость(1);
ТипРасчета = Перечисление.ТипРасчетаОтпуска.ПоШестидневке;
Форма.ТипРасчета.Доступность(1);
Иначе
Форма.НадпРабГод.Видимость(0);
Форма.НачРабГода.Видимость(0);
Форма.КонРабГода.Видимость(0);
ТипРасчета = Перечисление.ТипРасчетаОтпуска.ПоКалендарнымДням;
Форма.ТипРасчета.Доступность(0);
КонецЕсли
КонецПроцедуры
//------------------------------------------------------------------------
Процедура РасчетДнейОтпуска()
Если ТипРасчета = Перечисление.ТипРасчетаОтпуска.ПоШестидневке Тогда
Календ = Календари.УчетСуббот;
Иначе
Календ = Календари.КалендДни;
КонецЕсли;
Если (Число(Начало)<>0) И
((ДнейОтпуска <> 0) Или (ДнейДополнительного <> 0)) Тогда
Окончание = Календ.ПолучитьДату(Начало,
ДнейОтпуска+ДнейДополнительного);
КонецЕсли;
КонецПроцедуры
//------------------------------------------------------------------------
Процедура ВводНового()
ТипРасчета = Перечисление.ТипРасчетаОтпуска.ПоШестидневке;
ТипОтпуска = Перечисление.ТипОтпуска.Очередной;
СменаТипаОтпуска();
Автор = ИмяПользователя();
КонецПроцедуры
//------------------------------------------------------------------------
Процедура ПриЗаписи()
Если ЕстьЛиОшибки() = 1 Тогда
статусВозврата(0);
КонецЕсли;
Автор = ИмяПользователя();
//отражаем изменения в спр. ДокументыПоФИО
ОбновитьДокументыПоФИО(ТекущийДокумент());
КонецПроцедуры
//------------------------------------------------------------------------
Процедура Приказ()
Если ЕстьЛиОшибки() = 1 Тогда
Возврат;
КонецЕсли;
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Приказ");
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьДату(ДатаДок);
СпрСотр.НайтиЭлемент(Сотрудник);
Таб.Вывести();
Таб.Опции(0);//убрать сетку
Таб.Показать();
КонецПроцедуры
//------------------------------------------------------------------------
Документ «Больничный лист»
//------------------------------------------------------------------------
Функция ЕстьЛиОшибки()
//возвращает 1, если есть ошибки, иначе 0
Если Сотрудник.Выбран()=0 Тогда
Предупреждение("Не выбран сотрудник!");
Возврат(1);
КонецЕсли;
Если ПустоеЗначение(Начало) = 1 Тогда
Предупреждение("Не указана дата начала!");
Возврат 1;
КонецЕсли;
Если ПустоеЗначение(Окончание) = 1 Тогда
Предупреждение("Не указана дата окончания!");
Возврат 1;
КонецЕсли;
Если (Сотрудник.Родитель = Уволенные) И (Сотрудник.ДатаУвольнения < Окончание) Тогда
Предупреждение("Сотрудник " + Сотрудник + " уволен " + Сотрудник.ДатаУвольнения + ", проверьте даты!", "!");
Возврат 1;
КонецЕсли;
Если Сотрудник.ДатаПриема > Начало Тогда
Предупреждение("Сотрудник " + Сотрудник + " принят " + Сотрудник.ДатаПриема + ", проверьте даты!", "!");
Возврат 1;
КонецЕсли;
Если Окончание < Начало Тогда
Предупреждение("Дата окончания должна быть больше даты начала!");
Возврат 1;
КонецЕсли;
Если ПроцентОплаты = 0 Тогда
Предупреждение("Не указан процент оплаты!");
Возврат 1;
КонецЕсли;
Возврат 0;//ошибок нет
КонецФункции
//------------------------------------------------------------------------
Процедура ВводНового()
Автор = ИмяПользователя();
КонецПроцедуры
//------------------------------------------------------------------------
Процедура ПриЗаписи()
Если ЕстьЛиОшибки() = 1 Тогда
статусВозврата(0);
КонецЕсли;
Автор = ИмяПользователя();
КонецПроцедуры
//------------------------------------------------------------------------
Процедура РассчитатьПроцент()
Если Сотрудник.Выбран()=0 Тогда
Предупреждение("Не указан сотрудник!");
Возврат;
КонецЕсли;
НепрСтаж = Сотрудник.КадровыеДанные.НепрСтаж;
Если Число(НепрСтаж)=0 Тогда
Предупреждение("У сотрудника в кадровых данных не указан непрерывный стаж!");
Возврат;
КонецЕсли;
ЧислоЛет = Цел((Начало - НепрСтаж)/365.25);
Если (ЧислоЛет >= 0) И (ЧислоЛет < 5) Тогда
ПроцентОплаты = 60;
ИначеЕсли (ЧислоЛет >= 5) И (ЧислоЛет < 8) Тогда
ПроцентОплаты = 80;
ИначеЕсли (ЧислоЛет >= 8) Тогда
ПроцентОплаты = 100;
Иначе
Предупреждение("Проверьте дату непрерывного стажа в кадровых данных сотрудника и дату начала больничного листа!");
Возврат;
КонецЕсли;
КонецПроцедуры
Мастер отчетов по документам
//*******************************************
Процедура ЗаполнитьСписокГраф()
СписокГраф.УдалитьВсе();
СпрСпр = СоздатьОбъект("Справочник.Справочники");
Атрибуты = СоздатьОбъект("Справочник.АтрибутыСпр");
Атрибуты.ПорядокКодов();
//справочник Сотрудники
СпрСпр.НайтиПоНаименованию("Сотрудники");
Атрибуты.ИспользоватьВладельца(СпрСпр.ТекущийЭлемент());
Атрибуты.ВыбратьЭлементы();
Пока Атрибуты.ПолучитьЭлемент()=1 Цикл
СписокГраф.ДобавитьЗначение(Атрибуты.Код, "Сотр." + Атрибуты.Наименование);
КонецЦикла;
//кадровые данные
СпрСпр.НайтиПоНаименованию("КадровыеДанные");
Атрибуты.ИспользоватьВладельца(СпрСпр.ТекущийЭлемент());
Атрибуты.ВыбратьЭлементы();
Пока Атрибуты.ПолучитьЭлемент()=1 Цикл
СписокГраф.ДобавитьЗначение(Атрибуты.Код, "КД." + Атрибуты.Наименование);
КонецЦикла;
СпрДок = СоздатьОбъект("Справочник.Документы");
Реквизиты = СоздатьОбъект("Справочник.РеквизитыДок");
Реквизиты.ПорядокКодов();
СпрДок.ВыбратьЭлементы();
Пока СпрДок.ПолучитьЭлемент()=1 Цикл
Реквизиты.ИспользоватьВладельца(СпрДок.ТекущийЭлемент());
Реквизиты.ВыбратьЭлементы();
Пока Реквизиты.ПолучитьЭлемент()=1 Цикл
СписокГраф.ДобавитьЗначение(Реквизиты.Код, СокрЛП(СпрДок.КраткоеИмя) + "." + СокрЛП(Реквизиты.Наименование));
КонецЦикла;
КонецЦикла;
//снять все пометки
Для Ном = 1 По СписокГраф.РазмерСписка() Цикл
СписокГраф.Пометка(Ном,0);
КонецЦикла;
КонецПроцедуры
//------------------------------------------------------------------------
Процедура ЗаполнитьСписокТиповДоков()
СпрДок = СоздатьОбъект("Справочник.Документы");
СпрДок.ВыбратьЭлементы();
Пока СпрДок.ПолучитьЭлемент()=1 Цикл
ТипыДоков.ДобавитьЗначение(СокрЛП(СпрДок.Наименование), СокрЛП(СпрДок.Представление));
КонецЦикла;
//установить всем пометку
Для НомТипа = 1 По ТипыДоков.РазмерСписка() Цикл
ТипыДоков.Пометка(НомТипа,1);
КонецЦикла;
КонецПроцедуры
//------------------------------------------------------------------------
Процедура Сформировать()
Запрос = 0;
Запрос = СоздатьОбъект("Запрос");
Таб = СоздатьОбъект("Таблица");
СпрДок = СоздатьОбъект("Справочник.Документы");
ТекстЗапроса = "
|Период с НачалоИнтервала по КонецИнтервала;
|
|Функция Колво = Счётчик();
|
|";
//---------------------------------------------------------------------------
//формирование списка документов для выборки
//документы в запросе должны быть перечислены через запятую.
//---------------------------------------------------------------------------
СтрТипыДоков = ""; ОчерТип = ""; СтрОчерТип = "";
Для НомТипа = 1 По ТипыДоков.РазмерСписка() Цикл
Если ТипыДоков.Пометка(НомТипа) = 1 Тогда
ТипыДоков.ПолучитьЗначение(НомТипа,СтрОчерТип);
ОчерТип = ТипыДоков.Получить(СтрОчерТип);
СтрТипыДоков = СтрТипыДоков + "Документ." + ОчерТип + ".ТекущийДокумент" + ",";
КонецЕсли;
КонецЦикла;
Если СтрТипыДоков = "" Тогда
Предупреждение("Укажите хотя бы один тип документов для выборки!");
Возврат;
Иначе
//удаляем последнюю запятую
СтрТипыДоков = Сред(СтрТипыДоков,1,СтрДлина(СтрТипыДоков)-1);
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "Док = " + СтрТипыДоков + ";";
ТекстЗапроса = ТекстЗапроса + "Группировка Док;";
Если Фл_Помеченные = 0 Тогда
ТекстЗапроса = ТекстЗапроса + "Обрабатывать НеПомеченныеНаУдаление;";
КонецЕсли;
Если Фл_Непроведенные = 0 Тогда
ТекстЗапроса = ТекстЗапроса + "ОбрабатыватьДокументы Проведенные;";
Иначе
ТекстЗапроса = ТекстЗапроса + "ОбрабатыватьДокументы Все;";
КонецЕсли;
Если ВыбрСотрудник.Выбран()=1 Тогда
//ТекстЗапроса = ТекстЗапроса + "Сотрудник = Док.Сотрудник;" + РазделительСтрок;
ТекстЗапроса = ТекстЗапроса + "Условие(Док.Сотрудник = ВыбрСотрудник);" + РазделительСтрок;
КонецЕсли;
//Сообщить(ТекстЗапроса);
//УстановитьТАна(РабочаяДата());
//---------------------------------------------------------------------------
Запрос.Выполнить(ТекстЗапроса);
//---------------------------------------------------------------------------
Сч = 0; Всего = Запрос.Колво;
Таб.ВывестиСекцию("Шапка");
//заголовок таблицы
Таб.ВывестиСекцию("Заголовки|НомерПП");
Таб.ПрисоединитьСекцию("Заголовки|ОснГрафы");
//заголовки дополнительных граф
Для Ном = 1 По СписокГраф.РазмерСписка() Цикл
Если СписокГраф.Пометка(Ном) = 1 Тогда
Графа = "";
СписокГраф.ПолучитьЗначение(Ном,Графа);
НазваниеРеквизита = Графа;
Таб.ПрисоединитьСекцию("Заголовки|Реквизит");
КонецЕсли;
КонецЦикла;
наДату = РабочаяДата();
//строки таблицы
Пока Запрос.Группировка("Док")=1 Цикл
Сч = Сч + 1;
Таб.ВывестиСекцию("Док|НомерПП");
СостояниеПроцесса(Сч,Всего,50);
Док = Запрос.Док;
Таб.ПрисоединитьСекцию("Док|ОснГрафы");
//дополнительные графы
Для Ном = 1 По СписокГраф.РазмерСписка() Цикл
Если СписокГраф.Пометка(Ном) = 1 Тогда
Графа = "";
СписокГраф.ПолучитьЗначение(Ном,Графа);
//---------------------------------------------------
Графа = СтрЗаменить(Графа,"Сотр.","Сотрудник.");
Графа = СтрЗаменить(Графа,"КД.","Сотрудник.КадровыеДанные.");
СпрДок.НайтиПоНаименованию(Док.Вид());
Графа = СтрЗаменить(Графа,СокрЛП(СпрДок.КраткоеИмя) + ".","");
//---------------------------------------------------
Попытка
Значение = ПолучитьСложныйАтрибут(Док,Графа,наДату);
Исключение
Значение = "";
КонецПопытки;
Таб.ПрисоединитьСекцию("Док|Реквизит");
КонецЕсли; //графа помечена
КонецЦикла;//по графам
КонецЦикла;
Таб.ВывестиСекцию("Подвал");
Таб.Показать();
КонецПроцедуры
//--------------------------------------------------------------------------
НачалоИнтервала = НачГода(РабочаяДата());
КонецИнтервала = КонГода(РабочаяДата());
ЗаполнитьСписокГраф();
ЗаполнитьСписокТиповДоков();
Фл_Помеченные = 1;
Фл_Непроведенные = 1;
ВыбрСотрудник.ВыборГруппы(0);
Справочник «Сотрудники»
Процедура УстТариф()
Тариф = Разряд.Тариф.Получить(РабочаяДата());
КонецПроцедуры
Процедура ПриОткрытии()
Форма.Заголовок(Наименование);
//изменение большинства реквизитов для обычного пользователя
//возможно только документом "Кадровое перемещение"
Если РаботаетАдмин = Да Тогда
//все доступно
Иначе
//работает кадровик
Форма.Наименование.Доступность(1);
Форма.Календарь.Доступность(0);
Форма.Категория.Доступность(0);
Форма.Должность.Доступность(0);
Форма.Объект.Доступность(0);
Форма.Разряд.Доступность(0);
Форма.Оклад.Доступность(0);
Форма.ДатаПриема.Доступность(0);
Форма.ДатаУвольнения.Доступность(0);
Форма.КонецКонтракта.Доступность(1);
КонецЕсли;
КонецПроцедуры
Процедура ВызватьКД()
Перем Конт;
ОткрытьФорму(КадровыеДанные.ТекущийЭлемент(),Конт,Форма.ТолькоПросмотр());
КонецПроцедуры
Тариф = Разряд.Тариф.Получить(РабочаяДата());
Функция УстановитьСотрудника()
Если ЭтоГруппа() = 1 Тогда
ТекСотр = "";
Иначе
ТекСотр = ТекущийЭлемент();
КонецЕсли;
КонецФункции
процедура ПриВыбореСтроки()
Если ЭтоГруппа()=1 Тогда
ИспользоватьРодителя(ТекущийЭлемент());
Иначе
Конт = 0;
ОткрытьФорму(ТекущийЭлемент(),Конт,-1);
КонецЕсли;
конецПроцедуры
Процедура ВызватьМастерСотрудников()
Конт = 0;
ОткрытьФорму("Отчет.МастерСотрудников",Конт);
КонецПроцедуры
Форма.ОбработкаВыбораСтроки(1);
Справочник «Кадровые данные»
Процедура ВызватьСправочник(Какой)
Конт = 0;
ОткрытьФорму("Справочник."+Какой+"#"+СокрЛП(Строка(Владелец.Код)),Конт);
КонецПроцедуры
//------------------------------------------------------------------------
Процедура ПриЗаписи()
Если (Число(ДокументДатаВыдачи)<>0) И (Число(ДатаРождения)<>0) Тогда
Если (Число(ДокументВид.Код)=1) ИЛИ (Число(ДокументВид.Код)=21) Тогда//паспорт и паспорт образца 1997 г.
Если ДатаГод(ДокументДатаВыдачи) - ДатаГод(ДатаРождения) < 14 Тогда
Предупреждение("Дата выдачи паспорта должна быть больше даты рождения не меньше, чем на 14 лет!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
СтрНомер = Строка(СтраховойНомерПФ);
ДлинаНомера = СтрДлина(СтрНомер);
Если СтрНомер = " - - " Тогда
Сообщить("Не указан страховой номер ПФ");
Иначе
//проверка страхового номера
Если (ДлинаНомера <> 14) Тогда
Предупреждение("В страховом номере должно быть 11 цифр, 2 дефиса и 1 пробел!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
//расчет контрольного числа
СтрНомерБезКЧ = Сред(СтрНомер,1,ДлинаНомера - 3); //без контр. числа и пробела
Позиция = СтрДлина(СтрНомерБезКЧ);
ДлинаНомераБезКЧ = СтрДлина(СтрНомерБезКЧ);
Сумма = 0; Вес = 1;
Пока Позиция <> 0 Цикл
ОчерСимв = Сред(СтрНомерБезКЧ,Позиция,1);
Если ОчерСимв="-" Тогда
Позиция = Позиция - 1;
Продолжить;
КонецЕсли;
Сумма = Сумма + Число(ОчерСимв) * Вес;
Позиция = Позиция - 1;
Вес = Вес + 1;
КонецЦикла;
Остаток = Сумма % 101;
КонтрЧисло = ?(Остаток=100,"00",Строка(Остаток));
Если Число(Сред(СтрНомер, ДлинаНомера - 1)) <> Число(КонтрЧисло) Тогда
Предупреждение("Неверный страховой номер! Не сходится контрольное число!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//------------------------------------------------------------------------
Процедура ПриВыбореЗакладки(НомЗакл, ЗначЗакл)
Если ЗначЗакл = "Основные данные" Тогда
Форма.ИспользоватьСлой("ОсновныеДанные",1);
Форма.ИспользоватьСлой("ДругиеДанные",0);
ИначеЕсли ЗначЗакл = "Другие данные" Тогда
Форма.ИспользоватьСлой("ОсновныеДанные",0);
Форма.ИспользоватьСлой("ДругиеДанные",1);
КонецЕсли;
КонецПроцедуры
//------------------------------------------------------------------------
Форма.ИспользоватьЗакладки(1);
Форма.Закладки.ДобавитьЗначение("Основные данные");
Форма.Закладки.ДобавитьЗначение("Другие данные");
Форма.ИспользоватьСлой("Постоянный",1);
Форма.ИспользоватьСлой("ОсновныеДанные",1);
Форма.ИспользоватьСлой("ДругиеДанные",0);
Форма.Заголовок(Владелец.Наименование);
Справочник «Штатное расписание»
Перем Уровень,Режим;
// массив, определяющий нужно ли выводить вертикальную черту соответствующего уровня вложенности
Перем Уровни[10]; // не более 10-ти уровней вложенности в справочнике подразделений!
Перем ШР;
Перем Таб;
Перем ВсегоЗанято;
Перем ВсегоВакантно;
Перем ВсегоСтавок;
Перем Процент;
//------------------------------------------------------------------------
Процедура ПриЗаписи()
Если Занято <> 0 Тогда
Если Ставки < Занято Тогда
предупреждение("По этой должности работают сотрудники!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;
Вакантно = Ставки - Занято;
Наименование = Должность.Наименование;
КонецПроцедуры
//------------------------------------------------------------------------
Процедура ВывестиПодразделение(Элемент,Последний)
// вывод заглавия подразделения
//
// если это первый уровень...
Если Уровень=1 Тогда
//...выведем Г-образную линию...
Если Последний=1 Тогда
Таб.ВывестиСекцию("DivHook|Lines");
// ...или Т-образную линию
Иначе
Таб.ВывестиСекцию("DivTSect|Lines");
КонецЕсли;
Иначе
// для первого уровня выведем линию или пустоту
Если Уровни[1]=1 Тогда
Таб.ВывестиСекцию("DivLine|Lines");
Иначе
Таб.ВывестиСекцию("DivEmpty|Lines");
КонецЕсли;
// для остальных уровней присоединим линию или пустоту
Для Сч=2 По Уровень-1 Цикл
Если Уровни[Сч]=1 Тогда
Таб.ПрисоединитьСекцию("DivLine|Lines");
Иначе
Таб.ПрисоединитьСекцию("DivEmpty|Lines");
КонецЕсли;
КонецЦикла;
Если Последний=1 Тогда
Таб.ПрисоединитьСекцию("DivHook|Lines");
Иначе
Таб.ПрисоединитьСекцию("DivTSect|Lines");
КонецЕсли;
КонецЕсли;
// только теперь - присоединим секцию заглавия
// только теперь - присоединим секцию группы
Название = Элемент.Наименование;
Начальник = Элемент.Начальник.Наименование;
Таб.ПрисоединитьСекцию("Division<|Body");
ШР.ИспользоватьВладельца(Элемент);
ШР.ВыбратьЭлементы();
ИтогоСтавок = 0;
ИтогоЗанято = 0;
ИтогоВакантно = 0;
Пока ШР.ПолучитьЭлемент()=1 Цикл
Если (ШР.Ставки <> 0) и (((Режим = "Вакансии") И (ШР.Вакантно <> 0)) ИЛИ (Режим = "Структура")) Тогда
ИтогоСтавок = ИтогоСтавок+ШР.Ставки;
ИтогоЗанято = ИтогоЗанято+ШР.Занято;
ИтогоВакантно = ИтогоВакантно+ШР.Вакантно;
// ------------------------------------------------------
// вывод строки штатного расписания
Если Уровень=1 Тогда
Если Последний=1 Тогда
Таб.ВывестиСекцию("Empty|Lines");
Иначе
Таб.ВывестиСекцию("Line|Lines");
КонецЕсли;
Иначе
// для первого уровня выведем линию или пустоту
Если Уровни[1]=1 Тогда
Таб.ВывестиСекцию("Line|Lines");
Иначе
Таб.ВывестиСекцию("Empty|Lines");
КонецЕсли;
// для остальных уровней присоединим линию или пустоту
Для Сч=2 По Уровень-1 Цикл
Если Уровни[Сч]=1 Тогда
Таб.ПрисоединитьСекцию("Line|Lines");
Иначе
Таб.ПрисоединитьСекцию("Empty|Lines");
КонецЕсли;
КонецЦикла;
Если Последний=1 Тогда
Таб.ПрисоединитьСекцию("Empty|Lines");
Иначе
Таб.ПрисоединитьСекцию("Line|Lines");
КонецЕсли;
КонецЕсли;
// только теперь - присоединим секцию строки штатного расписания
Таб.ПрисоединитьСекцию("EmplKind|Body");
КонецЕсли
КонецЦикла;
ВсегоЗанято = ВсегоЗанято+ИтогоЗанято;
ВсегоВакантно = ВсегоВакантно+ИтогоВакантно;
ВсегоСтавок = ВсегоСтавок+ИтогоСтавок;
// ------------------------------------------------------
// вывод подвала подразделения
Если Уровень=1 Тогда
Если Последний=1 Тогда
Таб.ВывестиСекцию("Empty|Lines");
Иначе
Таб.ВывестиСекцию("Line|Lines");
КонецЕсли;
Иначе
// для первого уровня выведем линию или пустоту
Если Уровни[1]=1 Тогда
Таб.ВывестиСекцию("Line|Lines");
Иначе
Таб.ВывестиСекцию("Empty|Lines");
КонецЕсли;
// для остальных уровней присоединим линию или пустоту
Для Сч=2 По Уровень-1 Цикл
Если Уровни[Сч]=1 Тогда
Таб.ПрисоединитьСекцию("Line|Lines");
Иначе
Таб.ПрисоединитьСекцию("Empty|Lines");
КонецЕсли;
КонецЦикла;
Если Последний=1 Тогда
Таб.ПрисоединитьСекцию("Empty|Lines");
Иначе
Таб.ПрисоединитьСекцию("Line|Lines");
КонецЕсли;
КонецЕсли;
// только теперь - присоединим секцию подвала
Таб.ПрисоединитьСекцию("Division>|Body");
КонецПроцедуры
//------------------------------------------------------------------------
Процедура ВывестиГруппу(Группа,Последний)
// каждый раз локально!!! создаем справочник подразделений
Подр = СоздатьОбъект("Справочник.Подразделения");
// для проверки наличия следующего элемента в выборке справочника подразделений
// создадим еще один объект!
ПровПодр = СоздатьОбъект("Справочник.Подразделения");
// если это первый уровень...
Если Уровень=1 Тогда
//...выведем Г-образную линию...
Если Последний=1 Тогда
Таб.ВывестиСекцию("GrHook|Lines");
// ...или Т-образную линию
Иначе
Таб.ВывестиСекцию("GrTSect|Lines");
КонецЕсли;
Иначе
// для первого уровня выведем линию или пустоту
Если Уровни[1]=1 Тогда
Таб.ВывестиСекцию("GrLine|Lines");
Иначе
Таб.ВывестиСекцию("GrEmpty|Lines");
КонецЕсли;
// для остальных уровней присоединим линию или пустоту
Для Сч=2 По Уровень-1 Цикл
Если Уровни[Сч]=1 Тогда
Таб.ПрисоединитьСекцию("GrLine|Lines");
Иначе
Таб.ПрисоединитьСекцию("GrEmpty|Lines");
КонецЕсли;
КонецЦикла;
Если Последний=1 Тогда
Таб.ПрисоединитьСекцию("GrHook|Lines");
Иначе
Таб.ПрисоединитьСекцию("GrTSect|Lines");
КонецЕсли;
КонецЕсли;
// только теперь - присоединим секцию группы
Название = Группа.Наименование;
Начальник = Группа.Начальник.Наименование;
Таб.ПрисоединитьСекцию("Group|Body");
Уровень = Уровень+1;
Подр.ВключатьПодчиненные(0);
Подр.ИспользоватьРодителя(Группа);
Подр.ПорядокНаименований();
Подр.ВыбратьЭлементы();
ПровПодр.ВключатьПодчиненные(0);
ПровПодр.ИспользоватьРодителя(Группа);
ПровПодр.ПорядокНаименований();
ПровПодр.ВыбратьЭлементы();
Начало = 1;
Пока Подр.ПолучитьЭлемент()=1 Цикл
Если Начало=1 Тогда
А=ПровПодр.ПолучитьЭлемент();
Начало=0;
КонецЕсли;
Если ПровПодр.ПолучитьЭлемент()=1 Тогда
Уровни[Уровень] = 1;
Последний = 0;
Иначе
Уровни[Уровень] = 0;
Последний = 1;
КонецЕсли;
Если Подр.ЭтоГруппа()=1 Тогда
ВывестиГруппу(Подр.ТекущийЭлемент(),Последний);
Иначе
ВывестиПодразделение(Подр.ТекущийЭлемент(),Последний);
КонецЕсли;
КонецЦикла;
Уровень = Уровень-1;
КонецПроцедуры
//------------------------------------------------------------------------
Процедура Печатать(Рж)
Режим = Рж;
// сначала заполним массив уровней нулями
Уровень = 0;
Сч=1;
Пока Сч<=10 Цикл
Уровни[Сч]=0;
Сч=Сч+1;
КонецЦикла;
// справочник подразделений
Подр = СоздатьОбъект("Справочник.Подразделения");
// для проверки наличия следующего элемента в выборке справочника подразделений
// создадим еще один объект!
ПровПодр = СоздатьОбъект("Справочник.Подразделения");
ШР = СоздатьОбъект("Справочник.ШтатноеРасписание");
ШР.ИспользоватьДату(РабочаяДата());
Таб = СоздатьОбъект("Таблица");
Подр.ВключатьПодчиненные(0);
Подр.ВыбратьЭлементы();
ПровПодр.ВключатьПодчиненные(0);
ПровПодр.ВыбратьЭлементы();
Уровень = 1;
Таб.ВывестиСекцию("Header");
Начало=1;
ВсегоСтавок = 0;
ВсегоЗанято = 0;
ВсегоВакантно = 0;
Пока Подр.ПолучитьЭлемент()=1 Цикл
Если Начало = 1 Тогда
А=ПровПодр.ПолучитьЭлемент();
Начало=0;
КонецЕсли;
Если ПровПодр.ПолучитьЭлемент()=1 Тогда
Уровни[1] = 1;
Последний = 0;
Иначе
Уровни[1] = 0;
Последний = 1;
КонецЕсли;
Если Подр.ЭтоГруппа()=1 Тогда
ВывестиГруппу(Подр.ТекущийЭлемент(),Последний);
Иначе
ВывестиПодразделение(Подр.ТекущийЭлемент(),Последний);
КонецЕсли;
КонецЦикла;
Если (Режим = "Структура") и (ВсегоСтавок>0) Тогда
Процент = Формат(ВсегоЗанято/ВсегоСтавок*100,"Ч3");
Таб.ВывестиСекцию("Footer");
КонецЕсли;
// Вывод заполненной формы
Таб.Опции(0,0,0,0, "PO0005");
Таб.ТолькоПросмотр(1);
Если Режим = "Структура" Тогда
Таб.Показать("Структура штатного расписания",);
Иначе
Таб.Показать("Вакансии штатного расписания",);
КонецЕсли;
КонецПроцедуры
Процедура ПрописатьНаименование()
Наименование = Должность.Наименование+" ("+Владелец.Наименование+")";
КонецПроцедуры
Процедура ПриЗаписи()
Вакантно = Ставки - Занято;
КонецПроцедуры
Процедура ПриОткрытии()
СохранениеПериодическихРеквизитов(2,"*");
КонецПроцедуры
Журнал «Кадровые документы»
Перем СтатусСтрока;
//------------------------------------------------------------------------
Процедура УстИнтервал()
Если Флажок1=1 Тогда
НачалоИнтервалаЖурналаПриказыКадровые = '01.01.1900';
КонецИнтервалаЖурналаПриказыКадровые = '31.12.2100';
ИначеЕсли Флажок2=1 Тогда
НачалоИнтервалаЖурналаПриказыКадровые = НачГода(РабочаяДата());
КонецИнтервалаЖурналаПриказыКадровые = КонГода(РабочаяДата());
ИначеЕсли Флажок3=1 Тогда
НачалоИнтервалаЖурналаПриказыКадровые = НачМесяца(РабочаяДата());
КонецИнтервалаЖурналаПриказыКадровые = КонМесяца(РабочаяДата());
КонецЕсли;
УстановитьИнтервал(НачалоИнтервалаЖурналаПриказыКадровые,КонецИнтервалаЖурналаПриказыКадровые);
КонецПроцедуры
//------------------------------------------------------------------------
Процедура ПоискПоФИО()
Конт = 0;
ОткрытьФорму("Справочник.ДокументыПоФИО",Конт,-1);
КонецПроцедуры
//------------------------------------------------------------------------
Процедура Печать()
Конт = 0;
ОткрытьФорму("Отчет.МастерДокументов",Конт);
КонецПроцедуры
//------------------------------------------------------------------------
Флажок2=1;
УстИнтервал();
СтатусСтрока = "";
Размещено на Allbest.ru
Подобные документы
Анализ существующих разработок и обоснование выбора технологии проектирования. Проектирование подсистемы кадрового учета. Выбор и обоснование методики расчета экономической эффективности автоматизированной системы кадрового учета на предприятии.
дипломная работа [1,9 M], добавлен 09.02.2018Проектирование базы данных в среде MS Access 2000 для учета кадров РОВД г. Климовичи. Описание основных функций, которые должна выполнять данная информационная система. Верификация спроектированной логической модели. Результаты тестирования программы.
курсовая работа [655,4 K], добавлен 06.09.2015Проектирование информационной системы для автоматизации документооборота в области кадрового учета МОУ Гимназия № 16 г. Керчь. Объекты справочной и учетной информации. Реализация физической модели базы данных в среде СУБД. Построение логической модели БД.
курсовая работа [1,3 M], добавлен 15.08.2012Пути внедрения современных технологий работы с документами в системах делопроизводства. Основы автоматизированных систем управления, анализ программ введения кадрового учета. Создание программы учета персонала на базе IDE Delphi 7 и СУБД FireBird.
дипломная работа [804,5 K], добавлен 03.07.2015Проектирование программного продукта. Разработка базы данных средствами Microsoft Access. Разработка прикладных решений для информационной системы 1С: Предприятие 8.2. Изучение первичной, вторичной документации. Автоматизация учета и управление компанией.
курсовая работа [1,4 M], добавлен 14.12.2017Проектирование средствами MS Access базы данных отдела кадров ООО "ЖилКомСервис". Документирование кадрового движения. Прием на работу, оформление внутренних переводов. Прекращение трудового договора с работниками. Порядок заполнения личной карточки.
дипломная работа [10,4 M], добавлен 11.01.2012Современные программные продукты для автоматизации ведения бухгалтерского учета. Описание автоматизированной системы для учета выбранного вида деятельности на предприятии в среде 1С. Технология инсталляции, запуска и работы с программным изделием.
курсовая работа [3,4 M], добавлен 14.01.2013Разработан комплекс задач "Учет клиентов на предприятие" для автоматизации работы предприятия. Описано техническое проектирование системы, описание алгоритма комплексного учета клиентов на предприятии. Процесс обслуживания автоматизированной системы.
курсовая работа [3,0 M], добавлен 13.08.2019Сравнение возможностей программ 1С:Бухгалтерия 8.0. и БИС. Функциональные модули, принципы ведения учета деятельности организаций: бухгалтерская отчетность, сервисные возможности. Формирование бухгалтерского учета посредством системы 1С:Предприятие.
курсовая работа [3,1 M], добавлен 18.08.2014Обоснование необходимости совершенствования информационной системы (ИС) ООО "Мехсервис". Анализ системы учета деятельности авторемонтного предприятия. Разработка концепции построения автоматизированной ИС. Описание продукта информационной технологии.
дипломная работа [2,7 M], добавлен 22.05.2012