Курсовые работы / ПРИС К_11
.pdfРисунок А.3 – Декомпозиция процесса «Работа с ИС»
42
ПРИЛОЖЕНИЕ Б Список элементарных функций
Элементарные работы бизнес-процесса учета ремонта жилищного фонда
вуправляющей компании:
1.Обработка заявки клиента;
2.Оплата ремонта жилищного объекта;
3.Выявление жилищных объектов, нуждающихся в ремонте;
4.Предупреждение владельцев о необходимости ремонта;
5.Формирование заявки на проведение ремонта конкретного клиента;
6.Фиксация сведений об жилищных объектах, в которых проведен
ремонт;
7.Внесение в БД сведений о всех отремонтированных объектах жилищного фонда;
8.Фиксация сведений об жилищных объектах, в которых проводится
ремонт;
9.Внесение или редактирование информации о жилищном фонде;
10.Внесение или редактирование информации о стоимости проведения ремонта жилищных объектов;
11.Внесение или редактирование информации о стоимости ремонта;
12.Формирование списка объектов жилищного фонда, нуждающихся в
ремонте;
13.Формирование статистического отчета о ремонте жилищного фонда;
14.Формирование отчета о выполненных ремонтах.
43
ПРИЛОЖЕНИЕ В Описание объектов базы данных
Таблица В.1 – Справочники
Наименование |
Реквизиты |
Тип данных |
|
|
Код |
Число (длина 9) |
|
|
Наименование |
Строка (длина 100) |
|
|
ТипКрыши |
ПеречислениеСсылка.Крыша |
|
ЖилищныйФонд |
НаличиеЛифта |
ПеречислениеСсылка.Лифт |
|
|
ПлощадьКрыши |
Число (длина 10, точность 0, неотрицательное) |
|
|
Адрес |
Строка (неограниченная длина) |
|
|
Город |
Строка (неограниченная длина) |
|
Тип дома |
Код |
Число (длина 9) |
|
Наименование |
Строка (длина 15) |
||
|
|||
Жильцы |
Код |
Число (длина 9) |
|
Наименование |
Строка (длина 50) |
||
|
|||
ВидыРемонта |
Код |
Число (длина 9) |
|
|
Наименование |
Строка (длина 50) |
Таблица В.2 – Документы
Наименование |
Реквизиты |
Тип данных |
|
|
Номер |
Число (длина 9) |
|
|
Дата |
Дата и время |
|
|
ТипДома |
СправочникСсылка.ТипДома |
|
|
ФИО |
СправочникСсылка.ФИО |
|
ЗаявкиНаРемонт |
ПлощальКрыши |
Число (длина 10, точность 0, |
|
|
неотрицательное) |
||
|
|
||
|
Адрес |
Число (длина 10, точность 0, |
|
|
|
неотрицательное) |
|
|
ОплаченнаяСумма |
Число (длина 10, точность 0, |
|
|
|
неотрицательное) |
|
|
Номер |
Число (длина 9) |
|
|
Дата |
Дата и время |
|
|
ТипДома |
СправочникСсылка.ТипДома |
|
НевыполненныеЗаявки |
ФИО |
СправочникСсылка.ФИО |
|
Сумма |
Число (длина 10, точность 0, |
||
|
|||
|
|
неотрицательное) |
|
|
ПричинаОтказа |
Строка (длина 6) |
|
|
Адрес |
Строка (длина 10) |
|
|
Номер |
Число (длина 9) |
|
|
Дата |
Дата и время |
|
|
ТипДома |
СправочникСсылка.ТипДома |
|
ВыполненныеРемонты |
ФИО |
СправочникСсылка.ФИО |
|
ФактПрохождения |
ПеречислениеСсылка.Факт |
||
|
|||
|
ОплаченнаяСумма |
Число (длина 10, точность 0, |
|
|
|
неотрицательное) |
|
|
ДатаСледРемонта |
Дата |
44
Таблица В.3 – Перечисления
Наименование |
Значения |
|
|
Односкатная |
|
Крыша |
Двускатная |
|
|
Мансарда |
|
Лифт |
Да |
|
Нет |
||
|
||
Факт |
СоответсвуетТребованиямБезопасности |
|
НеСоответсвуетТребованиямБезопасности |
||
|
Таблица В.4 – Регистры сведений
Наименование |
Измерения |
Тип данных |
Тип данных |
РемонтныеРаботы |
ВидРаботы |
СправочникСсылка. |
Строка (длина 20) |
|
|
Работы |
|
Таблица В.5 – Регистры накопления
Наименование |
Измерения |
Тип данных |
Тип данных |
ЗаявкиНаРемонт |
ТипДома |
СправочникСсылка. |
Строка (длина 20) |
|
|
ТипДома |
|
|
ФИО |
СправочникСсылка. |
Строка (длина 20) |
|
|
ФИО |
|
45
ПРИЛОЖЕНИЕ Г
Листинг программных модулей системы
Листинг Г.1 – Документ ЗаявкиНаРемонт :ФормаДокумента
&НаКлиенте Процедура ТипДомаПриИзменении(Элемент)
Массив = Новый Массив(); Массив = СформироватьСписокВыбораКолВа(Объект.ТипДома); Колво = 0;
Для Каждого ЭлементМассива из Массив Цикл Колво = Колво+1;
КонецЦикла; Индекс = 0;
Элементы.Адрес.СписокВыбора.Очистить(); Пока Индекс <Адрес
Элементы.Адрес.СписокВыбора.Добавить(Массив[Индекс]); Индекс = Индекс+1;
Адрес; Наименование = ""+Объект.ТипДома+"-"+Объект.Адрес+"-"+Объект.Площадькрыши;
Объект.ОплаченнаяСумма = РаботаСДокументами.АктуальнаяЦена(Объект.Дата,Наименование); КонецПроцедуры
&НаКлиенте Процедура АдресПриИзменении(Элемент)
Массив = Новый Массив(); Массив = СформироватьСписокВыбораТипдома (Объект.ТипДома, Объект.Адрес); Колво = 0;
Для Каждого ЭлементМассива из Массив Цикл Колво = Колво+1;
КонецЦикла; Индекс = 0;
Элементы.ПлощадьКрыши.СписокВыбора.Очистить(); Пока Индекс <Адрес
Элементы.ПлощадьКрыши.СписокВыбора.Добавить(Массив[Индекс]); Индекс = Индекс+1;
Адрес; Наименование = ""+Объект.ТипДома+"-"+Объект.Адрес+"-"+Объект.ПлощадьКрыши;
Объект.ОплаченнаяСумма = РаботаСДокументами.АктуальнаяЦена(Объект.Дата,Наименование); КонецПроцедуры
&НаКлиенте Процедура ПлощадьКрышиПриИзменении(Элемент)
Наименование = ""+Объект.ТипДома+"-"+Объект.Адрес+"-"+Объект.ПлощадьКрыши; Объект.ОплаченнаяСумма = РаботаСДокументами.АктуальнаяЦена(Объект.Дата,Наименование);
КонецПроцедуры
&НаСервере Функция СформироватьСписокВыбораКолВа
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ
|
| |
СтоимостьЗаявки.ТипДомп, |
| |
СтоимостьЗаявки.Адрес |
|
|
|ИЗ |
|
|
| |
РегистрСведений.СтоимостьЗаявки КАК СтоимостьЗаявки |
|
|ГДЕ |
|
|
| |
СтоимостьЗаявки.ТипДома = &ТипДома |
|
| |
|
|
|СГРУППИРОВАТЬ ПО |
|
| |
СтоимостьЗаявки.ТипДома, |
| Стоимостьзаявки.Адрес"; Запрос.УстановитьПараметр("ТипДома", ТипДома);
46
Выборка = Запрос.Выполнить().Выбрать(); Количество = Выборка.Количество(); Массив = Новый Массив(Количество); Индекс = 0; Пока Выборка.Следующий() Цикл
Массив[Индекс] = Выборка.Адрес; Индекс = Индекс+1;
КонецЦикла; Возврат Массив;
КонецФункции
&НаСервере Функция СформироватьСписокВыбора(ТипДома, КолВо)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ
| |
СтоимостьЗаявки.ТипДома, |
|
|
| |
СтоимостьЗаявки.Адрес, |
| |
СтоимостьЗаявки.ПлощадьКрыши |
|
|
|ИЗ |
|
|
| |
РегистрСведений.СтоимостьЗаявки КАК СтоимостьЗаявки |
|
|ГДЕ |
|
|
| |
СтоимостьЗаявки.МаркаАвтомобиля = &Марка |
|
| |
И СтоимостьЗаявки.КоличествоЦилиндров = &КолВо |
|
| |
|
|
|СГРУППИРОВАТЬ ПО |
|
|
| |
СтоимостьЗаявки.ТипДома, |
|
| |
СтоимостьЗаявки.Адрес, |
|
| |
СтоимостьЗаявки.ПлощадьКрыши"; |
Запрос.УстановитьПараметр("ТипДома", ТипДома); Запрос.УстановитьПараметр("КолВо", КолВо); Выборка = Запрос.Выполнить().Выбрать(); Количество = Выборка.Количество(); Массив = Новый Массив(Количество); Индекс = 0; Пока Выборка.Следующий() Цикл
Массив[Индекс] = Выборка.ПлощадьКрыши; Индекс = Индекс+1;
КонецЦикла; Возврат Массив;
КонецФункции
&НаКлиенте Процедура ДатаПриИзменении(Элемент)
Объект.ОплаченнаяСумма = РаботаСДокументами.АктуальнаяЦена(Объект.Дата,Наименование); Объект.ДатаТО = ДобавитьМесяц(Объект.Дата, 12);
КонецПроцедуры
&НаКлиенте Процедура ПриОткрытии(Отказ)
Объект.ДатаТО = ДобавитьМесяц(Объект.Дата, 12); КонецПроцедуры
Листинг Г.2 – Документ ЗаявкиНаРемонт : : МодульОбъекта
&НаКлиенте Процедура ОбработкаПроведения(Отказ, Режим)
// регистр ЗаявкиНаРемонт Приход Движения.ЗаявкиНаРемонт.Записывать = Истина; Движение = Движения.ЗаявкиНаРемонт.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Наименование = ТипДома; Движение.ФИО = ФИО; Движение.Цена = ОплаченнаяСумма; Движение.Количество = 1;
КонецПроцедуры
47
Листинг Г.3 – Документ НевыполненныеЗаявки :МодульОбъекта
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаявкиНаРемонт ") Тогда // Заполнение шапки ТипДома = ДанныеЗаполнения.ТипДома;
ФИО = ДанныеЗаполнения.ФИО; Дата = ДанныеЗаполнения.Дата;
КонецЕсли; КонецПроцедуры
Листинг Г.4 – Документ ВыполненныеРемонты :ФомаДокумента
&НаКлиенте Процедура УстановленнаяВидыРемонтаПриИзменении(Элемент)
Объект.ОплаченнаяСумма = РаботаСДокументами.ТОГБО(Объект.Дата,Объект.ВидыРемонта); КонецПроцедуры
&НаКлиенте Процедура ДатаПриИзменении(Элемент)
Объект.ОплаченнаяСумма = РаботаСДокументами.ТОГБО(Объект.Дата,Объект.ВидыРемонта); Объект.ДатаСледПроверки = ДобавитьМесяц(Объект.Дата, 12);
КонецПроцедуры
&НаКлиенте Процедура ПриОткрытии(Отказ)
Объект.ДатаСледПроверки = ДобавитьМесяц(Объект.Дата, 12); КонецПроцедуры
Листинг Г.5 – Документ ВыполненныеРемонты :МодульОбъекта
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.НевыполненныеЗаявки") Тогда // Заполнение шапки ВидРемонта = ДанныеЗаполнения.ВидРемонта;
ТипДома = ДанныеЗаполнения.ТипДома; ФИО = ДанныеЗаполнения.ФИО;
КонецЕсли; КонецПроцедуры
Листинг Г.6 – Отчет ИсторическаяСтоимостьРемонта: ОСКД
ВЫБРАТЬ
СтоимостьЗаявкиСрезПоследних.Наименование, СтоимостьЗаявкиГБОСрезПоследних.Цена, СтоимостьЗаявкиГБОСрезПоследних.Период
ИЗ
РегистрСведений.СтоимостьЗаявки.СрезПоследних КАК СтоимостьЗаявкиСрезПоследних
48
Листинг Г.7 – Отчет ОтремонтированныеЖилыеОбъекты :ФормаОтчета
&НаКлиенте Процедура Сформировать(Команда)
Если ДатаНачала>= ДатаОкончания Тогда Сообщение = НовыйСообщениеПользователю;
Сообщение.Текст = "Даты введены некорректно!"; Сообщение.Сообщить();
Иначе
ЭтаФорма.ВывестиСписок(ДатаНачала, ДатаОкончания); КонецЕсли;
КонецПроцедуры
Процедура ВывестиСписок(ДатаНачала, ДатаОкончания)Экспорт ТабДок = Список;
Макет = Отчеты.ОтремонтированныеЖилыеОбъекты.ПолучитьМакет("Макет"); Шапка = Макет.ПолучитьОбласть("Шапка");
Строка = Макет.ПолучитьОбласть("Строка"); ТабДок.Очистить();
Шапка.Параметры.дата1 = Формат(ДатаНачала, "ДФ=dd.MM.yyyy"); Шапка.Параметры.дата2 = Формат(ДатаОкончания, "ДФ=dd.MM.yyyy");
ТабДок.Вывести(Шапка); Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| |
ЗаявкиНаРемонт.ФИО, |
| |
ЗаявкиНаРемонт.ТипДома, |
| |
ЗаявкиНаРемонт.ДатаТО, |
| |
ЗаявкиНаРемонт.Дата |
|ИЗ |
|
| |
Документ.ЗаявкиНаРемонт КАК ЗаявкинаРемонт |
| |
ЛЕВОЕ СОЕДИНЕНИЕ Документ.НевыполненныеЗаявки КАК НевыполненныеЗаявки |
| |
ПО Заявки.ФИО = НевыполненныеЗаявки.ФИО |
|ГДЕ |
|
| |
Заявки.ДатаТО>= &ДатаНачала |
| |
И УстановкаГБО.ДатаТО<= &ДатаОкончания"; |
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала); Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания ); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл
Строка.Параметры.фио = Выборка.ФИО; Строка.Параметры.типдома = Выборка.ТипДома;
Строка.Параметры.дата = Формат(Выборка.Дата, "ДФ=dd.MM.yyyy"); ТабДок.Вывести(Строка);
КонецЦикла; Запрос2 = Новый Запрос;
Запрос2.Текст = "ВЫБРАТЬ
| |
ВыполненныеРемонты.Дата, |
| |
ВыполненныеРемонты.ТипДома, |
| ВыполненныеРемонты.ФИО, |
|
| |
ВыполненныеРемонты.ДатаСледПроверки |
|ИЗ |
|
| |
Документ.ВыполненныеРемонты КАК ВыполненныеРемонты |
| |
ЛЕВОЕ СОЕДИНЕНИЕ Документ.НевыполненныеЗаявки КАК НевыполненныеЗаявки |
| |
ПО ВыполненныеРемонты.ФИО = ВыполненныеРемонты.ФИО |
|ГДЕ |
|
| |
ВыполненныеРемонты.ДатаСледПроверки>= &ДатаНачала |
| |
И ВыполненныеРемонты.ДатаСледПроверки<= &ДатаОкончания"; |
Запрос2.УстановитьПараметр("ДатаНачала", ДатаНачала); Запрос2.УстановитьПараметр("ДатаОкончания", ДатаОкончания ); Выборка2 = Запрос2.Выполнить().Выбрать(); Пока Выборка2.Следующий() Цикл
49
Строка.Параметры.фио = Выборка2.ФИО; Строка.Параметры.авто = Выборка2.ТипДома;
Строка.Параметры.дата = Формат(Выборка2.Дата, "ДФ=dd.MM.yyyy"); ТабДок.Вывести(Строка);
КонецЦикла; КонецПроцедуры
Листинг Г.8 – Отчет НевыполненныеЗаявки :ФормаОтчета
&НаКлиенте Процедура ПриОткрытии(Отказ)
Дата = ТекущаяДата(); КонецПроцедуры
&НаКлиенте Процедура Сформировать(Команда)
ЭтаФорма.ВывестиСписок(Дата); КонецПроцедуры
Процедура ВывестиСписок(Дата)Экспорт ТабДок = Список;
Макет = Отчеты.Невыполенныезаявки.ПолучитьМакет("Макет"); Шапка = Макет.ПолучитьОбласть("Шапка");
Строка = Макет.ПолучитьОбласть("Строка"); ТабДок.Очистить();
Шапка.Параметры.дата = Формат(Дата, "ДФ=dd.MM.yyyy"); ТабДок.Вывести(Шапка);
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ
| |
Заявкинаремонт.ФИО, |
| |
Заявкинаремонт.Типдома, |
| |
Невыполненныезаявки.Причинаотказа, |
| |
Заявкинаремонт.Датазаявки, |
| |
Заявкинаремонт.Дата |
|ИЗ |
|
| |
Документ.Заявкинаремонт КАК Заявкинаремонт |
| |
ЛЕВОЕ СОЕДИНЕНИЕ Документ.Невыполненныезаявки КАК Невыполненныезаявки |
| |
ПО Заявкинаремонт.ФИО = Невыполненныезаявки.ФИО |
|ГДЕ |
|
| |
Заявкинаремонт.Дата<= &Дата"; |
Запрос.УстановитьПараметр("Дата", Дата); |
|
Выборка = Запрос.Выполнить().Выбрать(); |
|
Запрос2 = Новый Запрос; |
|
Запрос2.Текст = "ВЫБРАТЬ |
|
| |
Выполненныеремонты.Дата, |
| |
Выполненныеремонты.Типдома, |
| |
Выполненныеремонты.ФИО, |
| |
Выполненныеремонты.ДатаСледРемонта, |
| |
Невыполненныезаявки.Причинаотказа |
|ИЗ |
|
| |
Документ.Выполненныеремонты КАК Выполненныеремонты |
| |
ЛЕВОЕ СОЕДИНЕНИЕ Документ.Невыполненныезаявки КАК Невыполненныезаявки |
| |
ПО Выполненныеремонты.ФИО = Невыполненныезаявки.ФИО |
|ГДЕ |
|
| |
Выполненныеремонты.Дата<= &Дата"; |
Запрос2.УстановитьПараметр("Дата", Дата); Выборка2 = Запрос2.Выполнить().Выбрать(); Количество = Выборка.Количество(); Количество2 = Выборка2.Количество();
Массив = Новый Массив(Количество+Количество2, 4); Индекс = 0; Пока Выборка.Следующий() Цикл
Массив[Индекс][0] = Выборка.ФИО; Массив[Индекс][1] = Выборка.Причинаотказа; Массив[Индекс][2] = Выборка.Дата; Массив[Индекс][3] = Выборка.Датазаявки;
50
Индекс = Индекс+1; КонецЦикла; Пока Выборка2.Следующий() Цикл
Массив[Индекс][0] = Выборка2.ФИО; Массив[Индекс][1] = Выборка2.Причинаотказа; Массив[Индекс][2] = Выборка2.Дата; Массив[Индекс][3] = Выборка2.ДатаСледРемонта; Индекс = Индекс+1;
КонецЦикла; Запрос3 = Новый Запрос;
Запрос3.Текст = "ВЫБРАТЬ
| |
Выполненныеремонты.ФИО, |
| |
Выполненныеремонты.Дата |
|ИЗ |
|
| |
Документ.Выполненныеремонты КАК Выполненныеремонты |
|ГДЕ |
|
| |
Выполненныеремонты.Дата<= &Дата"; |
Запрос3.УстановитьПараметр("Дата", Дата); Выборка3 = Запрос3.Выполнить().Выбрать(); Количество3 = Выборка3.Количество(); Массив2 = Новый Массив(Количество3, 2); Индекс = 0; Пока Выборка.Следующий() Цикл
Массив2[Индекс][0] = Выборка3.ФИО; Массив2[Индекс][1] = Выборка3.Дата; Индекс = Индекс+1;
КонецЦикла; Индекс1 = 0;
Пока Индекс1< Количество+Количество2 Цикл Индекс2 = 0; Флаг = Ложь;
Пока Индекс2< Количество3 Цикл Если (Массив[Индекс1][0]=Массив2[Индекс2][0]) и (Массив[Индекс1][3]=Массив2[Индекс2][1])
Тогда
Флаг = Истина; КонецЕсли; Индекс2 = Индекс2+1;
КонецЦикла; Если (Флаг = Ложь) и (Массив[Индекс1][3] <= Дата) Тогда
Строка.Параметры.фио = Массив[Индекс1][0]; Строка.Параметры.Причинаотказа = Массив[Индекс1][1]; Строка.Параметры.дата1 = Формат(Массив[Индекс1][2], "ДФ=dd.MM.yyyy"); Строка.Параметры.дата2 = Формат(Массив[Индекс1][3], "ДФ=dd.MM.yyyy"); ТабДок.Вывести(Строка);
КонецЕсли; Индекс1=Индекс1+1;
КонецЦикла; КонецПроцедуры
Листинг Г.9 – Отчет СтатистическийОтчетЗаявкиНаРемонт : ОСКД
ВЫБРАТЬ
ЗаявкиНаРемонтОстаткиИОбороты.ТипДома, ЗаявкиНаРемонтОстаткиИОбороты.ФИО, ЗаявкиНаРемонтОстаткиИОбороты.КоличествоПриход, ЗаявкиНаРемонтОстаткиИОбороты.ЦенаПриход
ИЗ
РегистрНакопления.ЗаявкиНаРемонт.ОстаткиИОбороты КАК ЗаявкиНаРемонтОстаткиИОбороты
Листинг Г.10 – Отчет ПоискДанных : Форма отчета
&НаКлиенте Процедура Поиск(Команда)
Искать(0); КонецПроцедуры
51