Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Фрагмент листинга программного кода реализации метода усреднения индивидуальных оценок

Обоснование проектных решений по программному и техническому обеспечению системы | Описание структуры перечислений и справочников | Описание структуры документов | Описание структуры регистров | Описание программных модулей | Описание интерфейса системы и инструкции по работе с ней | Список использованных источников | Схемы оргструктур | Приложение В | Приложение Г |


Читайте также:
  1. II. Основные цели и задачи Программы с указанием сроков и этапов ее реализации, а также целевые индикаторы и показатели, отражающие ход ее выполнения
  2. III. Этапы реализации проекта
  3. IP-датаграммы, IP-пакеты и IP-фрагменты
  4. V 1. Административно-правовой статус ФТС России. Административно-правовые формы и методы реализации исполнительной власти. Обеспечение законности в государственном управлении.
  5. VI. ИССЛЕДОВАНИЕ ИНДИВИДУАЛЬНЫХ ОСОБЕННОСТЕЙ И КАЧЕСТВ ЛИЧНОСТИ
  6. XI. Требования к реализации хлеба, хлебобулочных и кондитерских изделия
  7. Алгоритм метода множителей Лагранжа

функция ОценкаКритерия(значение,мин,макс,максоценка)

Если значение>=макс тогда

Возврат максоценка;

КонецЕсли;

КвЧисла = Новый КвалификаторыЧисла(2,0,ДопустимыйЗнак.Неотрицательный);

масс=новый Массив;

масс.Добавить(Тип("Число"));

тип=новый ОписаниеТипов(масс,,,КвЧисла);

баллы=0;

баллы=тип.ПривестиЗначение(баллы);

макс=макс-мин;

значение=значение-мин;

баллы=1;

для а=1 по максоценка цикл

если макс*(а/максоценка)<значение и значение<макс*((а+1)/максоценка) тогда

баллы=а;

КонецЕсли;

КонецЦикла;

возврат баллы;

КонецФункции

функция максимальный(массив)

максимальн=0;

для а=0 по массив.Количество()-1 цикл

если массив[а]>массив[максимальн] тогда

максимальн=а;

КонецЕсли;

КонецЦикла;

Возврат массив[максимальн];

КонецФункции

функция ф1(а)

если а<0 тогда

возврат 0;

иначе

Возврат а;

КонецЕсли;

КонецФункции

функция минимальный(массив)

миниимальн=0;

для а=0 по массив.Количество()-1 цикл

если массив[а]<массив[миниимальн] тогда

миниимальн=а;

КонецЕсли;

КонецЦикла;

Возврат массив[миниимальн];

КонецФункции

функция минимальныйиндекс(массив)

минимальн=0;

для а=0 по массив.Количество()-1 цикл

если массив[а]>массив[минимальн] тогда

минимальн=а;

КонецЕсли;

КонецЦикла;

Возврат минимальн;

КонецФункции

функция количествоодинаковых(массив,индекс)

к=0;

для а=0 по массив.количество()-1 цикл

если массив[индекс]=массив[а] тогда

к=к+1;

КонецЕсли;

КонецЦикла;

Возврат к;

КонецФункции

функция ПоискВСпискеЗначений(списокзнач,строка)

для а=0 по списокзнач.Количество()-1 цикл

если строка(списокзнач[а])=строка тогда

возврат а;

КонецЕсли;

КонецЦикла;

возврат -1;

сообщить("Строка не найдена");

КонецФункции

Процедура Кнопка1Нажатие(Элемент)

ЭлементыФормы.РезультирующиеОценки.Значение.Очистить();

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ

|Наряд_на_ремонт.Ссылка,

|Наряд_на_ремонт.ТипРемонта КАК ТипРемонта,

|Наряд_на_ремонт.ТипКонструкции КАК ТипКонструкции,

|Наряд_на_ремонт.Затраты КАК Затраты,

|Наряд_на_ремонт.Рекомендация.ФизическийИзнос КАК ФизическийИзнос

|ИЗ

|РегистрСведений.СтатусПроекта.СрезПоследних(&дата,) КАК СтатусПроектаСрезПоследних

|ЛЕВОЕ СОЕДИНЕНИЕ Документ.Наряд_на_ремонт КАК Наряд_на_ремонт

|ПО СтатусПроектаСрезПоследних.НарядНаРемонт = Наряд_на_ремонт.Ссылка

|ГДЕ

|СтатусПроектаСрезПоследних.Затраты - СтатусПроектаСрезПоследних.Финансирование > 0"; запрос.УстановитьПараметр("дата",ТекущаяДата());

//Запрос.УстановитьПараметр("Статус",Перечисления.Статус.Не_обслужен);

Результат = Запрос.Выполнить();

если Результат.Выгрузить().Количество()>0 тогда

ЭлементыФормы.ТабличноеПоле1.Значение=Результат.Выгрузить();

ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();

оценки=новый ТаблицаЗначений;

таблица=Результат.Выгрузить();

 

оценки.Колонки.Добавить("Сметы",,,);//.Ширина=20;

КвЧисла = Новый КвалификаторыЧисла(2,0,ДопустимыйЗнак.Неотрицательный);

масс=новый Массив;

масс.Добавить(Тип("Число"));

