Диплом: Автоматизация и обеспечение информационной безопасности процесса внутрикорпоративного взаимодействия сотрудников компании ООО \"Теком\"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
113
// по команде ДеревоФильтрПроведенные - отобразить в дереве только
Проведенные/Непроведенные/Все
&НаКлиенте
Процедура ДеревоФильтрПроведенные(Команда)
ФильтрПроведенные = ФильтрПроведенные - 1; // при каждом входе в
команду - уменьшить значенеи фильтра на 1
Если ФильтрПроведенные = -1 Тогда
ФильтрПроведенные = 2; // по кругу
КонецЕсли;
// заголовок кнопки
Если ФильтрПроведенные = 2 Тогда
Элементы.ДеревоПодзадачПроведенные.Заголовок = "Все";
ИначеЕсли ФильтрПроведенные = 1 Тогда
Элементы.ДеревоПодзадачПроведенные.Заголовок =
"Выполеннные";
ИначеЕсли ФильтрПроведенные = 0 Тогда
Элементы.ДеревоПодзадачПроведенные.Заголовок = "Не
выполеннные";
КонецЕсли;
ЗаполнитьДеревоПодзадач(); // перестроить дерево с отбором,
удовлетворяющем фильтру
КонецПроцедуры
&НаКлиенте
Процедура ДеревоПоШаблону(Команда)
ОткрытьФорму("Справочник.Этапы.ФормаВыбора", ,ЭтаФорма);
// Продолжение см. в ОбработкаВыбора формы
КонецПроцедуры
//--------------------------------------------------------------------------------
// ЗАКЛАДКА РЕСУРСЫ
// при выборе/изменении номенклатуры
&НаКлиенте
Процедура НоменклатураНоменклатураПриИзменении(Элемент)
114
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Количество
= 1;
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Коэфф = 1;
ОсновнаяЕдиницаОтгрузки =
ОбщийСрв.ПолучитьОсновнуюЕдиницуОтгрузкиНоменклатуры(ЭтотОбъект
.Элементы.Номенклатура.ТекущиеДанные.Номенклатура);
Если Не ОсновнаяЕдиницаОтгрузки.Пустая() Тогда
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.ЕдИзмерения =
ОсновнаяЕдиницаОтгрузки;
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Коэфф
=
ОбщийСрв.ПолучитьКоэффициент(ЭтотОбъект.Элементы.Номенклатура.Тек
ущиеДанные.ЕдИзмерения);
КонецЕсли;
ОбщийСрв.РассчитатьСуммуСтроки(Объект.Дата,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Номенклатура,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Количество,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Коэфф,
Объект.ТипЦен,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Цена,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Сумма);
КонецПроцедуры
&НаКлиенте
Процедура НоменклатураКоличествоПриИзменении(Элемент)
ОбщийСрв.РассчитатьСуммуСтроки(Объект.Дата,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Номенклатура,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Количество,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Коэфф,
Объект.ТипЦен,
115
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Цена,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Сумма);
КонецПроцедуры
&НаКлиенте
Процедура НоменклатураЕдИзмеренияПриИзменении(Элемент)
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Коэфф =
ОбщийСрв.ПолучитьКоэффициент(ЭтотОбъект.Элементы.Номенклатура.Тек
ущиеДанные.ЕдИзмерения);
ОбщийСрв.РассчитатьСуммуСтроки(Объект.Дата,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Номенклатура,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Количество,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Коэфф,
Объект.ТипЦен,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Цена,
ЭтотОбъект.Элементы.Номенклатура.ТекущиеДанные.Сумма);
КонецПроцедуры
// при выборе номенклатуры - проверка резерва
&НаКлиенте
Процедура НоменклатураНоменклатураОбработкаВыбора(Элемент,
ВыбранноеЗначение, СтандартнаяОбработка)
Если Зарезервировано(ВыбранноеЗначение) Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
// проверка не зарезервирована ли ВыбНоменклатура в других задачах
&НаСервере
Функция Зарезервировано(ВыбНоменклатура)
Если Не ВыбНоменклатура.ВидНоменклатуры.Резервируется Тогда
116
Возврат Ложь;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗадачаНоменклатура.Номенклатура,
| Задача.Ссылка КАК СамаЗадача
|ИЗ
| Документ.Задача.Номенклатура КАК ЗадачаНоменклатура
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.Задача КАК Задача
| ПО ЗадачаНоменклатура.Ссылка = Задача.Ссылка
|ГДЕ
| ЗадачаНоменклатура.Номенклатура = &ВыбНоменклатура
| И Задача.Проведен = Ложь
| И ( (&ДатаНачалаРезерва МЕЖДУ Задача.Дата И
Задача.ОжидаемаяДатаВыполнения)
| ИЛИ (&ДатаОкончанияРезерва МЕЖДУ Задача.Дата И
Задача.ОжидаемаяДатаВыполнения)
| ИЛИ (Задача.Дата МЕЖДУ &ДатаНачалаРезерва И
&ДатаОкончанияРезерва)
| ИЛИ (Задача.ОжидаемаяДатаВыполнения МЕЖДУ
&ДатаНачалаРезерва И &ДатаОкончанияРезерва)
| )
|";
Запрос.УстановитьПараметр("ВыбНоменклатура",
ВыбНоменклатура);
Запрос.УстановитьПараметр("ДатаНачалаРезерва",
НачалоДня(Объект.Дата));
Запрос.УстановитьПараметр("ДатаОкончанияРезерва",
КонецДня(Объект.ОжидаемаяДатаВыполнения));
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(ВыбНоменклатура.Наименование + " зарезервировано
"+ ОбщийСрв.ПредставлениеЗадачи(Выборка.СамаЗадача));
Возврат Истина
КонецЦикла;
Возврат Ложь;
117
КонецФункции
// при изменени даты документа проверить - нет ли зарезервированных
ресурсов
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
Для Каждого ТекСтрокаНоменклатура Из Объект.Номенклатура Цикл
Зарезервировано(ТекСтрокаНоменклатура.Номенклатура);
КонецЦикла;
КонецПроцедуры
//--------------------------------------------------------------------------------
// ЗАКЛАДКА ФАЙЛЫ
// по команде Создать новый файл
&НаКлиенте
Процедура ФайлыСоздать(Команда)
П = Новый Структура;
П.Вставить("Документ", Объект.Ссылка);
ОткрытьФорму("Справочник.ХранимыеФайлы.ФормаОбъекта", П,
ЭтотОбъект.Элементы.Файлы);
// результат выбора см. в ОбработкаВыбора элемента формы Файлы
(таблица)
КонецПроцедуры
&НаКлиенте
Процедура ФайлыОбработкаВыбора(Элемент, ВыбранноеЗначение,
СтандартнаяОбработка)
НоваяСтрока = Объект.Файлы.Добавить();
НоваяСтрока.Файл = ВыбранноеЗначение.Получить(0).Значение;
НоваяСтрока.Комментарий =
ВыбранноеЗначение.Получить(0).Значение;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФайл(Команда)
ХранимыйФайл = ЭтотОбъект.Элементы.Файлы.ТекущиеДанные.Файл;
ОткрытьХранимыйФайл(ХранимыйФайл);
КонецПроцедуры
118
&НаКлиенте
Процедура ОткрытьХранимыйФайл(ХранимыйФайл)
Если ХранимыйФайл = Неопределено Тогда
Возврат;
КонецЕсли;
Файл = Новый Файл(ОбщийСрв.ПолучитьИмяФайла(ХранимыйФайл));
ИмяФайла = ПолучитьИмяВременногоФайла(Файл.Расширение);
Адрес = ПолучитьНавигационнуюСсылку(ХранимыйФайл,
"ДанныеФайла");
ПолучитьФайл(Адрес, ИмяФайла, Ложь);
ЗапуститьПриложение(ИмяФайла);
КонецПроцедуры
// префикс номера документа
Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
Префикс = Обмен.ПолучитьПрефиксНомера();
КонецПроцедуры
// при вводе нового документа
Процедура ОбработкаЗаполнения(Основание, Значение)
ОбщийСрв.ПриВводеНовойЗадачи(ЭтотОбъект); // заполнить все
реквизиты по-умолчанию для новой задачи
// если вводится на основании Контрагента
Если ТипЗнч(Основание) = Тип("СправочникСсылка.Контрагенты")
Тогда
Контрагент = Основание; // основание
- это контрагент
Отвественный = Основание.Отвественный; // отвественный по
задаче - ответсвенный по контрагенту
Исполнитель = Исполнители.Добавить(); // первый
исполнитель -
Исполнитель.Исполнитель = Основание.Отвественный;
Исполнитель.Процент = 100;
КонецЕсли;
// если вводится на основании другой задачи
Если ТипЗнч(Основание) = Тип("ДокументСсылка.Задача") Тогда
ОбщийСрв.ПриВводеНовойЗадачи(ЭтотОбъект, Основание);
ДокОснование = Документы.Задача.ПустаяСсылка();
119
КонецЕсли;
Если ТипЗнч(Основание) = Тип("Структура") Тогда //если вводлится
новый из списка с установленным отбором
// то данные заполняются автоматически из отбора "Заполнять из
данных заполнения"
КонецЕсли
КонецПроцедуры
// если копирование - то переопределить логику копирования
Процедура ПриКопировании(ОбъектКопирования)
Автор = ПараметрыСеанса.глПользователь; // автор -
текущий пользователь
Отвественный = ПараметрыСеанса.глПользователь; // автор - текущий
пользователь
Статус = Справочники.Статусы.Новая; // новая
задача - статус Новая
ДокОснование = ОбъектКопирования.Ссылка; // Док основание - та
задача из котрой скопировали
Переписка.Очистить();
Исполнители.Очистить();
Подзадачи.Очистить();
Номенклатура.Очистить();
КонецПроцедуры
// перед удалением документа
Процедура ПередУдалением(Отказ)
// проверка на закрытый период
Если ОбщийСрв.ВЗакрытомПериоде(ЭтотОбъект) Тогда
Сообщить(ОбщийСрв.ПредставлениеЗадачи(ЭтотОбъект) +
"Находится в закрытом периоде. Удаление невозможно");
Отказ = Истина;
Возврат;
КонецЕсли;
// проверка Проведена
Если (ЭтотОбъект.Проведен И
Константы.ЗапретПроведенных.Получить()) И Не
ПараметрыСеанса.глЗаписьВедетИсполнитель Тогда
120
Сообщить(ОбщийСрв.ПредставлениеЗадачи(ЭтотОбъект) + "Уже
выполнена. Удаление невозможно");
Отказ = Истина;
Возврат;
КонецЕсли;
// проверка прав
Если Не ОбщийСрв.ПроверкаПрав(Автор,
ПараметрыСеанса.глПользователь) Тогда
Сообщить(ОбщийСрв.ПредставлениеЗадачи(ЭтотОбъект) + "Нет
прав удалять чужой документ");
Отказ = Истина;
Возврат;
КонецЕсли;
// удалить вхождение этого документа в табличную часть Подзадачи
любых остальных документов
ТЗРодителей = СформироватьСписокРодителей(ЭтотОбъект.Ссылка); //
сформировать ТЗ всех документов, в которые входит удаляемая
Для Каждого СтрокаРодитель Из ТЗРодителей Цикл // для каждого
родителя
УдалитьПодзадачу(СтрокаРодитель.Ссылка,
ЭтотОбъект.Ссылка); // удалить текущую(удяляемую) задачу из родителя
КонецЦикла
КонецПроцедуры
// удалить ЗадачаРебенок из табличной части Подзадачи у ЗадачаРодитель
Процедура УдалитьПодзадачу(ЗадачаРодитель, ЗадачаРебенок)
Если ЗадачаРодитель.Пустая() Тогда
Возврат;
КонецЕсли;
ЗадачаРодительОбъект = ЗадачаРодитель.ПолучитьОбъект();
СтруктураОтбора = Новый Структура("Подзадача", ЗадачаРебенок);
МассивУдаляемыхСтрок =
ЗадачаРодительОбъект.Подзадачи.НайтиСтроки(СтруктураОтбора);
Для Каждого ЭлементМассива Из МассивУдаляемыхСтрок Цикл
ЗадачаРодительОбъект.Подзадачи.Удалить(ЭлементМассива);
КонецЦикла;
ЗадачаРодительОбъект.Записать();
КонецПроцедуры
121
// сформироват ТЗ документов, в которые ПодЗадачаРебенок входит в таб
часть Подзадачи ( вявном виде, не через рекурсию)
Функция СформироватьСписокРодителей(ПодЗадачаРебенок)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Задачи.Ссылка
|ИЗ
| Документ.Задача.Подзадачи КАК ЗадачаПодзадачи
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.Задача КАК Задачи
| ПО ЗадачаПодзадачи.Ссылка = Задачи.Ссылка
|ГДЕ
| ЗадачаПодзадачи.Подзадача = &ПодзадачаРебенок
|";
Запрос.УстановитьПараметр("ПодзадачаРебенок", ПодзадачаРебенок);
РезультатЗапроса = Запрос.Выполнить();
ТЗ = РезультатЗапроса.Выгрузить();
Возврат ТЗ;
КонецФункции
// провести все непроведенные подзадачи из ЗадачаОбъект и провести ее саму
Процедура ВыполнитьВсеПодзадачиПринудительно(ЗадачаОбъект)
Для Каждого ТекСтрокаПодзадача Из ЗадачаОбъект.Подзадачи Цикл //
по всем строкам таб. части Подзадачи
Если ТекСтрокаПодзадача.Подзадача.Проведен <> Истина Тогда
// если не была проведена
ВыполнитьВсеПодзадачиПринудительно(ТекСтрокаПодзадача.Подзада
ча.ПолучитьОбъект()); // провести все ее подзадачи
ТекСтрокаПодзадача.Подзадача.ПолучитьОбъект().Записать(РежимЗап
исиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный); //
провести ее саму
Сообщить("Выполнена подзадача " +
ОбщийСрв.ПредставлениеЗадачи(ТекСтрокаПодзадача.Подзадача));
КонецЕсли;
КонецЦикла;
122
КонецПроцедуры
// проверить, есть ли среди ТЧ Исполнители записи без отметки исполнения
Функция ПроверитьИсполнение()
Исполненно = Истина;
Для Каждого ТекСтрокаИсполнитель Из Исполнители Цикл
Если ТекСтрокаИсполнитель.ДатаИсполнения =
Дата(01,01,0001,00,00,00) Тогда
Сообщить("Задача не может быть выполнена, так как
исполнитель \" + ТекСтрокаИсполнитель.Исполнитель +
"\ не проставил отметку исполнения");
Исполненно = Ложь;
КонецЕсли;
Если Не ТекСтрокаИсполнитель.РезультатИсполнения.Пустая()
Тогда
Если Не
ТекСтрокаИсполнитель.РезультатИсполнения.Успех Тогда
Сообщить("Задача не может быть выполнена, так как
исполнитель \" + ТекСтрокаИсполнитель.Исполнитель +
"\ проставил отрицательную отметку
исполнения");
Исполненно = Ложь;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Исполненно;
КонецФункции
// действия при проведении документа
Функция ПриПроведении(Отказ)
// проверка того, что все исполнители проставили отметку об
исполнении
Если Константы.ПроверятьИсполнениеПриВыполнении.Получить()
Тогда // общая константа
Если ОбщийСрв.ПолучитьКонстанту(ТекущаяДата(),
ОбщийСрв.ПолучитьГлПользователь(),
"ПроверятьИсполнениеПриВыполнении") Тогда // настройка пользователя
Если Не ПроверитьИсполнение() Тогда
Отказ = Истина;
Возврат Ложь;

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

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