Диплом: Автоматизация аналитического учета в ООО «Верный»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
76
ЗАКЛЮЧЕНИЕ
В результате проведенной работы стали ясны основные задачи диплом-
ного проекта. Было необходимо разработать автоматизированной систему
аналитического учета, провести анализ деятельности предприятия, выявить
существующие недостатки в текущей технологии управления предприятием.
Основным показателем, рассчитываемым в системе, является количе-
ство выполненных заявок.
В системе предусмотрены следующие выходные документы:
общий объем произведенной продукции за период (сутки, неделя,
месяц, произвольный период);
общий объем поставленного сырья за период (сутки, неделя, ме-
сяц, произвольный период);
общий объем реализованной продукции за период (сутки, неделя,
месяц, произвольный период);
характеристика деятельности поставщиков по объему поставлен-
ного сырья и степени выполнения плана поставок;
характеристика деятельности клиентов по объему закупленной
продукции и степени выполнения заявок на закупку готовой продукции;
сводная ведомость поставщиков;
сводная ведомость клиентов;
сводная ведомость сырья по видам;
сводная ведомость готовой продукции по номенклатуре;
список заявок;
список сотрудников.
Разработанный проект в полной мере соответствует требованиям зада-
ния на дипломное проектирование.
Цель дипломной работы была достигнута вместе с поставленными и по
итогу выполненными задачами.
77
По итогам написания ВКР была создана ИС аналитического учета на
платформе 1С «Предприятие 8.3».
В результате автоматизации аналитического учета была повышена эко-
номическая эффетивность процесса учета.
78
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. ГОСТ Р ИСО/МЭК 12207/99. Государственный стандарт РФ. Ин-
формационная технология. Процессы жизненного цикла информационных
систем. Издание официальное. - М., 2015
2. Схемы алгоритмов, программ, данных и систем. Условные обо-
значения и правила выполнения. ГОСТ 19.701-90 (ИСО 5807-85) / Государ-
ственный комитет СССР по управлению качеством продукции и стандартам,
01.01.1992.
3. Автоматизированные информационные системы, базы и банки
данных. Вводный курс: Учебное пособие, М.: Гелиос АРВ, 2011. - 368 с., ил
4. Астелс, Дэвид; Миллер Гранвилл; Новак, Мирослав, Практиче-
ское руководство по экстремальному программированию, Пер. с англ. - М.:
Издательский дом "Вильямс", 2016. - 320 с.: ил. - Парал. тит. англ
5. Баженова И. Ю. , Основы проектирования приложений баз дан-
ных, Издательства: Бином. Лаборатория знаний, Интернет-университет ин-
формационных технологий, 2017 г., , 328 стр.
6. Вендров А.М., CASE-технологии. Современные методы и сред-
ства проектирования информационных систем - М.: Финансы и статистика,
2018 г, 456 стр.
7. Вигерс Карл, Разработка требований к программному обеспече-
нию, Пер, с англ. - М.: Издательско-торговый дом "Русская Редакция", 2019. -
576с.: ил
8. Гашков С. Б., Э. А. Применко, М. А. Черепнев Криптографиче-
ские методы защиты информации, М, Издательство: Академия, 2011г., 304
стр.
9. Гвоздева Т. В., Б. А. Баллод, Проектирование информационных
систем, М, Издательство: Феникс, 2019 г., 512 стр.
10. Голицына О. Л., И. И. Попов, Н. В. Максимов, Т. Л. Партыка,
Информационные технологии, М, Издательство Инфра-М, 2018 г., 608 стр.
79
11. Дейв Крейн, Эрик Паскарелло, Даррен Джеймс. AJAX в дей-
ствии: Учебник – М.: Вильямс, 2019. 450 – 490 с.
12. Дэвид Флэнаган. JavaScript. Подробное руководство: Учебник –
М.: Символ Плюс, 2019. 243 – 249 с.
13. Емельянова Н. З., Партыка Т. Л., И. И. Попов, Проектирование
информационных систем, М, Издательство: Форум, 2018 г., 432 стр.
14. Емельянова Н. З., Т. Л. Партыка, И. И. Попов, М, Издательство
Форум, 2019 г., , 416 стр.
15. Илюшечкин В. М. , Основы использования и проектирования баз
данных, М, Издательство Юрайт, 2019 г., 224 стр.
16. Котляров В. П., Т. В. Коликова, Основы тестирования программ-
ного обеспечения, Издательства: Интернет-университет информационных
технологий, Бином. Лаборатория знаний, 2018 г., 288 стр.
17. Кристиан Дари, Богдан Бринзаре, Филип Черчез-Тоза, Михай Бу-
сика. AJAX и PHP. Разработка динамических веб-приложений: Учебник – М.:
Символ Плюс, 2019, 289 стр.
18. Кузин А. В., С. В. Левонисова, Базы данных, М, Издательство:
Академия, 2018 г., 320 стр.
19. Кузнецов С. Д., Основы баз данных, М, Издательства: Бином. Ла-
боратория знаний, Интернет-университет информационных технологий, 2019
г., 488 стр.
20. Молчанов А. Ю., Системное программное обеспечение, М, Изда-
тельство: Питер, 2019 г., 400 стр.
21. Незнанов А. А., Программирование и алгоритмизация, М, Изда-
тельство: Академия, 2019 г., 304 стр.
22. Пирогов В. Ю., Информационные системы и базы данных. М,
Организация и проектирование, Издательство: БХВ-Петербург, 2018 г.528
стр.
23. Предметно-ориентированные экономические информационные
системы, М, Издательство: Финансы и статистика, 2019 г., 224 стр.
80
24. Реляционные базы данных: практические приемы оптимальных
решений. – СПб.: БХВ-Петербург, 2018 – 400с.:ил;
25. Симионов Ю.Ф., Боромотов В.В. Информационный менеджмент.
— Ростов н.Д: Феникс, 2019, 250с., ил.;
26. Чипига А. Ф., Информационная безопасность автоматизирован-
ных систем, М, Издательство: Гелиос АРВ, 2019 г., 336 стр.
81
ПРИЛОЖЕНИЕ
Программный код
// префикс номера документа
Процедура ПриУстановкеНового-
Номера(СтандартнаяОбработка,
Префикс)
Префикс = Об-
мен.ПолучитьПрефиксНомера();
КонецПроцедуры
// при вводе нового документа
Процедура ОбработкаЗаполне-
ния(Основание, Значение)
Об-
щийСрв.ПриВводеНовойЗадачи(Это
тОбъект); // заполнить все реквизиты
по-умолчанию для новой задачи
// если вводится на осно-
вании Контрагента
Если ТипЗнч(Основание)
=
Тип("СправочникСсылка.Контраген
ты") Тогда
Контрагент
= Основание;
//
основание - это контрагент
Отвественный =
Основание.Отвественный; // отвест-
венный по задаче - ответсвенный по
контрагенту
Исполнитель =
Исполнители.Добавить(); //
первый исполнитель -
Исполни-
тель.Исполнитель = Основа-
ние.Отвественный;
Исполни-
тель.Процент = 100;
КонецЕсли;
// если вводится на осно-
вании другой задачи
Если ТипЗнч(Основание)
= Тип("ДокументСсылка.Задача")
Тогда
Об-
щийСрв.ПриВводеНовойЗадачи(Это
тОбъект, Основание);
ДокОснование
= Докумен-
ты.Задача.ПустаяСсылка();
КонецЕсли;
Если ТипЗнч(Основание)
= Тип("Структура") Тогда //если
вводлится новый из списка с уста-
новленным отбором
// то данные
заполняются автоматически из отбо-
ра "Заполнять из данных заполне-
ния"
КонецЕсли
КонецПроцедуры
// если копирование - то переопреде-
лить логику копирования
Процедура ПриКопирова-
нии(ОбъектКопирования)
Автор =
ПараметрыСеанса.глПользователь;
// автор - текущий пользователь
Отвественный = Парамет-
рыСеанса.глПользователь; // автор -
текущий пользователь
Статус =
Справочники.Статусы.Новая;
// новая задача - статус
Новая
ДокОснование = Объект-
Копирования.Ссылка; // Док
основание - та задача из котрой
скопировали
Переписка.Очистить();
Исполнители.Очистить();
Подзадачи.Очистить();
Номенклатура.Очистить();
КонецПроцедуры
// перед удалением документа
Процедура ПередУдалением(Отказ)
// проверка на закрытый
период
Если Об-
щийСрв.ВЗакрытомПериоде(ЭтотОб
ъект) Тогда
Сооб-
щить(ОбщийСрв.ПредставлениеЗада
чи(ЭтотОбъект) + "Находится в
закрытом периоде. Удаление невоз-
можно");
Отказ = Истина;
Возврат;
КонецЕсли;
// проверка Проведена
Если (ЭтотОбъ-
ект.Проведен И Констан-
ты.ЗапретПроведенных.Получить())
И Не ПараметрыСеан-
са.глЗаписьВедетИсполнитель Тогда
Сооб-
щить(ОбщийСрв.ПредставлениеЗада
чи(ЭтотОбъект) + "Уже выполнена.
Удаление невозможно");
Отказ = Истина;
Возврат;
КонецЕсли;
// проверка прав
Если Не Об-
щийСрв.ПроверкаПрав(Автор, Па-
раметрыСеанса.глПользователь)
Тогда
Сооб-
щить(ОбщийСрв.ПредставлениеЗада
чи(ЭтотОбъект) + "Нет прав удалять
чужой документ");
Отказ = Истина;
Возврат;
КонецЕсли;
// удалить вхождение
этого документа в табличную часть
Подзадачи любых остальных доку-
ментов
ТЗРодителей = Сформи-
роватьСписокРодите-
лей(ЭтотОбъект.Ссылка); // сформи-
ровать ТЗ всех документов, в кото-
рые входит удаляемая
Для Каждого СтрокаРоди-
тель Из ТЗРодителей Цикл // для
каждого родителя
УдалитьПодза-
дачу(СтрокаРодитель.Ссылка, Это-
тОбъект.Ссылка); // удалить теку-
щую(удяляемую) задачу из родителя
КонецЦикла
КонецПроцедуры
// удалить ЗадачаРебенок из таблич-
ной части Подзадачи у ЗадачаРоди-
тель
Процедура УдалитьПодзада-
чу(ЗадачаРодитель, ЗадачаРебенок)
Если ЗадачаРоди-
тель.Пустая() Тогда
Возврат;
КонецЕсли;
ЗадачаРодительОбъект =
ЗадачаРодитель.ПолучитьОбъект();
СтруктураОтбора = Но-
вый Структура("Подзадача", Задача-
Ребенок);
МассивУдаляемыхСтрок =
ЗадачаРодительОбъ-
ект.Подзадачи.НайтиСтроки(Структ
ураОтбора);
Для Каждого Элемент-
Массива Из МассивУдаляе-
мыхСтрок Цикл
ЗадачаРоди-
тельОбъ-
ект.Подзадачи.Удалить(ЭлементМас
сива);
КонецЦикла;
ЗадачаРодительОбъ-
ект.Записать();
КонецПроцедуры
// сформироват ТЗ документов, в
которые ПодЗадачаРебенок входит в
таб часть Подзадачи ( вявном виде,
не через рекурсию)
Функция СформироватьСписокРо-
дителей(ПодЗадачаРебенок)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Задачи.Ссылка
|ИЗ
| Доку-
мент.Задача.Подзадачи КАК Зада-
чаПодзадачи
| ЛЕ-
ВОЕ СОЕДИНЕНИЕ Доку-
мент.Задача КАК Задачи
| ПО
ЗадачаПодзадачи.Ссылка = Зада-
чи.Ссылка
|ГДЕ
| ЗадачаПодзада-
чи.Подзадача = &ПодзадачаРебенок
|";
За-
прос.УстановитьПараметр("Подзада
чаРебенок", ПодзадачаРебенок);
РезультатЗапроса = За-
прос.Выполнить();
82
ТЗ = РезультатЗапро-
са.Выгрузить();
Возврат ТЗ;
КонецФункции
// провести все непроведенные под-
задачи из ЗадачаОбъект и провести
ее саму
Процедура ВыполнитьВсеПодзада-
чиПринудительно(ЗадачаОбъект)
Для Каждого ТекСтрока-
Подзадача Из ЗадачаОбъ-
ект.Подзадачи Цикл // по всем стро-
кам таб. части Подзадачи
Если ТекСтро-
каПодзадача.Подзадача.Проведен <>
Истина Тогда // если не была
проведена
Вы-
полнитьВсеПодзадачиПринудитель-
но(ТекСтрокаПодзадача.Подзадача.
ПолучитьОбъект()); // провести все
ее подзадачи
ТекСтрокаПодзада-
ча.Подзадача.ПолучитьОбъект().Зап
исать(РежимЗаписиДокумента.Пров
едение, РежимПроведенияДокумен-
та.Неоперативный); // провести ее
саму
Со-
общить("Выполнена подзадача " +
Об-
щийСрв.ПредставлениеЗадачи(ТекС
трокаПодзадача.Подзадача));
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// проверить, есть ли среди ТЧ Ис-
полнители записи без отметки ис-
полнения
Функция ПроверитьИсполнение()
Исполненно = Истина;
Для Каждого ТекСтро-
каИсполнитель Из Исполнители
Цикл
Если ТекСтро-
каИсполнитель.ДатаИсполнения =
Дата(01,01,0001,00,00,00) Тогда
Со-
общить("Задача не может быть вы-
полнена, так как исполнитель \" +
ТекСтрокаИсполни-
тель.Исполнитель +
"\ не проставил
отметку исполнения");
Ис-
полненно = Ложь;
КонецЕсли;
Если Не
ТекСтрокаИсполни-
тель.РезультатИсполнения.Пустая()
Тогда
Если
Не ТекСтрокаИсполни-
тель.РезультатИсполнения.Успех
Тогда
Сообщить("Задача не
может быть выполнена, так как
исполнитель \" + ТекСтрокаИспол-
нитель.Исполнитель +
"\
проставил отрицательную отметку
исполнения");
Исполненно = Ложь;
Ко-
нецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Исполненно;
КонецФункции
// действия при проведении доку-
мента
Функция ПриПроведении(Отказ)
// проверка того, что все
исполнители проставили отметку об
исполнении
Если Констан-
ты.ПроверятьИсполнениеПриВыпол
нении.Получить() Тогда // общая
константа
Если Об-
щийСрв.ПолучитьКонстанту(Текущ
аяДата(), Об-
щийСрв.ПолучитьГлПользователь(),
"ПроверятьИсполнениеПриВыпол-
нении") Тогда // настройка пользова-
теля
Если
Не ПроверитьИсполнение() Тогда
Отказ = Истина;
Возврат Ложь;
Ко-
нецЕсли;
КонецЕсли;
КонецЕсли;
// проверка того, что все
подзадачи проведены
ЕстьНеВыполненыеПод-
задачи = Ложь;
Для Каждого ТекСтрока-
Подзадача Из Подзадачи Цикл
Если ТекСтро-
каПодзадача.Подзадача.Проведен <>
Истина Тогда
Сооб-
об-
щить(ОбщийСрв.ПредставлениеЗада
чи(ЭтотОбъект) + " имеет невыпол-
ненные подзадачи");
ЕстьНеВыполненыеПод-
задачи = Истина;
КонецЕсли;
КонецЦикла;
Если ЕстьНеВыполне-
ныеПодзадачи = Истина Тогда
Если (Констан-
ты.ПринудительноВыполнятьПодзад
ачи.Получить()) И // общая констан-
та
(Об-
щийСрв.ПолучитьКонстанту(Текущ
аяДата(), Об-
щийСрв.ПолучитьГлПользователь(),
"ПринудительноВыполнятьПодзада-
чи")) Тогда // настройка пользовате-
ля
Сообщить("Подзадачи
будут выполнены принудитель-
но...");
ВыполнитьВсеПодзада-
чиПринудительно(ЭтотОбъект); //
автоматически провести все подза-
дачи данной задачи
Иначе // нельзя
автоматически выполнять подзадачи
Сооб-
об-
щить(ОбщийСрв.ПредставлениеЗада
чи(ЭтотОбъект) + " не может быть
выполнена");
Отказ
= Истина;
Воз-
врат Ложь;
КонецЕсли;
КонецЕсли;
Возврат Истина
КонецФункции
// обработка проведения
Процедура ОбработкаПроведе-
ния(Отказ, РежимПроведения)
Если Не ПриПроведе-
нии(Отказ) Тогда // проверить про-
ведение подзадач
Возврат;
КонецЕсли;
// регистр Использован-
ниеНоменклатуры
Движе-
ния.ИспользованиеНоменклатуры.За
писывать = Истина;
Для Каждого ТекСтрока-
Номенклатура Из Номенклатура
Цикл
Если ТекСтро-
каНоменклатура.Наличие Тогда //
если в ТЧ стоит признак наличия
Про-
должить;
КонецЕсли;
Если НЕ
ТекСтрокаНоменклату-
ра.Номенклатура.ВидНоменклатуры.
Списывается Тогда // если номен-
клатуру не надо списывать
Про-
должить;
КонецЕсли;
Движение =
Движе-
ния.ИспользованиеНоменклатуры.Д
обавить();
83
Движе-
ние.Период = Дата;
Движе-
ние.Номенклатура = ТекСтрока-
Номенклатура.Номенклатура;
Движе-
ние.Задача
= ЭтотОбъект.Ссылка;
Движе-
ние.Количество = ТекСтрока-
Номенклатура.Количество;
Движе-
ние.Сумма
= ТекСтрокаНоменклату-
ра.Сумма;
КонецЦикла;
КонецПроцедуры
// обработка распроведения
Процедура ОбработкаУдаленияПро-
ведения(Отказ)
Если Не ОтменитьПрове-
дениеРодите-
лей(ЭтотОбъект.Ссылка) Тогда //
отменитиь проведение задач-
родителей
Отказ = Истина;
Возврат;
КонецЕсли;
КонецПроцедуры
// отменить проведение всех родите-
лей ДокСсылкаРебенок
Функция ОтменитьПроведениеРоди-
телей(ДокСсылкаРебенок)
МассивОтменяемых =
Об-
щийСрв.СформироватьСписокОтме
няемых(ДокСсылкаРебенок); //
сформировать массив распроводи-
мых документов
Если МассивОтменяе-
мых.Количество() Тогда // если есть
хоть один - сообщить
Сообщить
("Отмена выполнения " + Об-
щийСрв.ПредставлениеЗадачи(Этот
Объект)
+
" приводит к отмене выполнения
задач-родителей...");
КонецЕсли;
Для Каждого СтрокаОт-
меняемый Из МассивОтменяемых
Цикл // для каждого документа из
распроводимых
Если Об-
щийСрв.ВЗакрытомПериоде(Строка
Отменяемый.Значение) Тогда // если
находится в закрытом периоде
Со-
общить("Отмена выполенния " +
Об-
щийСрв.ПредставлениеЗадачи(ДокС
сылкаРебенок)
+ " приводит к отмене выполенния "
+ Об-
щийСрв.ПредставлениеЗадачи(Стро
каОтменяемый.Значение)
+ ", находя-
щейся в закрытом периоде. Отмена
не может быть выполнена");
Воз-
врат Ложь;
КонецЕсли;
Если Не Об-
щийСрв.ПроверкаПрав(СтрокаОтме
няемый.Значение.Автор, Парамет-
рыСеанса.глПользователь) Тогда //
проверка прав
Со-
общить("Отмена выполенния " +
Об-
щийСрв.ПредставлениеЗадачи(ДокС
сылкаРебенок)
+ " приводит к отмене выполенния "
+ Об-
щийСрв.ПредставлениеЗадачи(Стро
каОтменяемый.Значение)
+ ", на редакти-
рование которого у Вас нет прав.
Отмена не может быть выполнена");
Воз-
врат Ложь;
КонецЕсли;
КонецЦикла;
// распровести каждый
Для Каждого СтрокаОт-
меняемый Из МассивОтменяемых
Цикл
Если Стро-
каОтменяе-
мый.Значение.ПолучитьОбъект().Пр
оведен Тогда
Стро-
каОтменяе-
мый.Значение.ПолучитьОбъект().За
пи-
сать(РежимЗаписиДокумента.Отмен
аПроведения);
Со-
общить("Отменено выполнение
родительской " + Об-
щийСрв.ПредставлениеЗадачи(Стро
каОтменяемый.Значение));
КонецЕсли;
КонецЦикла;
Возврат Истина;
КонецФункции
// перед любой записью (включая
проведение и распроведение) - про-
верка
Процедура ПередЗаписью(Отказ,
РежимЗаписи, РежимПроведения)
Головная = ЭтоГолов-
ная(); // установить признак - голов-
ная или нет
Если Об-
щийСрв.ВЗакрытомПериоде(ЭтотОб
ъект) Тогда // провера на закрытый
период
Сооб-
щить(ОбщийСрв.ПредставлениеЗада
чи(ЭтотОбъект) + "Находится в
закрытом периоде. Редактирование
невозможно");
Отказ = Истина;
Возврат;
КонецЕсли;
// проверка того что про-
веден (тогда редактирование запре-
щено)
Если Не (РежимЗаписи =
РежимЗаписиДокумента.Проведение
Или
РежимЗапи-
си = РежимЗаписиДокумен-
та.ОтменаПроведения) Тогда
Если
(ЭтотОбъект.Проведен И Констан-
ты.ЗапретПроведенных.Получить())
И Не ПараметрыСеан-
са.глЗаписьВедетИсполнитель
И Не ПараметрыСеан-
са.ИдетОбменДанными Тогда
Сооб-
об-
щить(ОбщийСрв.ПредставлениеЗада
чи(ЭтотОбъект) + "Уже выполнена.
Редактирование невозможно");
Отказ
= Истина;
Воз-
врат;
КонецЕсли;
КонецЕсли;
// проверка прав
Если Не Об-
щийСрв.ПроверкаПрав(Автор, Па-
раметрыСеанса.глПользователь)
Тогда
Сооб-
щить(ОбщийСрв.ПредставлениеЗада
чи(ЭтотОбъект) + "Нет прав редак-
тировать чужой документ");
Отказ = Истина;
Возврат;
КонецЕсли;
Если РежимЗаписи = Ре-
жимЗаписиДокумента.Проведение
Тогда
РеальнаяДа-
таВыполнения = ТекущаяДата(); //
дата реального выполнения - дата
проведения
Если Констан-
ты.УстанавливатьЗавершенаУспешн
о.Получить() = Истина Тогда
Ста-
тус = Справочни-
ки.Статусы.ЗавершенаУспешно; //
статус - успешно
КонецЕсли;
КонецЕсли;
Если РежимЗаписи = Ре-
жимЗаписиДокумен-
та.ОтменаПроведения Тогда
РеальнаяДа-
таВыполнения = 0; // если распро-
84
вели - значит нет реальной даты
завершения
Статус = Спра-
вочники.Статусы.ПустаяСсылка(); //
и нет статуса
КонецЕсли;
КонецПроцедуры
// проверка на то, что
данная задача не входит ни в одну
другую в качетсве подзадачи
Функция ЭтоГоловная()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗадачаПодзада-
чи.Подзадача
|ИЗ
| Доку-
мент.Задача.Подзадачи КАК Зада-
чаПодзадачи
| ГДЕ ЗадачаПод-
задачи.Подзадача =
&ИскомаяЗадача
|";
За-
прос.УстановитьПараметр("Искомая
Задача", ЭтотОбъект.Ссылка);
Результат = За-
прос.Выполнить();
Возврат (Резуль-
тат.Выбрать().Количество() = 0);
КонецФункции
Форма документа «Задача»
&НаСервере
Процедура ПриСозданииНаСерве-
ре(Отказ, СтандартнаяОбработка)
// ЗАКЛАДКА ПОДЗА-
ДАЧИ
Если Парамет-
ры.Свойство("ЭтоНовый") Тогда //
если из вызывающей формы был
пердан признак что это новый доку-
мент
Если Парамет-
ры.ЭтоНовый Тогда // значит нажа-
ли кнопку Новая подзадача в тч
Подзадачи родителя
Ос-
нование = Параметры.Родитель;
Если
Не Основание.Пустая() Тогда
Об-
щийСрв.ПриВводеНовойЗадачи(Объ
ект, Основание, Ложь); // перезапол-
нить реквизиты и тч новой на осно-
вании родителя
// но не добав-
лять в тч Подзадачи
// далее см. в ПослеЗаписи
этой задачи - добавить эту
новую в тч Подзадачи родителя
// далее см. в ОбработкаО-
повещения родителя - спозициони-
роваться на вновь добавленной задче
в дереве
Ко-
нецЕсли;
КонецЕсли;
КонецЕсли;
ФильтрПроведенные = 2;
// первоначальное значение фильтра
"Все"
ЗаполнитьДеревоПодза-
дач(); // первоначально создать дере-
во подзадач
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// если нет прав - то форма
только просмотр
Если Не Об-
щийСрв.ПроверкаПрав(Объект.Авто
р, Об-
щийСрв.ПолучитьГлПользователь())
Тогда
ЭтаФор-
ма.ТолькоПросмотр = Истина;
КонецЕсли;
// если проведена и запрет
проведенных
Если Объект.Проведен И
Об-
щийСрв.обПолучитьКонстанту("Зап
ретПроведенных") Тогда
ЭтаФор-
ма.ТолькоПросмотр = Истина;
КонецЕсли;
// ЗАКЛАДКА ИСПОЛ-
НИТЕЛИ
// если пользователь явля-
ется исполнителем этого документа
и он открыл документ - то считается
что он с ним ознакомлен -
// надо проставить отметку
об ознакомлении
ИсполнительОзнакомлен
= Ложь;
Для Каждого СтрокаИс-
полнитель Из Объект.Исполнители
Цикл
Если (Стро-
каИсполнитель.Исполнитель = Об-
щийСрв.ПолучитьГлПользователь())
И (СтрокаИсполнитель.Ознакомлен
= глПустаяДата) Тогда
Стро-
каИсполнитель.Ознакомлен = Теку-
щаяДата(); // простановка даты озна-
комления - и есть признак ознаком-
ления
Ис-
полнительОзнакомлен = Истина;
Об-
щийСрв.ЗаписьВедетИсполнитель(И
стина); // признак того что дальней-
шая запись будет вестись исполни-
телем
Пре-
рвать;
КонецЕсли;
КонецЦикла;
Если ИсполнительОзна-
комлен = Истина Тогда // если была
простановка даты ознакомления
П = Новый
Структура;
П.Вставить("РежимЗаписи
", РежимЗаписиДокумента.Запись);
Записать(П);
КонецЕсли;
// ЗАКЛАДКА ПОДЗА-
ДАЧИ
ВывестиПанельПодза-
дач(); // первоначальное заполнение
дерева подзадач
// РодительскаяЗадача =
Об-
щийСрв.НайтиРодительскуюЗадачу(
Объект.Ссылка);
КонецПроцедуры
// реакция на команду формы Запи-
сать и закрыть
&НаКлиенте
Процедура ФормаЗаписатьИЗа-
крыть(Команда)
Записать();
Закрыть();
КонецПроцедуры
// реакция на команду формы Рас-
провести
&НаКлиенте
Процедура ФормаРаспрове-
сти(Команда)
П = Новый Структура;
П.Вставить("РежимЗаписи
", РежимЗаписиДокумен-
та.ОтменаПроведения);
Записать(П);
КонецПроцедуры
// реакция на окончание выбора в
других формах
&НаКлиенте
Процедура ОбработкаВыбо-
ра(ВыбранноеЗначение, Источ-
никВыбора)
// результат пришел из
формы Исполнение исполнителем
Если ИсточникВыбо-
ра.ИмяФормы = "Доку-
мент.Задача.Форма.ФормаИсполнен
ия" Тогда
ЭтотОбъ-
ект.Элементы.Исполнители.Текущие
Данные.РезультатИсполнения =
ВыбранноеЗначе-
ние.Получить(0).Значение;
ЭтотОбъ-
ект.Элементы.Исполнители.Текущие
Данные.ДатаИсполнения =
ВыбранноеЗначе-
ние.Получить(1).Значение;
ЭтотОбъ-
ект.Элементы.Исполнители.Текущие
85
Данные.Комментарий
= ВыбранноеЗначе-
ние.Получить(2).Значение;
Об-
щийСрв.ЗаписьВедетИсполнитель(И
стина); // флаг того, что записывать
можно, даже если нет прав
П = Новый
Структура;
П.Вставить("РежимЗаписи
", РежимЗаписиДокумента.Запись);
ЭтотОбъ-
ект.Записать(П);
КонецЕсли;
// результат
пришел из формы выбора справоч-
ника Этапы
Если ИсточникВыбо-
ра.ИмяФормы = "Справоч-
ник.Этапы.ФормаВыбора" Тогда
ЗаполнитьДере-
воПоШаблону(ВыбранноеЗначение);
КонецЕсли;
КонецПроцедуры
// проверить возможность записи
документа из формы
&НаКлиенте
Процедура ПередЗаписью(Отказ,
ПараметрыЗаписи)
Если ПараметрыЗапи-
си.РежимЗаписи = РежимЗаписиДо-
кумента.Проведение Тогда
Отказ = Не
ПроверкаВозможностиПроведе-
ния();
КонецЕсли;
Если ПараметрыЗапи-
си.РежимЗаписи = РежимЗаписиДо-
кумента.ОтменаПроведения Тогда
Отказ = Не
ПроверкаВозможностиРасПроведе-
ния();
КонецЕсли
КонецПроцедуры
&НаКлиенте
Функция ПроверкаВозможности-
РасПроведения(ЭтаЗадача = Не-
определено)
Если ЭтаЗадача = Неопре-
делено Тогда
ЭтаЗадача =
Объект.Ссылка;
КонецЕсли;
// задать пользователю
вопрос
//МассивОтменяемых =
Об-
щийСрв.СформироватьСписокОтме
няемых(ЭтаЗадача);
//Если МассивОтменяе-
мых.Количество() Тогда
// Если Во-
прос("Отмена выполнения задачи " +
Об-
щийСрв.ПредставлениеЗадачи(ЭтаЗа
дача)
// +
" приведет к отмене выполнения
задач-родителей. Все равно отме-
нить?", РежимДиалогаВо-
прос.ДаНет) = КодВозвратаДиало-
га.Нет Тогда
// Воз-
врат Ложь;
// КонецЕсли;
//КонецЕсли;
Возврат Истина;
КонецФункции
Функция ПроверкаВозможности-
Проведения(ЭтаЗадача = Неопреде-
лено)
Если ЭтаЗадача = Неопре-
делено Тогда
ЭтаЗадача =
Объект.Ссылка;
КонецЕсли;
// задать пользователю
вопрос
Возврат Истина;
КонецФункции
// ЗАКЛАДКА СВОЙСТВА
&НаКлиенте
Процедура СвойстваВидСвой-
стваОбработкаВыбора(Элемент,
ВыбранноеЗначение, Стандарт-
наяОбработка)
// проверка соответсвия
типа выбранного свойства
Если Не СвойстваВид-
СвойстваОбработкаВыбораНаСер-
вере(ВыбранноеЗначение) Тогда
Сообщить("Тип
свойства выбранного вида свойств
не относится к задачам");
Стандарт-
наяОбработка = Ложь;
Возврат;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция СвойстваВидСвой-
стваОбработкаВыбораНаСерве-
ре(ВыбВидСвойства)
Если ВыбВидСвой-
ства.ПолучитьОбъект().ТипСвойства
.ТипОбъекта <> Перечисле-
ния.ТипыОбъектов.Задача Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
//----------------------------------------------
-----------------------------
// ЗАКЛАДКА ПЕРЕПИСКА
// выход из поля ввода текста сооб-
щения - это команда на добавление
сообщения
&НаКлиенте
Процедура НовоеСообщениеОкон-
чаниеВводаТекста(Элемент, Текст,
ДанныеВыбора, ПараметрыПолуче-
нияДанных, СтандартнаяОбработка)
Если ПустаяСтрока(Текст)
Тогда
Возврат;
КонецЕсли;
ДобавитьНовоеСообще-
ние(Текст);
КонецПроцедуры
// программное добавление сообще-
ния
&НаКлиенте
Процедура ДобавитьНовоеСообще-
ние(ТекстСообщения)
Если Объ-
ект.Ссылка.Пустая() Тогда
Сооб-
щить("Нужно сначала записать но-
вую задачу");
Возврат;
КонецЕсли;
НоваяСтрока
= Объ-
ект.Переписка.Добавить();
НоваяСтро-
ка.Пользователь = Об-
щийСрв.ПолучитьГлПользователь();
НоваяСтро-
ка.ДатаСообщения = ТекущаяДа-
та();
НоваяСтрока.Сообщение
= ТекстСооб-
щения;
Об-
щийСрв.ЗаписьВедетИсполнитель(И
стина); // флаг того, что записывать
можно, даже если нет прав
Записать();
КонецПроцедуры
//----------------------------------------------
-----------------------------
// ЗАКЛАДКА ИСПОЛНИТЕЛИ
// по команде Исполнить
&НаКлиенте
Процедура ИсполнителиИспол-
нить(Команда)
Если Об-
щийСрв.ПроверкаПрав(ЭтотОбъект.
Элемен-
ты.Исполнители.ТекущиеДанные.Ис
полнитель, Об-
щийСрв.ПолучитьГлПользователь())
Тогда
П = Новый
Структура;
П.Вставить("Исполнитель
", ЭтотОбъ-
ект.Элементы.Исполнители.Текущие
Данные.Исполнитель);
П.Вставить("РезультатИсп

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

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Agile-методология в управлении проектами на примере ООО «Ресурсный центр «Академия КлассИнфо»
Aвтoмaтизaция пpoцecca вeдeния инфopмaциoннoй бaзы o дoлжнocтяx и вaкaнcияx c укaзaниeм тpeбoвaний к уpoвню знaний и нaвыкoв кaндидaтoв для гpуппы кaдpoв вoйcкoвoй чacти 3474»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
Cовершенствование управления рентабельности предприятия (на примере гуипп «бендерская типография «полиграфист»)
Event - менеджмент: реализация проекта (на примере ООО "АГРОПАК")