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;
КонецЕсли;
Если Не
НовыйДокумент.Помещени
е.Пустая() Тогда
ОсновнойСотрудникПомещ
ения =
Справочники.Сотрудники.Н
айтиПоРеквизиту("Основно
еРабочееМесто",НовыйДоку
мент.Помещение);
НовыйДокумент.Сотрудник
=
ОсновнойСотрудникПомещ
ения;
НовыйДокумент.Специализ
ация =
НовыйДокумент.Сотрудник.
ОсновнаяСпециализация;
КонецЕсли;
НовыйДокумент.Окончание
События =
ДатаОкончанияНовогоСобы
тия;
НовыйДокумент.Состояние
=
Перечисления.СостоянияСо
бытий.Запланировано;
Форма =
НовыйДокумент.ПолучитьФ
орму(,ЭтаФорма);
Форма.Открыть();
КонецЕсли;
СтруктураРеквизитов.Очист
ить();
СформироватьОтчет();
КонецПроцедуры
Процедура
ОбработкаЗаписиНовогоОб
ъекта(Объект, Источник)