Дипломная работа: Автоматизация обработки заявок в ООО «АйТи-Студио»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
143
Иначе
Ответсвенный =
ОбщийСрв.ОтветсвенныйПоПодразделению(Шаблон.ОтветсвенноеПодразделе
ние);
КонецЕсли;
Если Не Ответсвенный.Пустая() Тогда
НоваяПодЗадача.Отвественный = Ответсвенный; //
Ответсвенный
НоваяСтрИсполнители =
НоваяПодЗадача.Исполнители.Добавить();// он же - первый исполнитель
НоваяСтрИсполнители.Исполнитель = Ответсвенный;
НоваяСтрИсполнители.Процент = 100;
НоваяСтрИсполнители.Задание = Шаблон.Наименование;
КонецЕсли;
Если Не Шаблон.Статус.Пустая() Тогда
НоваяПодЗадача.Статус = Шаблон.Статус;
КонецЕсли;
Если Не Шаблон.Срок = 0 Тогда
НоваяПодЗадача.ОжидаемаяДатаВыполнения =
ТекущаяДата() + 24*60*60*Шаблон.Срок;
КонецЕсли;
Если Не Шаблон.Объем = 0 Тогда
НоваяПодЗадача.Объем = Шаблон.Объем;
КонецЕсли;
Если Не Шаблон.ЕдИзм.Пустая() Тогда
НоваяПодЗадача.ЕдИзм = Шаблон.ЕдИзм;
КонецЕсли;
Если Не ПустаяСтрока(Шаблон.Комментарий) Тогда
НоваяПодЗадача.Комментарий = Шаблон.Комментарий;
КонецЕсли;
Если Не Шаблон.ВидЗадачи.Пустая() Тогда
НоваяПодЗадача.ВидЗадачи = Шаблон.ВидЗадачи;
КонецЕсли;
КонецЕсли;
НоваяПодЗадача.Записать();
Возврат НоваяПодЗадача.Ссылка;
КонецФункции
144
// при любом изменении (в т.ч. проведении) оповестить другие открытые
формы
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
П = Новый Структура;
Если Параметры.Свойство("ЭтоНовый") Тогда // если из вызывающей
формы был пердан признак что это новый документ (кнопка Новая в
Подзадачи)
Если Параметры.ЭтоНовый Тогда // то в родителя добавить эту
задачу
ДобавитьСуществующуюПодзадачуНаСервере(Параметры.Родитель,
Объект.Ссылка); // добавить новую задачу в объект (в таб. часть)
П.Вставить("НоваяПодЗадача", Объект.Ссылка); // и пердаем
новую задачу в ОбработкаОповещения
П.Вставить("ЭтоНовый", Параметры.ЭтоНовый);
КонецЕсли;
КонецЕсли;
Оповестить("Дерево",П, ЭтотОбъект); // оповестить об изменении,
сделанном в этом форме, все остальные формы - пусть они перстаривают свое
дерево
// далее см. в ОбработкаОповещения
КонецПроцедуры
// обработка оповещения о любых изменениях, проведенных в других формах
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия <> "Дерево" Тогда // не наш случай
Возврат;
КонецЕсли;
//Если Источник = ЭтотОбъект Тогда // если источник изменения - сама
эта форма
// Возврат;
//КонецЕсли;
ПутьВДереве =
ПолучитьПутьВДереве(Элементы.ДеревоПодзадач.ТекущиеДанные); //
запомниь путь до текущего элемента
145
Если Параметр.Свойство("ЭтоНовый") Тогда // если была передана
структра
Если Параметр.ЭтоНовый Тогда // если оповещение передала
форма, в котрой был создан новый документ
Если Источник.ВладелецФормы = ЭтотОбъект Тогда // если
та форма вызывалась из этой
НоваяПодЗадача = Параметр.НоваяПодзадача; // ссылка
на измененную подзадачу
ПутьВДереве =
ПолучитьПутьВДереве(Элементы.ДеревоПодзадач.ТекущиеДанные,
НоваяПодЗадача); //сформировать массив подзадач от добавленной подзадачи
до корня
КонецЕсли;
КонецЕсли;
КонецЕсли;
// в любом случае - перестроить дерево
ЗаполнитьДеревоПодзадач(); // перстроить дерево подзадач
Элементы.ДеревоПодзадач.ТекущаяСтрока =
СпозиционироватьсяВДеревеПодзадач(ДеревоПодзадач, ПутьВДереве,
ПутьВДереве.Количество()-1); // спозиционироваться
КонецПроцедуры
// по команде ДеревоПодзадачаПровести и ДеревоПодзадачаРасПровести
&НаКлиенте
Процедура ДеревоПодзадачаПровести(Команда)
Если Элементы.ДеревоПодзадач.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ЭтаЗадача = Элементы.ДеревоПодзадач.ТекущиеДанные.ПодЗадача; //
какую подзадачу в дереве проводим
Если ЭтаЗадача.Пустая() Тогда
Возврат;
КонецЕсли;
Если Команда.Имя = "ДеревоПодзадачаПровести" Тогда
Если Не ПроверкаВозможностиПроведения(ЭтаЗадача) Тогда
Возврат;
КонецЕсли;
ПровестиПодЗадачуНаСервере(ЭтаЗадача);
КонецЕсли;
146
Если Команда.Имя = "ДеревоПодЗадачаРасПровести" Тогда
Если Не ПроверкаВозможностиРасПроведения(ЭтаЗадача) Тогда
Возврат;
КонецЕсли;
РасПровестиПодЗадачуНаСервере(ЭтаЗадача);
КонецЕсли;
ПутьВДереве =
ПолучитьПутьВДереве(Элементы.ДеревоПодзадач.ТекущиеДанные); //
запомниь путь до текущего элемента
ЗаполнитьДеревоПодзадач(); // перстроить дерево подзадач
Элементы.ДеревоПодзадач.ТекущаяСтрока =
СпозиционироватьсяВДеревеПодзадач(ДеревоПодзадач, ПутьВДереве,
ПутьВДереве.Количество()-1); // спозиционироваться
Оповестить("Дерево", Новый Структура, ЭтотОбъект); // оповестить об
изменении, сделанном в этом форме, все остальные формы - пусть они
перстаривают свое дерево
ОтобразитьИзменениеДанных(Объект.Ссылка,
ВидИзмененияДанных.Изменение);
КонецПроцедуры
// провести ПодЗадача
&НаСервере
Процедура ПровестиПодЗадачуНаСервере(ПодЗадача)
ПодЗадачаОбъект = ПодЗадача.ПолучитьОбъект();
ПодЗадачаОбъект.Записать(РежимЗаписиДокумента.Проведение,
РежимПроведенияДокумента.Неоперативный);
КонецПроцедуры
// распровести ПодЗадача
&НаСервере
Процедура РасПровестиПодЗадачуНаСервере(ПодЗадача)
ПодЗадачаОбъект = ПодЗадача.ПолучитьОбъект();
ПодЗадачаОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения,
РежимПроведенияДокумента.Неоперативный);
КонецПроцедуры
// по команде ДеревоСвернутьВсе - свернуть все узлы, кроме самого верхнего
&НаКлиенте
Процедура ДеревоСвернутьВсе(Команда)
147
Для Каждого СтрокаДерева Из ДеревоПодзадач.ПолучитьЭлементы()
Цикл
Для Каждого Строка1 Из СтрокаДерева.ПолучитьЭлементы() Цикл
Элементы.ДеревоПодзадач.Свернуть(Строка1.ПолучитьИдентификатор()
);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
// по команде ДеревоСвернутьДоТекущей - свернуть все узлы, но развернуть
путь до текщего узла
&НаКлиенте
Процедура ДеревоСвернутьДоТекущей(Команда)
ПутьВДереве =
ПолучитьПутьВДереве(Элементы.ДеревоПодзадач.ТекущиеДанные); //
запомниь путь до текущего элемента
Для Каждого СтрокаДерева Из ДеревоПодзадач.ПолучитьЭлементы()
Цикл
Для Каждого Строка1 Из СтрокаДерева.ПолучитьЭлементы() Цикл
Элементы.ДеревоПодзадач.Свернуть(Строка1.ПолучитьИдентификатор()
);
КонецЦикла;
КонецЦикла;
ЗаполнитьДеревоПодзадач(); // перстроить дерево подзадач
Элементы.ДеревоПодзадач.ТекущаяСтрока =
СпозиционироватьсяВДеревеПодзадач(ДеревоПодзадач, ПутьВДереве,
ПутьВДереве.Количество()-1); // спозиционироваться
КонецПроцедуры
// по команде ДеревоФильтрПроведенные - отобразить в дереве только
Проведенные/Непроведенные/Все
&НаКлиенте
Процедура ДеревоФильтрПроведенные(Команда)
ФильтрПроведенные = ФильтрПроведенные - 1; // при каждом входе в
команду - уменьшить значенеи фильтра на 1
Если ФильтрПроведенные = -1 Тогда
ФильтрПроведенные = 2; // по кругу
Источник: https://baza.diplomsite.ru/previewfile/1865