Диплом: Автоматизация приема и обработки заявок отделом техподдержки ООО "Компьютерные бизнес-системы"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
142
НоваяПодЗадача.ЕдИзм = Шаблон.ЕдИзм;
КонецЕсли;
Если Не ПустаяСтрока(Шаблон.Комментарий) Тогда
НоваяПодЗадача.Комментарий = Шаблон.Комментарий;
КонецЕсли;
Если Не Шаблон.ВидЗадачи.Пустая() Тогда
НоваяПодЗадача.ВидЗадачи = Шаблон.ВидЗадачи;
КонецЕсли;
КонецЕсли;
НоваяПодЗадача.Записать();
Возврат НоваяПодЗадача.Ссылка;
КонецФункции
// при любом изменении (в т.ч. проведении) оповестить другие открытые формы
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
П = Новый Структура;
Если Параметры.Свойство("ЭтоНовый") Тогда // если из вызывающей формы
был пердан признак что это новый документ (кнопка Новая в Подзадачи)
Если Параметры.ЭтоНовый Тогда // то в родителя добавить эту задачу
ДобавитьСуществующуюПодзадачуНаСервере(Параметры.Родитель,
Объект.Ссылка); // добавить новую задачу в объект (в таб. часть)
П.Вставить("НоваяПодЗадача", Объект.Ссылка); // и пердаем
новую задачу в ОбработкаОповещения
П.Вставить("ЭтоНовый", Параметры.ЭтоНовый);
КонецЕсли;
КонецЕсли;
Оповестить("Дерево",П, ЭтотОбъект); // оповестить об изменении, сделанном
в этом форме, все остальные формы - пусть они перстаривают свое дерево
// далее см. в ОбработкаОповещения
КонецПроцедуры
// обработка оповещения о любых изменениях, проведенных в других формах
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия <> "Дерево" Тогда // не наш случай
Возврат;
КонецЕсли;
143
//Если Источник = ЭтотОбъект Тогда // если источник изменения - сама эта
форма
// Возврат;
//КонецЕсли;
ПутьВДереве =
ПолучитьПутьВДереве(Элементы.ДеревоПодзадач.ТекущиеДанные); // запомниь
путь до текущего элемента
Если Параметр.Свойство("ЭтоНовый") Тогда // если была передана структра
Если Параметр.ЭтоНовый Тогда // если оповещение передала форма, в
котрой был создан новый документ
Если Источник.ВладелецФормы = ЭтотОбъект Тогда // если та
форма вызывалась из этой
НоваяПодЗадача = Параметр.НоваяПодзадача; // ссылка на
измененную подзадачу
ПутьВДереве =
ПолучитьПутьВДереве(Элементы.ДеревоПодзадач.ТекущиеДанные,
НоваяПодЗадача); //сформировать массив подзадач от добавленной подзадачи до
корня
КонецЕсли;
КонецЕсли;
КонецЕсли;
// в любом случае - перестроить дерево
ЗаполнитьДеревоПодзадач(); // перстроить дерево подзадач
Элементы.ДеревоПодзадач.ТекущаяСтрока =
СпозиционироватьсяВДеревеПодзадач(ДеревоПодзадач, ПутьВДереве,
ПутьВДереве.Количество()-1); // спозиционироваться
КонецПроцедуры
// по команде ДеревоПодзадачаПровести и ДеревоПодзадачаРасПровести
&НаКлиенте
Процедура ДеревоПодзадачаПровести(Команда)
Если Элементы.ДеревоПодзадач.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ЭтаЗадача = Элементы.ДеревоПодзадач.ТекущиеДанные.ПодЗадача; // какую
подзадачу в дереве проводим
Если ЭтаЗадача.Пустая() Тогда
Возврат;
КонецЕсли;
Если Команда.Имя = "ДеревоПодзадачаПровести" Тогда
144
Если Не ПроверкаВозможностиПроведения(ЭтаЗадача) Тогда
Возврат;
КонецЕсли;
ПровестиПодЗадачуНаСервере(ЭтаЗадача);
КонецЕсли;
Если Команда.Имя = "ДеревоПодЗадачаРасПровести" Тогда
Если Не ПроверкаВозможностиРасПроведения(ЭтаЗадача) Тогда
Возврат;
КонецЕсли;
РасПровестиПодЗадачуНаСервере(ЭтаЗадача);
КонецЕсли;
ПутьВДереве =
ПолучитьПутьВДереве(Элементы.ДеревоПодзадач.ТекущиеДанные); // запомниь
путь до текущего элемента
ЗаполнитьДеревоПодзадач(); // перстроить дерево подзадач
Элементы.ДеревоПодзадач.ТекущаяСтрока =
СпозиционироватьсяВДеревеПодзадач(ДеревоПодзадач, ПутьВДереве,
ПутьВДереве.Количество()-1); // спозиционироваться
Оповестить("Дерево", Новый Структура, ЭтотОбъект); // оповестить об
изменении, сделанном в этом форме, все остальные формы - пусть они перстаривают
свое дерево
ОтобразитьИзменениеДанных(Объект.Ссылка,
ВидИзмененияДанных.Изменение);
КонецПроцедуры
// провести ПодЗадача
&НаСервере
Процедура ПровестиПодЗадачуНаСервере(ПодЗадача)
ПодЗадачаОбъект = ПодЗадача.ПолучитьОбъект();
ПодЗадачаОбъект.Записать(РежимЗаписиДокумента.Проведение,
РежимПроведенияДокумента.Неоперативный);
КонецПроцедуры
// распровести ПодЗадача
&НаСервере
Процедура РасПровестиПодЗадачуНаСервере(ПодЗадача)
ПодЗадачаОбъект = ПодЗадача.ПолучитьОбъект();
ПодЗадачаОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения,
РежимПроведенияДокумента.Неоперативный);
КонецПроцедуры
// по команде ДеревоСвернутьВсе - свернуть все узлы, кроме самого верхнего
145
&НаКлиенте
Процедура ДеревоСвернутьВсе(Команда)
Для Каждого СтрокаДерева Из ДеревоПодзадач.ПолучитьЭлементы() Цикл
Для Каждого Строка1 Из СтрокаДерева.ПолучитьЭлементы() Цикл
Элементы.ДеревоПодзадач.Свернуть(Строка1.ПолучитьИдентификатор());
КонецЦикла;
КонецЦикла;
КонецПроцедуры
// по команде ДеревоСвернутьДоТекущей - свернуть все узлы, но развернуть путь до
текщего узла
&НаКлиенте
Процедура ДеревоСвернутьДоТекущей(Команда)
ПутьВДереве =
ПолучитьПутьВДереве(Элементы.ДеревоПодзадач.ТекущиеДанные); // запомниь
путь до текущего элемента
Для Каждого СтрокаДерева Из ДеревоПодзадач.ПолучитьЭлементы() Цикл
Для Каждого Строка1 Из СтрокаДерева.ПолучитьЭлементы() Цикл
Элементы.ДеревоПодзадач.Свернуть(Строка1.ПолучитьИдентификатор());
КонецЦикла;
КонецЦикла;
ЗаполнитьДеревоПодзадач(); // перстроить дерево подзадач
Элементы.ДеревоПодзадач.ТекущаяСтрока =
СпозиционироватьсяВДеревеПодзадач(ДеревоПодзадач, ПутьВДереве,
ПутьВДереве.Количество()-1); // спозиционироваться
КонецПроцедуры
// по команде ДеревоФильтрПроведенные - отобразить в дереве только
Проведенные/Непроведенные/Все
&НаКлиенте
Процедура ДеревоФильтрПроведенные(Команда)
ФильтрПроведенные = ФильтрПроведенные - 1; // при каждом входе в
команду - уменьшить значенеи фильтра на 1
Если ФильтрПроведенные = -1 Тогда
ФильтрПроведенные = 2; // по кругу
КонецЕсли;
// заголовок кнопки
Если ФильтрПроведенные = 2 Тогда
Элементы.ДеревоПодзадачПроведенные.Заголовок = "Все";
146
ИначеЕсли ФильтрПроведенные = 1 Тогда
Элементы.ДеревоПодзадачПроведенные.Заголовок = "Выполеннные";
ИначеЕсли ФильтрПроведенные = 0 Тогда
Элементы.ДеревоПодзадачПроведенные.Заголовок = "Не
выполеннные";
КонецЕсли;
ЗаполнитьДеревоПодзадач(); // перестроить дерево с отбором,
удовлетворяющем фильтру
КонецПроцедуры
&НаКлиенте
Процедура ДеревоПоШаблону(Команда)
ОткрытьФорму("Справочник.Этапы.ФормаВыбора", ,ЭтаФорма);
// Продолжение см. в ОбработкаВыбора формы
КонецПроцедуры
//--------------------------------------------------------------------------------
// ЗАКЛАДКА РЕСУРСЫ
// при выборе/изменении номенклатуры
&НаКлиенте
Процедура НоменклатураНоменклатураПриИзменении(Элемент)
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Количество = 1;
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Коэфф = 1;
ОсновнаяЕдиницаОтгрузки =
ОбщийСрв.ПолучитьОсновнуюЕдиницуОтгрузкиНоменклатуры(ЭтотОбъект.Элем
енты.Номенклатура.ТекущиеДанные.Номенклатура);
Если Не ОсновнаяЕдиницаОтгрузки.Пустая() Тогда
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.ЕдИзмерения =
ОсновнаяЕдиницаОтгрузки;
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Коэфф =
ОбщийСрв.ПолучитьКоэффициент(ЭтотОбъект.Элементы.Номенклатура.Текущие
Данные.ЕдИзмерения);
КонецЕсли;
ОбщийСрв.РассчитатьСуммуСтроки(Объект.Дата,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Номенклатура,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Количество,
147
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Коэфф,
Объект.ТипЦен,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Цена,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Сумма);
КонецПроцедуры
&НаКлиенте
Процедура НоменклатураКоличествоПриИзменении(Элемент)
ОбщийСрв.РассчитатьСуммуСтроки(Объект.Дата,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Номенклатура,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Количество,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Коэфф,
Объект.ТипЦен,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Цена,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Сумма);
КонецПроцедуры
&НаКлиенте
Процедура НоменклатураЕдИзмеренияПриИзменении(Элемент)
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Коэфф =
ОбщийСрв.ПолучитьКоэффициент(ЭтотОбъект.Элементы.Номенклатура.Текущие
Данные.ЕдИзмерения);
ОбщийСрв.РассчитатьСуммуСтроки(Объект.Дата,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Номенклатура,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Количество,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Коэфф,
Объект.ТипЦен,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Цена,
148
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Сумма);
КонецПроцедуры
// при выборе номенклатуры - проверка резерва
&НаКлиенте
Процедура НоменклатураНоменклатураОбработкаВыбора(Элемент,
ВыбранноеЗначение, СтандартнаяОбработка)
Если Зарезервировано(ВыбранноеЗначение) Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
// проверка не зарезервирована ли ВыбНоменклатура в других задачах
&НаСервере
Функция Зарезервировано(ВыбНоменклатура)
Если Не ВыбНоменклатура.ВидНоменклатуры.Резервируется Тогда
Возврат Ложь;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗадачаНоменклатура.Номенклатура,
| Задача.Ссылка КАК СамаЗадача
|ИЗ
| Документ.Задача.Номенклатура КАК ЗадачаНоменклатура
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.Задача КАК Задача
| ПО ЗадачаНоменклатура.Ссылка = Задача.Ссылка
|ГДЕ
| ЗадачаНоменклатура.Номенклатура = &ВыбНоменклатура
| И Задача.Проведен = Ложь
| И ( (&ДатаНачалаРезерва МЕЖДУ Задача.Дата И
Задача.ОжидаемаяДатаВыполнения)
| ИЛИ (&ДатаОкончанияРезерва МЕЖДУ Задача.Дата И
Задача.ОжидаемаяДатаВыполнения)
| ИЛИ (Задача.Дата МЕЖДУ &ДатаНачалаРезерва И
&ДатаОкончанияРезерва)
| ИЛИ (Задача.ОжидаемаяДатаВыполнения МЕЖДУ
&ДатаНачалаРезерва И &ДатаОкончанияРезерва)
| )
|";
Запрос.УстановитьПараметр("ВыбНоменклатура",
ВыбНоменклатура);
149
Запрос.УстановитьПараметр("ДатаНачалаРезерва",
НачалоДня(Объект.Дата));
Запрос.УстановитьПараметр("ДатаОкончанияРезерва",
КонецДня(Объект.ОжидаемаяДатаВыполнения));
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(ВыбНоменклатура.Наименование + " зарезервировано "+
ОбщийСрв.ПредставлениеЗадачи(Выборка.СамаЗадача));
Возврат Истина
КонецЦикла;
Возврат Ложь;
КонецФункции
// при изменени даты документа проверить - нет ли зарезервированных ресурсов
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
Для Каждого ТекСтрокаНоменклатура Из Объект.Номенклатура Цикл
Зарезервировано(ТекСтрокаНоменклатура.Номенклатура);
КонецЦикла;
КонецПроцедуры
//--------------------------------------------------------------------------------
// ЗАКЛАДКА ФАЙЛЫ
// по команде Создать новый файл
&НаКлиенте
Процедура ФайлыСоздать(Команда)
П = Новый Структура;
П.Вставить("Документ", Объект.Ссылка);
ОткрытьФорму("Справочник.ХранимыеФайлы.ФормаОбъекта", П,
ЭтотОбъект.Элементы.Файлы);
// результат выбора см. в ОбработкаВыбора элемента формы Файлы (таблица)
КонецПроцедуры
&НаКлиенте
Процедура ФайлыОбработкаВыбора(Элемент, ВыбранноеЗначение,
СтандартнаяОбработка)
НоваяСтрока = Объект.Файлы.Добавить();
150
НоваяСтрока.Файл = ВыбранноеЗначение.Получить(0).Значение;
НоваяСтрока.Комментарий = ВыбранноеЗначение.Получить(0).Значение;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФайл(Команда)
ХранимыйФайл = ЭтотОбъект.Элементы.Файлы.ТекущиеДанные.Файл;
ОткрытьХранимыйФайл(ХранимыйФайл);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьХранимыйФайл(ХранимыйФайл)
Если ХранимыйФайл = Неопределено Тогда
Возврат;
КонецЕсли;
Файл = Новый Файл(ОбщийСрв.ПолучитьИмяФайла(ХранимыйФайл));
ИмяФайла = ПолучитьИмяВременногоФайла(Файл.Расширение);
Адрес = ПолучитьНавигационнуюСсылку(ХранимыйФайл, "ДанныеФайла");
ПолучитьФайл(Адрес, ИмяФайла, Ложь);
ЗапуститьПриложение(ИмяФайла);
КонецПроцедуры

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

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