тип=новый ОписаниеТипов(масс,,,КвЧисла);

оценки.Колонки.Добавить("ТипРемонта",тип,"ТипРемонта",2);

оценки.Колонки.Добавить("ТипКонструкции",тип,"ТипКонструкции",2);

оценки.Колонки.Добавить("Затраты",тип,"Затраты",2);

оценки.Колонки.Добавить("ФизическийИзнос",тип,"ФизическийИзнос",2);

для а=0 по таблица.Количество()-1 цикл

оценки.Добавить();

ЭлементыФормы.РезультирующиеОценки.ДобавитьСтроку();

КонецЦикла;

оценки.ЗагрузитьКолонку(таблица.ВыгрузитьКолонку(0),0);

ЭлементыФормы.РезультирующиеОценки.Значение.ЗагрузитьКолонку

(таблица.ВыгрузитьКолонку(0),0);

миним=минимальный(таблица.ВыгрузитьКолонку(3));

максим=максимальный(таблица.ВыгрузитьКолонку(3));

для а=0 по оценки.Количество()-1 цикл

если таблица[а].ТипРемонта=Перечисления.Тип_ремонта.капитальный тогда

оценки[а].ТипРемонта=7;иначе оценки[а].ТипРемонта=3;

КонецЕсли;

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ

запрос.УстановитьПараметр

("Ссылка",ЭлементыФормы.РанжированиеТиповКонструкции.Значение);

запрос.УстановитьПараметр("ТипКонструкции",таблица[а].ТипКонструкции);

Результат = Запрос.Выполнить();

оценки[а].ТипКонструкции=12-Результат.Выгрузить()[0][0]; оценки[а].Затраты=ОценкаКритерия(таблица[а].Затраты,миним,максим,11);

оценки[а].ФизическийИзнос=ОценкаКритерия(таблица[а].ФизическийИзнос,0,100,11);

КонецЦикла;

ЭлементыФормы.ТабличноеПоле2.Значение=оценки;

ЭлементыФормы.ТабличноеПоле2.СоздатьКолонки();

В=новый СписокЗначений;

для а=0 по ЭлементыФормы.РанжированныеКритерии.Значение.РанжированиеКритериев.

Выгрузить().Количество()-1 цикл

в.Добавить(ЭлементыФормы.РанжированныеКритерии.Значение.РанжированиеКритериев.

Выгрузить()[а][6],,,);

КонецЦикла;

для а=0 по таблица.Количество()-1 цикл

к=0;

к=к+оценки[а][1]*в[ПоискВСпискеЗначений(ЭлементыФормы.РанжированныеКритерии.

Значение.РанжированиеКритериев.Выгрузить().ВыгрузитьКолонку(1),"Тип ремонта")].Значение;

к=к+оценки[а][2]*в[ПоискВСпискеЗначений(ЭлементыФормы.РанжированныеКритерии.

Значение.РанжированиеКритериев.Выгрузить().ВыгрузитьКолонку(1),"Тип конструкции")].Значение;

к=к+оценки[а][3]*в[ПоискВСпискеЗначений(ЭлементыФормы.РанжированныеКритерии.

Значение.РанжированиеКритериев.Выгрузить().ВыгрузитьКолонку(1),"Сумма затрат")].Значение;

к=к+оценки[а][4]*в[ПоискВСпискеЗначений(ЭлементыФормы.РанжированныеКритерии.

Значение.РанжированиеКритериев.Выгрузить().ВыгрузитьКолонку(1),"Износ")].Значение;

ЭлементыФормы.РезультирующиеОценки.Значение[а].Оценка=к;

КонецЦикла;

оценк=ЭлементыФормы.РезультирующиеОценки.Значение.Выгрузить().ВыгрузитьКолонку

("Оценка");

ранги=новый Массив(оценк.Количество());

для б=0 по ранги.Количество()-1 цикл

ранги[б]=0;

КонецЦикла;

упорядоч=новый Массив(оценк.Количество());

для б=0 по ранги.Количество()-1 цикл

упорядоч[б]=оценк[б];

КонецЦикла;

для а=0 по упорядоч.Количество()-1 цикл

м=а;

для б=а по упорядоч.Количество()-1 цикл

если упорядоч[б]>упорядоч[м] тогда

м=б;

КонецЕсли;

КонецЦикла;

к=упорядоч[м];

упорядоч[м]=упорядоч[а];

упорядоч[а]=к;

КонецЦикла;

к=0;

для б=0 по упорядоч.Количество()-1 цикл

для а=0 по оценк.Количество()-1 цикл

если упорядоч[б]=оценк[а] и ранги[а]=0 тогда

к=а; прервать;

КонецЕсли;

КонецЦикла;

ранги[к]=б+1;

КонецЦикла;

ЭлементыФормы.РезультирующиеОценки.Значение.ЗагрузитьКолонку(ранги,2);

ЭлементыФормы.РезультирующиеОценки.Значение.Сортировать("Ранг Возр");

иначе

сообщить("Нет проектов нуждающихся в финансировании");

КонецЕсли;

КонецПроцедуры


Дата добавления: 2015-08-17; просмотров: 123 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Приложение Ж| Фрагмент листинга программного кода реализации метода экспертных оценок

mybiblioteka.su - 2015-2024 год. (0.016 сек.)