helpf.pro
Регистрация

Нестандартный график работы сотрудника

theelectric
27.04.2011 21:48Прочитано: 3143
Возникла такая задача: необходимо задавать данные о процессе работы сотрудника (моменты времени работы сотрудника - т.е. к примеру, он работал с 8.35 до 9.00, с 10.00 до 11.00 и с 13.40 до 17.00 - остальное время он простаивал) и хранить эти данные в каком-нибудь объекте.
Как мне кажется можно задавать это в регистр сведений (измерениями будут поле сотрудник, дата (дата и время) начала и дата окончания момента его работы).
Плюс, ко всему этому необходимо выдавать отчет, в котором будет отображаться прерывистый график работы выбранного сотрудника. Пример чуть ниже...

title


Готовых средств для этого нет... Каким образом это можно реализовать? И самое главное как вывести такой отчет?
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
28.04.2011 09:29Ответ № 1
(0) theelectric, храни в регистре сведений, а потом выводи из него в диаграмму
theelectric
28.04.2011 11:23Ответ № 2
(1) E_Migachev, так диаграмма же не сможет такое вывести... Все-таки прерывистая линия...
theelectric
28.04.2011 13:11Ответ № 3
+ (1) E_Migachev, думаю для этого сгодится диаграмма Ганта... Подскажи как ею пользоваться...
E_Migachev
28.04.2011 14:12Ответ № 4
(3) theelectric, вот пример Как Заполнить диаграмму Ганта данными?
Позже прикреплю пример *13
E_Migachev
28.04.2011 15:00Ответ № 5
+(3) вот пример вывода данных из регистра Состояние работников в ЗУПе, сделай все по аналогии *06
Пример обработки Скачивать файлы может только зарегистрированный пользователь!
title
Код вывода данных из регистра сведений в диаграмму Ганта:
Код 1C v 8.х
 Процедура Отчет(ТабДок, ДГ, Сотрудник) Экспорт
Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СостояниеРаботниковОрганизаций.Период КАК Период,
| СостояниеРаботниковОрганизаций.Сотрудник КАК Сотрудник,
| СостояниеРаботниковОрганизаций.Состояние КАК Состояние,
| СостояниеРаботниковОрганизаций.ПериодЗавершения КАК ПериодЗавершения
|ИЗ
| РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
|ГДЕ
| СостояниеРаботниковОрганизаций.Сотрудник = &Сотрудник
| И СостояниеРаботниковОрганизаций.Период МЕЖДУ &НачПериод И &КонПериод";

Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
Запрос.УстановитьПараметр("НачПериод", НачПериода);
Запрос.УстановитьПараметр("КонПериод", КонПериода);
Результат = Запрос.Выполнить().Выгрузить();

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
// Таб Док очистим и выведем заголовок
ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);

// Установить заголовок диаграммы.
ДГ.ОбластьЗаголовка.Текст = "График Состояния";
// Интервал будем определять самостоятельно.
ДГ.АвтоОпределениеПолногоИнтервала = Ложь;
// Установить интервал. С ПЕРВОГО ПЕРЕИОДА ПО ПОСЛЕДНИЙ
ДГ.УстановитьПолныйИнтервал(Результат[0].Период, Результат[Результат.Количество()-1].Период);
// Добавим Сотрудника
ТочкаС = ДГ.УстановитьТочку(Сотрудник);

ТабДок.Вывести(ОбластьШапкаТаблицы);
Для Каждого Стр Из Результат Цикл
//Вывод в ТабДокумент
ОбластьДетальныхЗаписей.Параметры.Заполнить(Стр);
ТабДок.Вывести(ОбластьДетальныхЗаписей);

//Вывод в Диаграмму
//Добавим серии СОСТОЯНИЕ
СерияСост = ДГ.УстановитьСерию(Стр.Состояние);
// Получить значение диаграммы - Состояние Сотрудника.
Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияСост);
// В значении определить новый интервал.
Интервал = Значение.Добавить();
Интервал.Текст = Стр.Состояние; //НазваниеСостояния
// Определить границы интервала.
Интервал.Начало = Стр.Период;
Интервал.Конец = Стр.ПериодЗавершения;
КонецЦикла;
КонецПроцедуры
theelectric
29.04.2011 13:08Ответ № 6
Спасибо!
theelectric
29.04.2011 13:09Ответ № 7
Вопрос закрыт!
Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.