Диплом: Автоматизация учета посещений клиентов в ООО "МаринаКлаб"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
115
Процедура
КоманднаяПанель3Установ
итьФлажки(Кнопка)
Для Каждого Строкатч из
Сотрудники цикл
Строкатч.Использовать =
Истина ;
КонецЦикла;
КонецПроцедуры
Процедура
КоманднаяПанель3СнятьФл
ажки(Кнопка)
Для Каждого Строкатч из
Сотрудники цикл
Строкатч.Использовать =
Ложь ;
КонецЦикла;
КонецПроцедуры
Процедура
КоманднаяПанель1Установ
итьФлажки(Кнопка)
Для Каждого Строкатч из
Помещения цикл
Строкатч.Использовать =
Истина ;
КонецЦикла;
КонецПроцедуры
Процедура
КоманднаяПанель1СнятьФл
ажки(Кнопка)
Для Каждого Строкатч из
Помещения цикл
Строкатч.Использовать =
Ложь ;
КонецЦикла;
КонецПроцедуры
Процедура
ТабличноеПолеПриВыводе
Строки(Элемент,
ОформлениеСтроки,
ДанныеСтроки)
Если ДанныеСтроки.Цвет =
Неопределено Тогда
Возврат;
КонецЕсли;
ОформлениеСтроки.Ячейки.
ПримерЦвета.ЦветФона =
ДанныеСтроки.Цве
т;
КонецПроцедуры
Процедура
КоманднаяПанель2Заполнит
ь(Кнопка)
Выборка =
Справочники.Специализаци
и.Выбрать();
Пока выборка.Следующий()
цикл
Если Выборка.ЭтоГруппа
ИЛИ
выборка.ПометкаУдаления
Тогда
Продолжить;
КонецЕсли;
Если
ТаблицаСоответствияЦвето
в.Найти(Выборка.Ссылка,"С
пециализация")=Неопределе
но Тогда
Строкатч =
ТаблицаСоответствияЦвето
в.Добавить();
Строкатч.Специализация =
Выборка.Ссылка;
Строкатч.Цвет =
ЦветаСтиля.ЦветФонаПоля;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ПриОткрытии()
Если
ТаблицаСоответствияЦвето
в.Найти("Шапка
помещения","Специализаци
я")=неопределено Тогда
Строкатз =
ТаблицаСоответствияЦвето
в.Добавить();
Строкатз.Специализация =
"Шапка помещения";
Строкатз.цвет =Новый
Цвет(231,227,203);
КонецЕсли;
Если
ТаблицаСоответствияЦвето
в.Найти("Шапка
сотрудника","Специализаци
я")=неопределено Тогда
Строкатз =
ТаблицаСоответствияЦвето
в.Добавить();
Строкатз.Специализация =
"Шапка сотрудника";
Строкатз.цвет = Новый
Цвет(249,249,201);
КонецЕсли;
КонецПроцедуры
Процедура
ОбработкаПроведения(Отка
з, Режим)
//{{__КОНСТРУКТОР_ДВИ
ЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент
построен конструктором.
// При повторном
использовании
конструктора, внесенные
вручную изменения будут
утеряны!!!
// регистр
ОтметкаИсполнения
Движения.ОтметкаИсполне
ния.Записывать = Истина;
Движения.ОтметкаИсполне
ния.Очистить();
Для Каждого
ТекСтрокаДоки Из Доки
Цикл
Движение =
Движения.ОтметкаИсполне
ния.Добавить();
Движение.Дата = Дата;
Движение.Документ =
ТекСтрокаДоки.Документ;
Движение.Исполнен =
ТекСтрокаДоки.Отметка;
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИ
ЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Процедура
ОбработкаПроведения(Отка
з, Режим)
Если
ЭтотОбъект.Исправляемый
<> Неопределено Тогда
ИсправляемыйДок=ЭтотОб
ъект.Исправляемый.Получи
тьОбъект();
ИсправляемыйДок.Исправле
ние=ЭтотОбъект.Ссылка;
ИсправляемыйДок.Записать
();
ИсправляемыйДок.Установи
тьПометкуУдаления(Истина
);
Набор =
РегистрыСведений.Занятост
ьСотрудников.СоздатьНабо
рЗаписей();
Набор.Отбор.Регистратор.У
становить(ЭтотОбъект.Испр
авляемый);
Набор.Прочитать();
Набор.Очистить();
Набор.Записать(Истина);
Движение =
Движения.ЗанятостьСотруд
ников.Добавить();
Движение.Дата =
ДатаСобытия;
Движение.Помещение =
Помещение;
Движение.НачалоПериода =
НачалоСобытия;
Движение.Специализация =
Специализация;
Движение.КонецПериода =
ОкончаниеСобытия;
Движение.Сотрудник =
Сотрудник;
иначе
Движение =
Движения.ЗанятостьСотруд
ников.Добавить();
Движение.Дата =
ДатаСобытия;
Движение.Помещение =
Помещение;
Движение.НачалоПериода =
НачалоСобытия;
Движение.Специализация =
Специализация;
Движение.КонецПериода =
ОкончаниеСобытия;
Движение.Сотрудник =
Сотрудник;
КонецЕсли;
//}}__КОНСТРУКТОР_ДВИ
ЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Процедура
ПередЗаписью(Отказ,
РежимЗаписи,
РежимПроведения)
Если Состояние =
Перечисления.СостоянияСо
бытий.Отменено Тогда
РежимЗаписи =
РежимЗаписиДОкумента.От
менаПроведения;
КонецЕсли;
//проверка на события в это
же время
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|
ЗанятостьСотрудни
ков.Помещение,
|
ЗанятостьСотрудни
ков.Регистратор,
|
ЗанятостьСотрудни
ков.НачалоПериода,
|
ЗанятостьСотрудни
ков.КонецПериода
|ИЗ
|
РегистрСведений.З
анятостьСотрудников КАК
ЗанятостьСотрудников
|ГДЕ
|
ЗанятостьСотрудни
ков.Помещение =
&Помещение
| И
ЗанятостьСотрудников.Акти
вность = &Истина
| И
ЗанятостьСотрудников.Дата
= &Дата";
Запрос.УстановитьПараметр
("Истина", Истина);
116
Запрос.УстановитьПараметр
("Дата",
ЭтотОбъект.ДатаСобытия);
Запрос.УстановитьПараметр
("Помещение",
ЭтотОбъект.Помещение);
РезультатЗапроса =
Запрос.Выполнить();
ВыборкаДетальныеЗаписи =
РезультатЗапроса.Выбрать()
;
Пока
ВыборкаДетальныеЗаписи.С
ледующий() Цикл
Если
ЭтотОбъект.НачалоСобытия
>=ВыборкаДетальныеЗапис
и.НачалоПериода
И
ЭтотОбъект.НачалоСобытия
<=
ВыборкаДетальныеЗаписи.К
онецПериода
И ЭтотОбъект.Помещение =
ВыборкаДетальныеЗаписи.П
омещение
И ЭтотОбъект.Ссылка<>
ВыборкаДетальныеЗаписи.Р
егистратор Тогда
Сообщить("На это время
уже есть событие "+
ВыборкаДетальныеЗаписи.Р
егистратор + " документ не
может быть проведен!!!");
РежимЗаписи =
РежимЗаписиДОкумента.От
менаПроведения;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Процедура вызывается по
событию
НачалоВыбораИзСписка
// у полей ввода, в которых
редактируются даты со
временем.
//
// Параметры
// ЭлементУправления -
ПолеВвода, в котором
редактируется значение
даты
// ЭтаФорма - Форма
// Пользователь -
СправочникСсылка.Пользов
атели
// СтандартнаяОбработка -
булево
// ПолныйГод - Булево,
предсавление года даты в
списке выбора
//
Процедура
ВыбратьВремяИзСписка(Эл
ементУправления,
ЭтаФорма,
ВремяНачалаВыбора,
ИнтервалВремени,
СтандартнаяОбработка,
ТолькоВремя) Экспорт
СтруктураГрафикаРаботы =
Константы.ГрафикРаботыО
рганизации.Получить().Пол
учить();
СтандартнаяОбработка =
Ложь;
Если
ЗначениеЗаполнено(ВремяН
ачалаВыбора) Тогда
ДатаВремени =
ВремяНачалаВыбора;
Иначе
ДатаВремени =
СтруктураГрафикаРаботы.Н
ачалоРабочегоДня;
КонецЕсли;
СтруктураРабочихВремен =
Новый
Структура("ДатаНачала,
ДатаОкончания",ДатаВреме
ни,СтруктураГрафикаРабот
ы.ОкончаниеРабочегоДня);
СписокВремен = Новый
СписокЗначений;
НачалоРабочегоДня =
НачалоДня(ДатаВремени)+
Час(СтруктураРабочихВрем
ен.ДатаНачала)*60*60+Мин
ута(СтруктураРабочихВрем
ен.ДатаНачала)*60;
ОкончаниеРабочегоДня =
НачалоДня(ДатаВремени)+
Час(СтруктураРабочихВрем
ен.ДатаОкончания)*60*60+
Минута(СтруктураРабочихВ
ремен.ДатаОкончания)*60;
НачалоРабочегоДняДляСпи
скаВыбора =
НачалоЧаса(НачалоРабочег
оДня);
а = 0;
Пока Истина Цикл
ВремяСписка =
НачалоРабочегоДняДляСпи
скаВыбора +
а*ИнтервалВремени*60;
Если ВремяСписка >=
ОкончаниеРабочегоДня-
ИнтервалВремени*60 Тогда
// добавить последнюю
запись
Если ТолькоВремя Тогда
СписокВремен.Добавить(Вр
емяСписка,
Формат(ВремяСписка,"ДФ='
ЧЧ:мм'"));
Иначе
СписокВремен.Добавить(Вр
емяСписка,
Формат(ВремяСписка,"ДФ='
дд.ММ.гггг ЧЧ:мм'"));
КонецЕсли;
Прервать;
КонецЕсли;
Если ТолькоВремя Тогда
СписокВремен.Добавить(Вр
емяСписка,
Формат(ВремяСписка,"ДФ='
ЧЧ:мм'"));
Иначе
СписокВремен.Добавить(Вр
емяСписка,
Формат(ВремяСписка,"ДФ='
дд.ММ.гггг ЧЧ:мм'"));
КонецЕсли;
а = а + 1;
КонецЦикла;
Секунды =
Минута(ДатаВремени)*60
+Секунда(ДатаВремени);
НачальноеЗначение =
СписокВремен.НайтиПоЗна
чению(ДатаВремени -
?(Секунды <
ИнтервалВремени*60,Секун
ды,Секунды-
ИнтервалВремени*60));
Если НачальноеЗначение =
Неопределено Тогда
ВыбранноеВремя =
ЭтаФорма.ВыбратьИзСписк
а(СписокВремен,
ЭлементУправления);
Иначе
ВыбранноеВремя =
ЭтаФорма.ВыбратьИзСписк
а(СписокВремен,
ЭлементУправления,
НачальноеЗначение);
КонецЕсли;
Если ВыбранноеВремя <>
Неопределено Тогда
ЭлементУправления.Значен
ие =
ВыбранноеВремя.Значение;
КонецЕсли;
КонецПроцедуры
//
Функция
ДеньНеделиПрописью(Дата,
Кратко) Экспорт
День = ДеньНедели(Дата);
Если День =1 Тогда
КраткоеНаименование
="Пн";
ПолноеНаименование
="Понедельник";
ИначеЕсли День =2 Тогда
КраткоеНаименование
="Вт";
ПолноеНаименование
="Вторник";
ИначеЕсли День =3 Тогда
КраткоеНаименование
="Ср";
ПолноеНаименование
="Среда";
ИначеЕсли День =4 Тогда
КраткоеНаименование
="Чт";
ПолноеНаименование
="Четверг";
ИначеЕсли День =5 Тогда
КраткоеНаименование
="Пт";
ПолноеНаименование
="Пятница";
ИначеЕсли День =6 Тогда
КраткоеНаименование
="Сб";
ПолноеНаименование
="Суббота";
ИначеЕсли День =7 Тогда
КраткоеНаименование
="Вс";
ПолноеНаименование
="Воскресенье";
КонецЕсли;
Если Кратко Тогда
Возврат
КраткоеНаименование;
Иначе
Возврат
ПолноеНаименование;
КонецЕсли;
КонецФункции //
ДеньНеделиПрописью()
Функция
ДобавитьВремяВДату(Дата,
Время) Экспорт
НоваяДатаВремя =
НачалоДня(Дата)+Час(Врем
я)*60*60+минута(Время)*60
;
Возврат НоваяДатаВремя;
КонецФункции //
ДеньНеделиПрописью()
//
Функция
МетаданныеКонфигурации()
Экспорт
Возврат Метаданные;
КонецФункции //
МетаданныеКонфигурации()
Перем
ДатаНачалаСтароеЗначение;
// Хранит
предыдущее значение
параметра ДатаНачала
117
Перем
ДатаКонцаСтароеЗначение;
// Хранит
предыдущее значение
параметра ДатаКонца
Перем
СтруктураРеквизитов;
//
Процедура
СформироватьОтчет()
Экспорт
ТабличныйДокументПомещ
ение = Новый
ТабличныйДокумент;
//
Начало =
НачалоДня(Начало);
Окончание =
КонецДня(Окончание);
СтруктураГрафикаОрганиза
ции =
Константы.ГрафикРаботыО
рганизации.Получить().Пол
учить();
ВидГрафика =
СтруктураГрафикаОрганиза
ции.ВидГрафика;
ВремяНачалаРаботы =
СтруктураГрафикаОрганиза
ции.НачалоРабочегоДня ;
ВремяОкончанияРаботы
=СтруктураГрафикаОрганиз
ации.ОкончаниеРабочегоДн
я ;
Макет =
ПолучитьМакет("Расписани
е");
СоответствиеЦвета =
ТаблицаСоответствияЦвето
в.Найти("Шапка
сотрудника","Специализаци
я");
Если СоответствиеЦвета
=Неопределено Тогда
ЦветШапкиСотрудника =
Новый Цвет(249,249,201);
Иначе
ЦветШапкиСотрудника =
СоответствиеЦвета.Цвет;
КонецЕсли;
СоответствиеЦвета =
ТаблицаСоответствияЦвето
в.Найти("Шапка
помещения","Специализаци
я");
Если СоответствиеЦвета
=Неопределено Тогда //
цвет взять из макета
ЦветШапкиПомещения =
Новый Цвет(231,227,203);
Иначе
ЦветШапкиПомещения =
СоответствиеЦвета.Цвет;
КонецЕсли;
ТабДок =
ЭлементыФормы.ПолеТабл
ичногоДокумента1;
ТабДок.Очистить();
Отбор = Новый
Структура("Использовать",
Истина);
СписокПомещений = Новый
СписокЗначений;
Для Каждого Строкатч из
Помещения цикл
Если
Строкатч.Использовать
тогда
СписокПомещений.Добавит
ь(Строкатч.Помещение);
КонецЕсли;
КонецЦикла;
СписокСотрудников =
Новый СписокЗначений;
Для Каждого Строкатч из
Сотрудники цикл
Если
Строкатч.Использовать
тогда
СписокСотрудников.Добави
ть(Строкатч.Сотрудник);
КонецЕсли;
КонецЦикла;
ТекстУсловия =
?(СписокПомещений.Колич
ество()>0," И
ЗанятостьСотрудников.Пом
ещение
В(&СписокПомещений)","")
;
ТекстУсловия =
ТекстУсловия+?(СписокСот
рудников.Количество()>0,"
И
ЗанятостьСотрудников.Сотр
удник
В(&СписокСотрудников)","
");
ВременнаяТаблицаЗапроса
= Новый
МенеджерВременныхТабли
ц ;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр
("Начало",Начало);
Запрос.УстановитьПараметр
("Окончание",Окончание);
Запрос.УстановитьПараметр
("СписокСотрудников",Спи
сокСотрудников);
Запрос.УстановитьПараметр
("СписокПомещений",Списо
кПомещений);
Запрос.МенеджерВременны
хТаблиц =
ВременнаяТаблицаЗапроса;
Запрос.Текст = "ВЫБРАТЬ
|
ЗанятостьСотрудни
ков.Дата КАК Дата,
|
ЗанятостьСотрудни
ков.Сотрудник КАК
Сотрудник,
|
ПРЕДСТАВЛЕНИ
Е(ЗанятостьСотрудников.Со
трудник) КАК
СотрудникПредставление,
|
ЗанятостьСотрудни
ков.Помещение,
|
ПРЕДСТАВЛЕНИ
Е(ЗанятостьСотрудников.По
мещение),
|
ЗанятостьСотрудни
ков.Регистратор КАК
Регистратор,
|
ЗанятостьСотрудни
ков.Регистратор.Содержани
е КАК Содержание,
|
ЗанятостьСотрудни
ков.Регистратор.Комментар
ий КАК
ПримечаниеСобытия,
|
РАЗНОСТЬДАТ(За
нятостьСотрудников.Начало
Периода,
ЗанятостьСотрудников.Коне
цПериода, МИНУТА) / 5
КАК
КоличествоИнтервалов,
|
ЗанятостьСотрудни
ков.Регистратор.Контрагент.
Примечание КАК
ПримечаниеКонтрагента,
|
ЗанятостьСотрудни
ков.Регистратор.Контрагент.
ДатаРождения,
|
ЗанятостьСотрудни
ков.Регистратор.Телефон
КАК Телефон,
|
ЗанятостьСотрудни
ков.Регистратор.Оповещени
е КАК Оповещение,
|
ЗанятостьСотрудни
ков.Регистратор.Специализа
ция КАК Специализация,
|
ЗанятостьСотрудни
ков.Регистратор.Контрагент
КАК Контрагент,
|
ДОБАВИТЬКДАТ
Е(ДОБАВИТЬКДАТЕ(Занят
остьСотрудников.Дата,
ЧАС,
ЧАС(ЗанятостьСотрудников
.НачалоПериода)),
МИНУТА,
МИНУТА(ЗанятостьСотруд
ников.НачалоПериода))
КАК НачалоСобытия,
|
ДОБАВИТЬКДАТ
Е(ДОБАВИТЬКДАТЕ(Занят
остьСотрудников.Дата,
ЧАС,
ЧАС(ЗанятостьСотрудников
.КонецПериода)),
МИНУТА,
МИНУТА(ЗанятостьСотруд
ников.КонецПериода)) КАК
ОкончаниеСобытия,
|
ЗанятостьСотрудни
ков.Регистратор.СкрытьПри
мечаниеВРасписании КАК
СкрытьПримечание
|ПОМЕСТИТЬ
ВременнаяТаблицаЗапроса
|ИЗ
|
РегистрСведений.З
анятостьСотрудников КАК
ЗанятостьСотрудников
|ГДЕ
|
ЗанятостьСотрудни
ков.Дата МЕЖДУ &Начало
И
&Окончание"+ТекстУслови
я;
Запрос.Выполнить();
Область =
Макет.ПолучитьОбласть("За
головок");
Область.Параметры.Начало
=
Формат(Начало,"ДФ=dd.М
М");
Область.Параметры.Оконча
ние
=Формат(Окончание,"ДФ=d
d.ММ");
ТабДок.Вывести(Область);
Область =
Макет.ПолучитьОбласть("Ш
апкаПомещение|ПустойСто
лбец");
ТабДок.Вывести(Область);
Для каждого Строкатч из
Помещения цикл
Если Не
Строкатч.Использовать
тогда
Продолжить;
КонецЕсли;
118
ТекущийСотрудник =
Справочники.Сотрудники.Н
айтиПоРеквизиту("Основно
еРабочееМесто",Строкатч.П
омещение);
ВремяОкончанияПредыдущ
егоСобытия = '00010101';
СтруктураОбластейПредыду
щегоСобытия = Новый
Структура;
ТабличныйДокументПомещ
ение.Очистить();
ТекущийДень =
День(Начало);
ТекущееВремя =
ОдинМодульНаВсех.Добави
тьВремяВДату(Начало,Врем
яНачалаРаботы);
ДатаВремяОкончанияСобыт
ия=ТекущееВремя;
Пока
ТекущееВремя<Окончание
Цикл
Запрос.Текст = "ВЫБРАТЬ
* ИЗ
ВременнаяТаблицаЗапроса
|ГДЕ
|ВременнаяТаблицаЗапроса.
Помещение =&Помещение
ВременнаяТаблицаЗапроса.
Дата =&Дата
|УПОРЯДОЧИТЬ ПО
|ВременнаяТаблицаЗапроса.
НачалоСобытия";
Запрос.УстановитьПараметр
("Помещение",Строкатч.По
мещение);
Запрос.УстановитьПараметр
("Дата",НачалоДня(Текущее
Время));
ВыборкаПоПомещению =
Запрос.Выполнить().Выбрат
ь();
Область =
Макет.ПолучитьОбласть("Ш
апкаПомещение|Время");
Область.Параметры.День =
Формат(ТекущееВремя,"ДФ
=дд")+"
"+ОдинМодульНаВсех.День
НеделиПрописью(ТекущееВ
ремя,Истина);
ОбластьЯчеек =
ТабличныйДокументПомещ
ение.Вывести(Область);
ОбластьЯчеек.ЦветФона =
ЦветШапкиПомещения;
Область =
Макет.ПолучитьОбласть("Ш
апкаПомещение|Данные");
Область.Параметры.Помеще
ние = Строкатч.Помещение;
ОбластьЯчеек =
ТабличныйДокументПомещ
ение.Присоединить(Область
);
ОбластьЯчеек.ЦветФона =
ЦветШапкиПомещения;
ВывестиШапкуСотрудника(
Макет,ТабличныйДокумент
Помещение,ТекущийСотруд
ник,ЦветШапкиСотрудника)
; // для каждого помещения
вывести шапку основного
сотрудника
ДеньНедели =
ДеньНедели(ТекущееВремя)
;
Если ВидГрафика
=Перечисления.ВидГрафика
.Пятидневка И
ДеньНедели>5
ИЛИ ВидГрафика
=Перечисления.ВидГрафика
.Шестидневка И
ДеньНедели=7 Тогда
// для выходного вывел
только шапку и переход на
следующий день
ТекущееВремя =
ОдинМодульНаВсех.Добави
тьВремяВДату(ТекущееВре
мя+86400,ВремяНачалаРабо
ты);
ТекущийДень =
День(ТекущееВремя);
Продолжить;
КонецЕсли;
ВремяОкончанияТекущегоД
ня
=ОдинМодульНаВсех.Добав
итьВремяВДату(ТекущееВр
емя,ВремяОкончанияРаботы
);
Пока
ТекущееВремя<ВремяОкон
чанияТекущегоДня цикл
Если ТекущийДень <>
День(ТекущееВремя) Тогда
// начался следующий день
ТекущееВремя =
ОдинМодульНаВсех.Добави
тьВремяВДату(ТекущееВре
мя,ВремяНачалаРаботы);
ТекущийДень =
День(ТекущееВремя);
КонецЕсли;
Пока
ВыборкаПоПомещению.Сле
дующий() Цикл
ДатаВремяНачалаСобытия =
ВыборкаПоПомещению.Нач
алоСобытия;
Пока
ТекущееВремя<ДатаВремя
НачалаСобытия Цикл //
выводить пустые строки
пока не наступит событие
ВывестиОбластьМакета(Таб
личныйДокументПомещени
е, Макет, "", ТекущееВремя,
ТекущееВремя,
3600,Неопределено);
КонецЦикла;
// вывести строку с
временем начала
ДобавляемоеВремя =
?(ДатаВремяНачалаСобытия
=ТекущееВремя,3600,0);
// если время начала
совпадает с временем
окончания, то вставить
область в область окончания
СодержаниеСобытия=
Строка(ВыборкаПоПомеще
нию.Контрагент)+";
"+ВыборкаПоПомещению.С
одержание+";
"+ВыборкаПоПомещению.П
римечаниеКонтрагента
+";
"+?(ВыборкаПоПомещению.
СкрытьПримечание,"",Выбо
ркаПоПомещению.Примеча
ниеСобытия+";
")+ВыборкаПоПомещению.
Телефон;
СоответствиеЦвета =
ТаблицаСоответствияЦвето
в.Найти(ВыборкаПоПомеще
нию.Специализация,"Специ
ализация");
Если СоответствиеЦвета
=Неопределено Тогда
ЦветФонаОбласти =
ВыборкаПоПомещению.Спе
циализация.ЦветВРасписан
ии.Получить();
Иначе
ЦветФонаОбласти =
СоответствиеЦвета.Цвет;
КонецЕсли;
Если
ДатаВремяНачалаСобытия<
=ВремяОкончанияПредыду
щегоСобытия Тогда
ВременныйТабличныйДоку
мент = Новый
ТабличныйДокумент;
Если
ТекущийСотрудник<>Выбо
ркаПоПомещению.Сотрудн
ик Тогда
// вставить шапку
сотрудника
СтруктураОбластей =
ВывестиШапкуСотрудника(
Макет,ВременныйТабличны
йДокумент,ВыборкаПоПоме
щению.Сотрудник,ЦветШап
киСотрудника);
ТабличныйДокументПомещ
ение.ВставитьОбласть(Стру
ктураОбластей.ОбластьВре
мени,СтруктураОбластейПр
едыдущегоСобытия.Область
Времени,ТипСмещенияТабл
ичногоДокумента.БезСмеще
ния);
ТабличныйДокументПомещ
ение.ВставитьОбласть(Стру
ктураОбластей.ОбластьСоб
ытия,СтруктураОбластейПр
едыдущегоСобытия.Область
События,ТипСмещенияТабл
ичногоДокумента.БезСмеще
ния);
ТекущийСотрудник=Выбор
каПоПомещению.Сотрудни
к;
// вывести событие
СтруктураОбластей =
ВывестиОбластьМакета(Таб
личныйДокументПомещени
е, Макет,
СодержаниеСобытия,
ВыборкаПоПомещению.Нач
алоСобытия,
ТекущееВремя,
ДобавляемоеВремя,Выборка
ПоПомещению.Регистратор)
;
Если
ДатаВремяНачалаСобытия<
ВремяОкончанияПредыдущ
егоСобытия Тогда
СтруктураОбластей.Область
Времени.Примечание.Текст
= "Это событие
пересекается по времени с
предыдущим";
КонецЕсли;
Если
ВыборкаПоПомещению.Скр
ытьПримечание Тогда
СтруктураОбластей.Область
События.Примечание.Текст
=
ВыборкаПоПомещению.При
мечаниеСобытия;
КонецЕсли;
СтруктураОбластей.Область
События.ЦветФона =
?(ЦветФонаОбласти=Неопр
еделено,ЦветаСтиля.ЦветФо
наПоля,ЦветФонаОбласти);
Иначе
// вставить только событие
СтруктураОбластей
=ВывестиОбластьМакета(В
ременныйТабличныйДокум
ент, Макет,
СодержаниеСобытия,
ВыборкаПоПомещению.Нач
алоСобытия,
ТекущееВремя,
ДобавляемоеВремя,Выборка
119
ПоПомещению.Регистратор)
;
Если
ДатаВремяНачалаСобытия<
ВремяОкончанияПредыдущ
егоСобытия Тогда
СтруктураОбластей.Область
Времени.Примечание.Текст
= "Это событие
пересекается по времени с
предыдущим";
КонецЕсли;
Если
ВыборкаПоПомещению.Скр
ытьПримечание Тогда
СтруктураОбластей.Область
События.Примечание.Текст
=
ВыборкаПоПомещению.При
мечаниеСобытия;
КонецЕсли;
СтруктураОбластей.Область
События.ЦветФона =
?(ЦветФонаОбласти=Неопр
еделено,ЦветаСтиля.ЦветФо
наПоля,ЦветФонаОбласти);
ТабличныйДокументПомещ
ение.ВставитьОбласть(Стру
ктураОбластей.ОбластьВре
мени,СтруктураОбластейПр
едыдущегоСобытия.Область
Времени,ТипСмещенияТабл
ичногоДокумента.БезСмеще
ния);
ТабличныйДокументПомещ
ение.ВставитьОбласть(Стру
ктураОбластей.ОбластьСоб
ытия,СтруктураОбластейПр
едыдущегоСобытия.Область
События,ТипСмещенияТабл
ичногоДокумента.БезСмеще
ния);
КонецЕсли;
Иначе
// если сотрудник
изменился, то вывести
шапку для нового
сотрудника
Если
ТекущийСотрудник<>Выбо
ркаПоПомещению.Сотрудн
ик Тогда
ВывестиШапкуСотрудника(
Макет,ТабличныйДокумент
Помещение,ВыборкаПоПом
ещению.Сотрудник,ЦветШа
пкиСотрудника);
ТекущийСотрудник=Выбор
каПоПомещению.Сотрудни
к
КонецЕсли;
СтруктураОбластей =
ВывестиОбластьМакета(Таб
личныйДокументПомещени
е, Макет,
СодержаниеСобытия,
ВыборкаПоПомещению.Нач
алоСобытия,
ТекущееВремя,
ДобавляемоеВремя,Выборка
ПоПомещению.Регистратор)
;
Если
ВыборкаПоПомещению.Скр
ытьПримечание Тогда
СтруктураОбластей.Область
События.Примечание.Текст
=
ВыборкаПоПомещению.При
мечаниеСобытия;
КонецЕсли;
СтруктураОбластей.Область
События.ЦветФона =
?(ЦветФонаОбласти=Неопр
еделено,ЦветаСтиля.ЦветФо
наПоля,ЦветФонаОбласти);
КонецЕсли;
ДатаВремяОкончанияСобыт
ия =
ВыборкаПоПомещению.Око
нчаниеСобытия;
// и время окончания
события выводить только
если рабочий день ещё не
закончился
Если
ДатаВремяОкончанияСобыт
ия<ВремяОкончанияТекуще
гоДня Тогда
ДобавляемоеВремя =
Цел((ДатаВремяОкончания
События-
ТекущееВремя)/3600+1)*36
00;
СтруктураОбластей =
ВывестиОбластьМакета(Таб
личныйДокументПомещени
е, Макет, "",
ВыборкаПоПомещению.Око
нчаниеСобытия,
ТекущееВремя,
ДобавляемоеВремя,Неопред
елено);
СтруктураОбластейПредыду
щегоСобытия =
СтруктураОбластей;
КонецЕсли;
ВремяОкончанияПредыдущ
егоСобытия =
ДатаВремяОкончанияСобыт
ия;
КонецЦикла;
Если
ВремяОкончанияТекущегоД
ня>ТекущееВремя Тогда
Если
ВремяОкончанияПредыдущ
егоСобытия>=ТекущееВрем
я Тогда
ТекущееВремя =
ТекущееВремя+3600;
Иначе
ОбластьЯчеек =
ВывестиОбластьМакета(Таб
личныйДокументПомещени
е, Макет, "", ТекущееВремя,
ТекущееВремя,
3600,Неопределено);
//ТекущееВремя =
ТекущееВремя+3600;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ТекущееВремя =
ОдинМодульНаВсех.Добави
тьВремяВДату(ТекущееВре
мя+86400,ВремяНачалаРабо
ты); // переходим на
следующие сутки
КонецЦикла;
ТабДок.Присоединить(Табл
ичныйДокументПомещение)
;
КонецЦикла;
КонецПроцедуры
//
Функция
ВывестиОбластьМакета(Таб
личныйДокумент, Макет,
Содержание,
ВремяСобытия,
ТекущееВремя,
ДобавляемоеВремя,Регистра
тор)
СтруктураОбластей =
Новый
Структура("ОбластьВремен
и, ОбластьСобытия");
Область =
Макет.ПолучитьОбласть("Д
етали|Время");
Область.Параметры.Время =
ВремяСобытия;
ОбластьВремени=Табличны
йДокумент.Вывести(Област
ь);
// ищем ближайшую область
к текущему времени
РазницаВремени =
ВремяСобытия-
ТекущаяДата();
Если РазницаВремени<3600
И РазницаВремени>0 Тогда
ОбластьВремени.ЦветФона
=
ЦветаСтиля.ЦветОтрицател
ьногоЧисла;
КонецЕсли;
Область =
Макет.ПолучитьОбласть("Д
етали|Данные");
Область.Параметры.Содерж
ание = Содержание;
Область.Параметры.Регистр
атор = Регистратор;
ОбластьСобытия =
ТабличныйДокумент.Присо
единить(Область);
ТекущееВремя =
ТекущееВремя+
ДобавляемоеВремя;
Если
Регистратор<>Неопределен
о Тогда
Если Не
Регистратор.Оповещение
Тогда
ТекущийШрифт =
ОбластьСобытия.Шрифт;
ОбластьСобытия.Шрифт =
Новый
Шрифт(ТекущийШрифт,,10,
истина);
КонецЕсли;
КонецЕсли;
СтруктураОбластей.Область
Времени =
ОбластьВремени;
СтруктураОбластей.Область
События =
ОбластьСобытия;
Возврат
СтруктураОбластей;
КонецФункции
//
Функция
ВывестиШапкуСотрудника(
Макет,ТабличныйДокумент,
Сотрудник,ЦветФона)
СтруктураОбластей =
Новый
Структура("ОбластьВремен
и, ОбластьСобытия");
Область =
Макет.ПолучитьОбласть("Ш
апкаСотрудник|Время");
ОбластьВремени =
ТабличныйДокумент.Вывес
ти(Область);
Область =
Макет.ПолучитьОбласть("Ш
апкаСотрудник|Данные");
Область.Параметры.Сотруд
ник = Сотрудник;
ОбластьСобытия =
ТабличныйДокумент.Присо
единить(Область);
СтруктураОбластей.Область
Времени =
ОбластьВремени;
СтруктураОбластей.Область
События =
ОбластьСобытия;
СтруктураОбластей.Область
Времени.ЦветФона
=ЦветФона ;
СтруктураОбластей.Область
События.ЦветФона
=ЦветФона ;
120
Возврат
СтруктураОбластей;
КонецФункции
//
Процедура
КнопкаСформироватьНажат
ие(Кнопка)
СформироватьОтчет();
КонецПроцедуры
Процедура ПриОткрытии()
ЭтаФорма.ТекущийЭлемент
=
ЭлементыФормы.Действия
Формы;
СформироватьОтчет();
КонецПроцедуры
Процедура
ДействияФормыНастройки(
Кнопка)
Форма =
ПолучитьФорму("Настройк
и",Этаформа);
Форма.Открыть();
КонецПроцедуры
Процедура
КоманднаяПанель1День(Кн
опка)
ДатаНачалаСтароеЗначение
= Начало;
ДатаКонцаСтароеЗначение
= Окончание;
Начало =
НачалоДня(ДатаОтчета);
Окончание =
КонецДня(ДатаОтчета);
Кнопка.Пометка = Истина;
ЭлементыФормы.Командна
яПанельФормыДополнитель
ная.Кнопки.Неделя.Пометка
= Ложь;
СформироватьОтчет();
КонецПроцедуры
Процедура
ПередОткрытием(Отказ,
СтандартнаяОбработка)
ДатаОтчета =
ТекущаяДата();
ОтчетОбъект.Начало =
НачалоДня(ДатаОтчета);
ОтчетОбъект.Окончание =
КонецДня(ДатаОтчета);
ЭлементыФормы.Командна
яПанельФормыДополнитель
ная.Кнопки.День.Пометка =
Истина;
СтруктураНастроек =
ВосстановитьЗначение("Отч
етРасписание_10");
Если
СтруктураНастроек<>Неопр
еделено Тогда
Помещения.Загрузить(Стру
ктураНастроек.Помещения);
Сотрудники.Загрузить(Стру
ктураНастроек.Сотрудники)
;
ТаблицаСоответствияЦвето
в =
СтруктураНастроек.Таблица
СоответствияЦветов;
КонецЕсли;
Если
ТаблицаСоответствияЦвето
в.Колонки.Количество() = 0
Тогда
УстановитьЦветаПоУмолча
нию();
КонецЕсли;
КонецПроцедуры
Процедура
ПередЗакрытием(Отказ,
СтандартнаяОбработка)
СтруктураНастроек =
Новый Структура;
СтруктураНастроек.Вставит
ь("Помещения",Помещения.
Выгрузить());
СтруктураНастроек.Вставит
ь("Сотрудники",Сотрудники
.Выгрузить());
СтруктураНастроек.Вставит
ь("ТаблицаСоответствияЦве
тов",ТаблицаСоответствияЦ
ветов);
СохранитьЗначение("ОтчетР
асписание_10",СтруктураНа
строек);
КонецПроцедуры
Процедура
ДатаОтчетаПриИзменении(
Элемент)
//Если
Вопрос("Сформировать
отчет?",РежимДиалогаВопр
ос.ДаНет)=КодВозвратаДиа
лога.Да Тогда
Интервал = Окончание-
Начало;
Начало = ДатаОтчета;
Окончание =
Начало+Интервал;
СформироватьОтчет();
//КонецЕсли;
КонецПроцедуры
Процедура
КнНазадНажатие(Элемент)
ДатаНачалаСтароеЗначение
= Начало;
ДатаКонцаСтароеЗначение
= Окончание;
Если НачалоДня(Начало) <>
НачалоДня(Окончание)
Тогда
ДатаОтчета
=
ДатаОтчета - (7*86400);
Начало = ДатаОтчета;
Окончание =
Начало+(7*86400);
Иначе
ДатаОтчета
=
ДатаОтчета - 86400;
Начало = ДатаОтчета;
Окончание =
ДатаОтчета;
КонецЕсли;
СформироватьОтчет();
КонецПроцедуры
Процедура
КнВпередНажатие(Элемент)
ДатаНачалаСтароеЗначение
= Начало;
ДатаКонцаСтароеЗначение
= Окончание;
Если НачалоДня(Начало) <>
НачалоДня(Окончание)
Тогда
ДатаОтчета
=
ДатаОтчета + (7*86400);
Начало = ДатаОтчета;
Окончание =
Начало+(7*86400);
Иначе
ДатаОтчета
=
ДатаОтчета + 86400;
Начало = ДатаОтчета;
Окончание = Начало;
КонецЕсли;
СформироватьОтчет();
КонецПроцедуры
Процедура
КоманднаяПанель1Неделя(
Кнопка)
ДатаНачалаСтароеЗначение
= Начало;
ДатаКонцаСтароеЗначение
= Окончание;
ДатаОтчета =
НачалоНедели(ДатаОтчета);
Начало = ДатаОтчета;
Окончание =
НачалоНедели(ДатаОтчета)
+ (24*60*60*6);
Кнопка.Пометка = Истина;
ЭлементыФормы.Командна
яПанельФормыДополнитель
ная.Кнопки.День.Пометка =
Ложь;
СформироватьОтчет();
КонецПроцедуры
Процедура
УстановитьЦветаПоУмолча
нию() Экспорт
ТаблицаСоответствияЦвето
в.Колонки.Очистить();
ТаблицаСоответствияЦвето
в.Колонки.Добавить("Специ
ализация");
ТаблицаСоответствияЦвето
в.Колонки.Добавить("Цвет")
;
Выборка =
Справочники.Специализаци
и.Выбрать();
Пока выборка.Следующий()
цикл
Если Выборка.ЭтоГруппа
ИЛИ
выборка.ПометкаУдаления
Тогда
Продолжить;
КонецЕсли;
Если
ТаблицаСоответствияЦвето
в.Найти(Выборка.Ссылка,"С
пециализация")=Неопределе
но Тогда
Строкатч =
ТаблицаСоответствияЦвето
в.Добавить();
Строкатч.Специализация =
Выборка.Ссылка;
Строкатч.Цвет =
ЦветаСтиля.ЦветФонаПоля;
КонецЕсли;
КонецЦикла;
КонецПроцедуры //
УстановитьЦветаИнтервало
вПоУмолчанию()
Процедура
ПолеТабличногоДокумента
1ОбработкаРасшифровки(Э
лемент, Расшифровка,
СтандартнаяОбработка)
Если
ТипЗнч(Расшифровка)=Тип(
"ДокументСсылка.Событие"
) Тогда
СтандартнаяОбработка=Ло
жь;
Форма =
Расшифровка.ПолучитьФор
му("ФормаДокумента",Эта
121
Форма,"КлючУникальности
_123123");
Форма.Открыть();
КонецЕсли;
КонецПроцедуры
Процедура
КонтекстноеМенюТаблично
гоПоляОтметитьОповещен(
Кнопка)
Расшифровка=ЭлементыФо
рмы.ПолеТабличногоДокум
ента1.ТекущаяОбласть.Расш
ифровка;
Если
ТипЗнч(Расшифровка)=Тип(
"ДокументСсылка.Событие"
) Тогда
Объект =
Расшифровка.ПолучитьОбъ
ект();
Объект.Оповещение =
истина;
Попытка
Объект.Записать();
Исключение
Сообщить(ОписаниеОшибк
и());
КонецПопытки;
СформироватьОтчет();
КонецЕсли;
КонецПроцедуры
Процедура
КонтекстноеМенюТаблично
гоПоляСоздать(Кнопка)
ОбластьПриемник =
ЭлементыФормы.ПолеТабл
ичногоДокумента1.Выделен
ныеОбласти[0];
Если
ТипЗнч(ОбластьПриемник.Р
асшифровка)=Тип("Докумен
тСсылка.Событие") Тогда
Предупреждение("На
выбранное время уже
оформлено событие",10);
Возврат;
КонецЕсли;
СоздатьНовоеСобытие(Обла
стьПриемник,"Создание");
КонецПроцедуры
Процедура
СоздатьНовоеСобытие(Обла
стьПриемник,ТипДействия)
НомерРазделителя
=Найти(ОбластьПриемник.
Имя,":");
Если НомерРазделителя>0
Тогда // выделен диапазон
строк или колонок
ЛеваяЧасть =
Лев(ОбластьПриемник.Имя,
НомерРазделителя-1);
ПраваяЧасть =
Сред(ОбластьПриемник.Им
я,НомерРазделителя+1);
НомерПервойСтроки =
Число(Сред(ЛеваяЧасть,2,Н
айти(ЛеваяЧасть,"C")-2));
НомерПоследнейСтроки =
Число(Сред(ПраваяЧасть,2,
Найти(ПраваяЧасть,"C")-2));
// если выделено несколько
колонок, то за текущую
принимаем последнюю
НомерТекущейКолонки =
Число(Сред(ПраваяЧасть,На
йти(ПраваяЧасть,"C")+1));
Иначе
НомерПервойСтроки =
Число(Сред(ОбластьПриемн
ик.Имя,2,Найти(ОбластьПри
емник.Имя,"C")-2));
НомерПоследнейСтроки =
НомерПервойСтроки;
НомерТекущейКолонки =
Число(Сред(ОбластьПриемн
ик.Имя,Найти(ОбластьПрие
мник.Имя,"C")+1));
КонецЕсли;
// в ячейке слева текущей
строки должны содержаться
дата и время
ОбластьСДатой =
ЭлементыФормы.ПолеТабл
ичногоДокумента1.Область(
"R"+НомерПервойСтроки+"
C"+(Число(НомерТекущейК
олонки)-1));
Если Не
ОбластьСДатой.СодержитЗн
ачение Тогда
Предупреждение("Неправил
ьно выбрано время
события",10);
Возврат;
КонецЕсли;
ДатаНачалаНовогоСобытия
= ОбластьСДатой.Значение;
Если
ТипДействия="Перемещени
е" Тогда // для перемещения
новый документ не
создается
НовыйДокумент =
СтруктураРеквизитов.Ссылк
а.ПолучитьОбъект();
Иначе
НовыйДокумент =
Документы.Событие.Создат
ьДокумент();
КонецЕсли;
НовыйДокумент.Дата =
ТекущаяДата();
НовыйДокумент.ДатаСобыт
ия =
ДатаНачалаНовогоСобытия;
НовыйДокумент.НачалоСоб
ытия =
ДатаНачалаНовогоСобытия;
НовыйДокумент.Оповещени
е = Ложь;
// во второй строке текущей
колонки всегда содержится
помещение,
ОбластьСПомещением =
ЭлементыФормы.ПолеТабл
ичногоДокумента1.Область(
"R2"+"C"+НомерТекущейКо
лонки);
Если
ТипЗнч(ОбластьСПомещени
ем.Расшифровка)=Тип("Спр
авочникСсылка.Помещения
") Тогда
НовыйДокумент.Помещени
е =
ОбластьСПомещением.Расш
ифровка;
КонецЕсли;
Если
ТипДействия="Копирование
"
ИЛИ
ТипДействия="Перемещени
е" Тогда // при
копировании дату
окончания высчитывать,
сотрудника и берём из
события-источника
Если
НовыйДокумент.Помещени
е.Пустая() Тогда
Предупреждение("Неправил
ьно выделено рабочее место
для события.",10);
Возврат;
КонецЕсли;
ДатаОкончанияНовогоСобы
тия =
НовыйДокумент.НачалоСоб
ытия +
(СтруктураРеквизитов.Окон
чаниеСобытия-
СтруктураРеквизитов.Начал
оСобытия);
НовыйДокумент.Окончание
События =
ДатаОкончанияНовогоСобы
тия;
СтруктураРеквизитов.Удали
ть("Ссылка"); // перед
циклом удалить
необрабатываемый элемент
Для Каждого
элементСтруктуры из
СтруктураРеквизитов цикл
Если Не
ЗначениеЗаполнено(НовыйД
окумент[элементСтруктуры.
Ключ]) Тогда
НовыйДокумент[элементСт
руктуры.Ключ] =
элементСтруктуры.
Значение;
КонецЕсли;
КонецЦикла;
НовыйДокумент.Записать(Р
ежимЗаписиДокумента.Про
ведение);
Иначе
ОбластьСДатой =
ЭлементыФормы.ПолеТабл
ичногоДокумента1.Область(
"R"+(НомерПоследнейСтро
ки+1)+"C"+(Число(НомерТе
кущейКолонки)-1));
Если
ОбластьСДатой.СодержитЗн
ачение Тогда
ДатаОкончанияНовогоСобы
тия =
ОбластьСДатой.Значение;
Иначе
ДатаОкончанияНовогоСобы
тия =
НовыйДокумент.НачалоСоб
ытия+3600;
КонецЕсли;
Если Не
НовыйДокумент.Помещени
е.Пустая() Тогда
ОсновнойСотрудникПомещ
ения =
Справочники.Сотрудники.Н
айтиПоРеквизиту("Основно
еРабочееМесто",НовыйДоку
мент.Помещение);
НовыйДокумент.Сотрудник
=
ОсновнойСотрудникПомещ
ения;
НовыйДокумент.Специализ
ация =
НовыйДокумент.Сотрудник.
ОсновнаяСпециализация;
КонецЕсли;
НовыйДокумент.Окончание
События =
ДатаОкончанияНовогоСобы
тия;
НовыйДокумент.Состояние
=
Перечисления.СостоянияСо
бытий.Запланировано;
Форма =
НовыйДокумент.ПолучитьФ
орму(,ЭтаФорма);
Форма.Открыть();
КонецЕсли;
СтруктураРеквизитов.Очист
ить();
СформироватьОтчет();
КонецПроцедуры
Процедура
ОбработкаЗаписиНовогоОб
ъекта(Объект, Источник)
122
СформироватьОтчет();
КонецПроцедуры
Процедура
КонтекстноеМенюТаблично
гоПоляОтменитьСобытие(К
нопка)
Расшифровка=ЭлементыФо
рмы.ПолеТабличногоДокум
ента1.ТекущаяОбласть.Расш
ифровка;
Если
ТипЗнч(Расшифровка)=Тип(
"ДокументСсылка.Событие"
) Тогда
Объект =
Расшифровка.ПолучитьОбъ
ект();
Попытка
Объект.Состояние =
Перечисления.СостоянияСо
бытий.Отменено;
Объект.Записать();
Исключение
Сообщить(ОписаниеОшибк
и());
КонецПопытки;
СформироватьОтчет();
КонецЕсли;
КонецПроцедуры
Процедура
КонтекстноеМенюТаблично
гоПоляКопировать(Кнопка)
Расшифровка=ЭлементыФо
рмы.ПолеТабличногоДокум
ента1.ТекущаяОбласть.Расш
ифровка;
СкопироватьВыбраныйДоку
мент(Расшифровка);
КонецПроцедуры
//
Процедура
СкопироватьВыбраныйДоку
мент(Расшифровка)
СтруктураРеквизитов.Очист
ить();
Если
ТипЗнч(Расшифровка)=Тип(
"ДокументСсылка.Событие"
) Тогда
МетаданныеКонфигурации
=
ОдинМодульНаВсех.Метада
нныеКонфигурации();
Для Каждого реквизит из
МетаданныеКонфигурации.
Документы.Событие.Реквиз
иты Цикл
СтруктураРеквизитов.Встав
ить(реквизит.Имя,Расшифро
вка[реквизит.Имя]);
КонецЦикла;
СтруктураРеквизитов.Встав
ить("Ссылка",Расшифровка)
;
КонецЕсли;
КонецПроцедуры
Процедура
КонтекстноеМенюТаблично
гоПоляВставить(Кнопка)
ВставитьСкопированныйДо
кумент();
КонецПроцедуры
//
Процедура
ВставитьСкопированныйДо
кумент()
Если
СтруктураРеквизитов.Колич
ество()=0 Тогда
Возврат;
КонецЕсли;
ОбластьПриемник =
ЭлементыФормы.ПолеТабл
ичногоДокумента1.Выделен
ныеОбласти[0];
Если
ТипЗнч(ОбластьПриемник.Р
асшифровка)=Тип("Докумен
тСсылка.Событие") Тогда
Предупреждение("На
выбранное время уже
оформлено событие",10);
Возврат;
КонецЕсли;
СоздатьНовоеСобытие(Обла
стьПриемник,"Копирование
");
КонецПроцедуры
Процедура
ПолеТабличногоДокумента
1Выбор(Элемент, Область,
СтандартнаяОбработка)
ДействияПользователяССоб
ытием(СтандартнаяОбработ
ка,Область.Расшифровка,"О
ткрыть");
КонецПроцедуры
//
Процедура
ДействияПользователяССоб
ытием(СтандартнаяОбработ
ка,Расшифровка,ТипДейств
ия)
Если
ТипЗнч(Расшифровка)=Тип(
"ДокументСсылка.Событие"
) Тогда
СтандартнаяОбработка=Ло
жь;
Если ТипДействия =
"Открыть" Тогда
Форма =
Расшифровка.ПолучитьФор
му("ФормаДокумента",Эта
Форма,"КлючУникальности
_123123");
Форма.Открыть();
иначеЕсли ТипДействия =
"РедактироватьСодержание"
Тогда
Объект =
Расшифровка.ПолучитьОбъ
ект();
Объект.Заблокировать();
Содержание =
Объект.Содержание;
Если
ВвестиСтроку(Содержание,
Строка(Расшифровка.Контр
агент), 0, Истина) Тогда
Объект.Содержание =
Содержание;
Объект.Записать();
СформироватьОтчет();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура
КонтекстноеМенюТаблично
гоПоляРедактировать(Кноп
ка)
ТекущаяОбласть =
ЭлементыФормы.ПолеТабл
ичногоДокумента1.Текущая
Область;
ДействияПользователяССоб
ытием(Ложь,ТекущаяОблас
ть.Расшифровка,"Открыть");
КонецПроцедуры
Процедура
ПолеТабличногоДокумента
1НачалоПеретаскивания(Эл
емент,
ПараметрыПеретаскивания,
СтандартнаяОбработка)
Если
ТипЗнч(ПараметрыПеретаск
ивания.Значение.ТекущаяО
бласть.Расшифровка)<>Тип(
"ДокументСсылка.Событие"
) Тогда
СтандартнаяОбработка =
Ложь;
КонецЕсли;
КонецПроцедуры
Процедура
ПолеТабличногоДокумента
1ПроверкаПеретаскивания(
Элемент,
ПараметрыПеретаскивания,
СтандартнаяОбработка,
Область)
КонецПроцедуры
Процедура
ПолеТабличногоДокумента
1Перетаскивание(Элемент,
ПараметрыПеретаскивания,
СтандартнаяОбработка,
Область)
СтандартнаяОбработка =
Ложь;
// если принимающая
область содержит событие,
то отмена
Если
ТипЗнч(Область.Расшифров
ка)=Тип("ДокументСсылка.
Событие") Тогда
ПараметрыПеретаскивания.
Действие =
ДействиеПеретаскивания.От
мена;
Предупреждение("На
выбранное время уже
оформлено событие",10);
КонецЕсли;
СкопироватьВыбраныйДоку
мент(ПараметрыПеретаскив
ания.Значение.ТекущаяОбла
сть.Расшифровка);
СоздатьНовоеСобытие(Обла
сть,"Перемещение");
//СформироватьОтчет();
КонецПроцедуры
Процедура
ПолеТабличногоДокумента
1ОкончаниеПеретаскивания
(Элемент,
ПараметрыПеретаскивания,
СтандартнаяОбработка)
СтандартнаяОбработка =
Ложь;
КонецПроцедуры
СтруктураРеквизитов =
Новый Структура();
Процедура
ОсновныеДействияФормыО
сновныеДействияФормыСф
ормировать(Кнопка)
Закрыть();
ВладелецФормы.Сформиров
атьОтчет();
КонецПроцедуры
Процедура
КоманднаяПанель1Заполнит
ь(Кнопка)
Выборка =
Справочники.Помещения.В
ыбрать();
Пока выборка.Следующий()
цикл
Если Выборка.ЭтоГруппа
ИЛИ
выборка.ПометкаУдаления
Тогда
Продолжить;
КонецЕсли;
123
Если
Помещения.Найти(Выборка.
Ссылка,"Помещение")=Нео
пределено Тогда
Строкатч =
Помещения.Добавить();
Строкатч.Помещение =
Выборка.Ссылка;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура
КоманднаяПанель3Заполнит
ь(Кнопка)
Выборка =
Справочники.Сотрудники.В
ыбрать();
Пока выборка.Следующий()
цикл
Если Выборка.ЭтоГруппа
ИЛИ
выборка.ПометкаУдаления
Тогда
Продолжить;
КонецЕсли;
Если
Сотрудники.Найти(Выборка
.Ссылка,"Сотрудник")=Неоп
ределено Тогда
Строкатч =
Сотрудники.Добавить();
Строкатч.Сотрудник =
Выборка.Ссылка;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура
КоманднаяПанель3Установ
итьФлажки(Кнопка)
Для Каждого Строкатч из
Сотрудники цикл
Строкатч.Использовать =
Истина ;
КонецЦикла;
КонецПроцедуры
Процедура
КоманднаяПанель3СнятьФл
ажки(Кнопка)
Для Каждого Строкатч из
Сотрудники цикл
Строкатч.Использовать =
Ложь ;
КонецЦикла;
КонецПроцедуры
Процедура
КоманднаяПанель1Установ
итьФлажки(Кнопка)
Для Каждого Строкатч из
Помещения цикл
Строкатч.Использовать =
Истина ;
КонецЦикла;
КонецПроцедуры
Процедура
КоманднаяПанель1СнятьФл
ажки(Кнопка)
Для Каждого Строкатч из
Помещения цикл
Строкатч.Использовать =
Ложь ;
КонецЦикла;
КонецПроцедуры
Процедура
ТабличноеПолеПриВыводе
Строки(Элемент,
ОформлениеСтроки,
ДанныеСтроки)
Если ДанныеСтроки.Цвет =
Неопределено Тогда
Возврат;
КонецЕсли;
ОформлениеСтроки.Ячейки.
ПримерЦвета.ЦветФона =
ДанныеСтроки.Цве
т;
КонецПроцедуры
Процедура
КоманднаяПанель2Заполнит
ь(Кнопка)
Выборка =
Справочники.Специализаци
и.Выбрать();
Пока выборка.Следующий()
цикл
Если Выборка.ЭтоГруппа
ИЛИ
выборка.ПометкаУдаления
Тогда
Продолжить;
КонецЕсли;
Если
ТаблицаСоответствияЦвето
в.Найти(Выборка.Ссылка,"С
пециализация")=Неопределе
но Тогда
Строкатч =
ТаблицаСоответствияЦвето
в.Добавить();
Строкатч.Специализация =
Выборка.Ссылка;
Строкатч.Цвет =
ЦветаСтиля.ЦветФонаПоля;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ПриОткрытии()
Если
ТаблицаСоответствияЦвето
в.Найти("Шапка
помещения","Специализаци
я")=неопределено Тогда
Строкатз =
ТаблицаСоответствияЦвето
в.Добавить();
Строкатз.Специализация =
"Шапка помещения";
Строкатз.цвет =Новый
Цвет(231,227,203);
КонецЕсли;
Если
ТаблицаСоответствияЦвето
в.Найти("Шапка
сотрудника","Специализаци
я")=неопределено Тогда
Строкатз =
ТаблицаСоответствияЦвето
в.Добавить();
Строкатз.Специализация =
"Шапка сотрудника";
Строкатз.цвет = Новый
Цвет(249,249,201);
КонецЕсли;
КонецПроцедуры
Процедура
ОбработкаПроведения(Отка
з, Режим)
//{{__КОНСТРУКТОР_ДВИ
ЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент
построен конструктором.
// При повторном
использовании
конструктора, внесенные
вручную изменения будут
утеряны!!!
// регистр
ОтметкаИсполнения
Движения.ОтметкаИсполне
ния.Записывать = Истина;
Движения.ОтметкаИсполне
ния.Очистить();
Для Каждого
ТекСтрокаДоки Из Доки
Цикл
Движение =
Движения.ОтметкаИсполне
ния.Добавить();
Движение.Дата = Дата;
Движение.Документ =
ТекСтрокаДоки.Документ;
Движение.Исполнен =
ТекСтрокаДоки.Отметка;
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИ
ЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Процедура
ОбработкаПроведения(Отка
з, Режим)
Если
ЭтотОбъект.Исправляемый
<> Неопределено Тогда
ИсправляемыйДок=ЭтотОб
ъект.Исправляемый.Получи
тьОбъект();
ИсправляемыйДок.Исправле
ние=ЭтотОбъект.Ссылка;
ИсправляемыйДок.Записать
();
ИсправляемыйДок.Установи
тьПометкуУдаления(Истина
);
Набор =
РегистрыСведений.Занятост
ьСотрудников.СоздатьНабо
рЗаписей();
Набор.Отбор.Регистратор.У
становить(ЭтотОбъект.Испр
авляемый);
Набор.Прочитать();
Набор.Очистить();
Набор.Записать(Истина);
Движение =
Движения.ЗанятостьСотруд
ников.Добавить();
Движение.Дата =
ДатаСобытия;
Движение.Помещение =
Помещение;
Движение.НачалоПериода =
НачалоСобытия;
Движение.Специализация =
Специализация;
Движение.КонецПериода =
ОкончаниеСобытия;
Движение.Сотрудник =
Сотрудник;
иначе
Движение =
Движения.ЗанятостьСотруд
ников.Добавить();
Движение.Дата =
ДатаСобытия;
Движение.Помещение =
Помещение;
Движение.НачалоПериода =
НачалоСобытия;
Движение.Специализация =
Специализация;
Движение.КонецПериода =
ОкончаниеСобытия;
Движение.Сотрудник =
Сотрудник;
КонецЕсли;
//}}__КОНСТРУКТОР_ДВИ
ЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Процедура
ПередЗаписью(Отказ,
РежимЗаписи,
РежимПроведения)
124
Если Состояние =
Перечисления.СостоянияСо
бытий.Отменено Тогда
РежимЗаписи =
РежимЗаписиДОкумента.От
менаПроведения;
КонецЕсли;
//проверка на события в это
же время
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|
ЗанятостьСотрудни
ков.Помещение,
|
ЗанятостьСотрудни
ков.Регистратор,
|
ЗанятостьСотрудни
ков.НачалоПериода,
|
ЗанятостьСотрудни
ков.КонецПериода
|ИЗ
|
РегистрСведений.З
анятостьСотрудников КАК
ЗанятостьСотрудников
|ГДЕ
|
ЗанятостьСотрудни
ков.Помещение =
&Помещение
| И
ЗанятостьСотрудников.Акти
вность = &Истина
| И
ЗанятостьСотрудников.Дата
= &Дата";
Запрос.УстановитьПараметр
("Истина", Истина);
Запрос.УстановитьПараметр
("Дата",
ЭтотОбъект.ДатаСобытия);
Запрос.УстановитьПараметр
("Помещение",
ЭтотОбъект.Помещение);
РезультатЗапроса =
Запрос.Выполнить();
ВыборкаДетальныеЗаписи =
РезультатЗапроса.Выбрать()
;
Пока
ВыборкаДетальныеЗаписи.С
ледующий() Цикл
Если
ЭтотОбъект.НачалоСобытия
>=ВыборкаДетальныеЗапис
и.НачалоПериода
И
ЭтотОбъект.НачалоСобытия
<=
ВыборкаДетальныеЗаписи.К
онецПериода
И ЭтотОбъект.Помещение =
ВыборкаДетальныеЗаписи.П
омещение
И ЭтотОбъект.Ссылка<>
ВыборкаДетальныеЗаписи.Р
егистратор Тогда
Сообщить("На это время
уже есть событие "+
ВыборкаДетальныеЗаписи.Р
егистратор + " документ не
может быть проведен!!!");
РежимЗаписи =
РежимЗаписиДОкумента.От
менаПроведения;
КонецЕсли;
КонецЦикла;
КонецПроцедуры

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)