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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
112
Кухлевский Д.С., Островерх А.В., Радченко М.Г., Хрусталева Е.Ю. Под
редакцией М. Г. Радченко. 870 с. 1С-Паблишинг, 2013 г.
27. Разработка управляемого интерфейса (+CD). Серия "1С:Профессиональная
разработка". Ажеронок В.А., Островерх А. В., Радченко М. Г., Хрусталева Е.
Ю. 740 с. 1С-Паблишинг, 2015 г.
28. Реализация прикладных задач в системе "1С:Предприятие 8.2" (+CD). Серия
"1С:Профессиональная разработка". Габец А.П., Козырев Д.В., Кухлевский
Д.С., Хрусталева Е.Ю. 830 с. 1С-Паблишинг, 2014 г.
29. Репин В.В., Елиферов В.Г. Процессный подход к управлению.
Моделирование бизнес-процессов. М.: РИА «Стандарты и качество», 2014.
408 с., илл. – (Серия «Практический менеджмент»)
30. Решение специальных прикладных задач в "1С:Предприятии 8.2". Серия
"1С:Профессиональная разработка". Гончаров Д. И., Хрусталева Е. Ю. 935 с.
-Паблишинг, 2015 г.
31. 1С:Предприятие 8. Система программ [Электронный ресурс]. - http://v8.1c.ru/
32. IntraService.Универсальная Service Desk система [Электронный ресурс]. -
https://intraservice.ru/
33. Новости и технологии торговли [Электронный ресурс]. Режим доступа:
http://www.torgrus.com
34. Программирование для всех [Электронный ресурс]. Режим доступа:
http://www.realcoding.net/
113
Приложение 1. Текст программных модулей
Модуль документа «Задача»
// префикс номера документа
Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
Префикс = Обмен.ПолучитьПрефиксНомера();
КонецПроцедуры
// при вводе нового документа
Процедура ОбработкаЗаполнения(Основание, Значение)
ОбщийСрв.ПриВводеНовойЗадачи(ЭтотОбъект); // заполнить все реквизиты
по-умолчанию для новой задачи
// если вводится на основании Контрагента
Если ТипЗнч(Основание) = Тип("СправочникСсылка.Контрагенты") Тогда
Контрагент = Основание; // основание - это
контрагент
Отвественный = Основание.Отвественный; // отвественный по задаче -
ответсвенный по контрагенту
Исполнитель = Исполнители.Добавить(); // первый исполнитель -
Исполнитель.Исполнитель = Основание.Отвественный;
Исполнитель.Процент = 100;
КонецЕсли;
// если вводится на основании другой задачи
Если ТипЗнч(Основание) = Тип("ДокументСсылка.Задача") Тогда
ОбщийСрв.ПриВводеНовойЗадачи(ЭтотОбъект, Основание);
ДокОснование = Документы.Задача.ПустаяСсылка();
КонецЕсли;
Если ТипЗнч(Основание) = Тип("Структура") Тогда //если вводлится новый
из списка с установленным отбором
// то данные заполняются автоматически из отбора "Заполнять из
данных заполнения"
КонецЕсли
КонецПроцедуры
// если копирование - то переопределить логику копирования
Процедура ПриКопировании(ОбъектКопирования)
Автор = ПараметрыСеанса.глПользователь; // автор - текущий
пользователь
Отвественный = ПараметрыСеанса.глПользователь; // автор - текущий
пользователь
Статус = Справочники.Статусы.Новая; // новая
задача - статус Новая
114
ДокОснование = ОбъектКопирования.Ссылка; // Док основание - та задача
из котрой скопировали
Переписка.Очистить();
Исполнители.Очистить();
Подзадачи.Очистить();
Номенклатура.Очистить();
КонецПроцедуры
// перед удалением документа
Процедура ПередУдалением(Отказ)
// проверка на закрытый период
Если ОбщийСрв.ВЗакрытомПериоде(ЭтотОбъект) Тогда
Сообщить(ОбщийСрв.ПредставлениеЗадачи(ЭтотОбъект) +
"Находится в закрытом периоде. Удаление невозможно");
Отказ = Истина;
Возврат;
КонецЕсли;
// проверка Проведена
Если (ЭтотОбъект.Проведен И Константы.ЗапретПроведенных.Получить()) И
Не ПараметрыСеанса.глЗаписьВедетИсполнитель Тогда
Сообщить(ОбщийСрв.ПредставлениеЗадачи(ЭтотОбъект) + "Уже
выполнена. Удаление невозможно");
Отказ = Истина;
Возврат;
КонецЕсли;
// проверка прав
Если Не ОбщийСрв.ПроверкаПрав(Автор,
ПараметрыСеанса.глПользователь) Тогда
Сообщить(ОбщийСрв.ПредставлениеЗадачи(ЭтотОбъект) + "Нет прав
удалять чужой документ");
Отказ = Истина;
Возврат;
КонецЕсли;
// удалить вхождение этого документа в табличную часть Подзадачи любых
остальных документов
ТЗРодителей = СформироватьСписокРодителей(ЭтотОбъект.Ссылка); //
сформировать ТЗ всех документов, в которые входит удаляемая
Для Каждого СтрокаРодитель Из ТЗРодителей Цикл // для каждого родителя
УдалитьПодзадачу(СтрокаРодитель.Ссылка, ЭтотОбъект.Ссылка); //
удалить текущую(удяляемую) задачу из родителя
КонецЦикла
КонецПроцедуры
115
// удалить ЗадачаРебенок из табличной части Подзадачи у ЗадачаРодитель
Процедура УдалитьПодзадачу(ЗадачаРодитель, ЗадачаРебенок)
Если ЗадачаРодитель.Пустая() Тогда
Возврат;
КонецЕсли;
ЗадачаРодительОбъект = ЗадачаРодитель.ПолучитьОбъект();
СтруктураОтбора = Новый Структура("Подзадача", ЗадачаРебенок);
МассивУдаляемыхСтрок =
ЗадачаРодительОбъект.Подзадачи.НайтиСтроки(СтруктураОтбора);
Для Каждого ЭлементМассива Из МассивУдаляемыхСтрок Цикл
ЗадачаРодительОбъект.Подзадачи.Удалить(ЭлементМассива);
КонецЦикла;
ЗадачаРодительОбъект.Записать();
КонецПроцедуры
// сформироват ТЗ документов, в которые ПодЗадачаРебенок входит в таб часть
Подзадачи ( вявном виде, не через рекурсию)
Функция СформироватьСписокРодителей(ПодЗадачаРебенок)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Задачи.Ссылка
|ИЗ
| Документ.Задача.Подзадачи КАК ЗадачаПодзадачи
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.Задача КАК Задачи
| ПО ЗадачаПодзадачи.Ссылка = Задачи.Ссылка
|ГДЕ
| ЗадачаПодзадачи.Подзадача = &ПодзадачаРебенок
|";
Запрос.УстановитьПараметр("ПодзадачаРебенок", ПодзадачаРебенок);
РезультатЗапроса = Запрос.Выполнить();
ТЗ = РезультатЗапроса.Выгрузить();
Возврат ТЗ;
КонецФункции
// провести все непроведенные подзадачи из ЗадачаОбъект и провести ее саму
Процедура ВыполнитьВсеПодзадачиПринудительно(ЗадачаОбъект)
116
Для Каждого ТекСтрокаПодзадача Из ЗадачаОбъект.Подзадачи Цикл // по
всем строкам таб. части Подзадачи
Если ТекСтрокаПодзадача.Подзадача.Проведен <> Истина Тогда //
если не была проведена
ВыполнитьВсеПодзадачиПринудительно(ТекСтрокаПодзадача.Подзадача.По
лучитьОбъект()); // провести все ее подзадачи
ТекСтрокаПодзадача.Подзадача.ПолучитьОбъект().Записать(РежимЗаписиД
окумента.Проведение, РежимПроведенияДокумента.Неоперативный); // провести ее
саму
Сообщить("Выполнена подзадача " +
ОбщийСрв.ПредставлениеЗадачи(ТекСтрокаПодзадача.Подзадача));
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// проверить, есть ли среди ТЧ Исполнители записи без отметки исполнения
Функция ПроверитьИсполнение()
Исполненно = Истина;
Для Каждого ТекСтрокаИсполнитель Из Исполнители Цикл
Если ТекСтрокаИсполнитель.ДатаИсполнения =
Дата(01,01,0001,00,00,00) Тогда
Сообщить("Задача не может быть выполнена, так как
исполнитель \" + ТекСтрокаИсполнитель.Исполнитель +
"\ не проставил отметку исполнения");
Исполненно = Ложь;
КонецЕсли;
Если Не ТекСтрокаИсполнитель.РезультатИсполнения.Пустая() Тогда
Если Не ТекСтрокаИсполнитель.РезультатИсполнения.Успех
Тогда
Сообщить("Задача не может быть выполнена, так как
исполнитель \" + ТекСтрокаИсполнитель.Исполнитель +
"\ проставил отрицательную отметку
исполнения");
Исполненно = Ложь;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Исполненно;
КонецФункции
// действия при проведении документа
Функция ПриПроведении(Отказ)
Источник: https://baza.diplomsite.ru/previewfile/1978