diff --git a/~dev_rating/application/classes/Controller/Teacher/GenExamForm.php b/~dev_rating/application/classes/Controller/Teacher/GenExamForm.php
deleted file mode 100644
index 77131e0acd7c9b103dc62768867d4e1052e1d948..0000000000000000000000000000000000000000
--- a/~dev_rating/application/classes/Controller/Teacher/GenExamForm.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php defined('SYSPATH') or die('No direct script access.');
-
-class Controller_Teacher_GenExamForm extends Controller_UserEnvi {
-    
-    public function action_do()
-	{
-    
-		$db = new Model_Teacher_GenExamForm;
-    
-		// Нужно изменить getStudentsForDiscipline!!!!
-		$result = $db->getStudentsForDiscipline(1,1); // TODO: fix
-		$rowsCount = count($result); // Получаем количество записей 
-		$templateFile = "./docs/template credit.xls"; // TODO: choose exam or credit
-		if (!file_exists($templateFile)) {
-			exit("template wasn't found" . PHP_EOL);
-		}
-    
-		$objPHPExcel = PHPExcel_IOFactory::load($templateFile);
-		$objPHPExcel->setActiveSheetIndex(0);
-	
-		// fill header
-		$range = $objPHPExcel->getNamedRange("Discipline")->getRange();
-		$objPHPExcel->getActiveSheet()->setCellValue("$range", "");
-		$range = $objPHPExcel->getNamedRange("Subdivision")->getRange();
-		$range = $objPHPExcel->getNamedRange("Major")->getRange();	
-		$range = $objPHPExcel->getNamedRange("Teacher")->getRange();
-		$range = $objPHPExcel->getNamedRange("Course")->getRange();
-		$range = $objPHPExcel->getNamedRange("Semester")->getRange();
-		$range = $objPHPExcel->getNamedRange("Year")->getRange();
-		$range = $objPHPExcel->getNamedRange("CreationDate")->getRange();
-		$objPHPExcel->getActiveSheet()->setCellValue("$range", date("m.d.y"));
-		$range = $objPHPExcel->getNamedRange("Date")->getRange();
-		$objPHPExcel->getActiveSheet()->setCellValue("$range", "Дата зачета \n30.12.2014");
-	
-		// fill students rows
-		$startRow = 12; 
-		$finalRow = 52; 
-		$indPosition = 'A'; // Номер 
-		$namePosition = 'B';  // ФИО 
-		$totalRatePosition = 'C';  // Итоговый рейтинг 
-		$semesterRatePosition  = 'G';   // Сумма баллов
-		$bonusRatePosition = 'H'; // Бонусные баллы
-		$rowNumber = $startRow;
-		$index = 1;
-		for($i = 1; $i <= $rowsCount; ++$i){
-   
-			$lastName = $result[$i]['Last'];
-			$firstName = $result[$i]['First'];
-			$secondName = $result[$i]['Second'];
-			$rate = $result[$i]['intermediate'];
-			$bonus = $result[$i]['bonus'];
-			$fullName = "$lastName  $firstName $secondName";
-			$totalRate = $rate + $bonus;
-       
-			$objPHPExcel->getActiveSheet()->setCellValue("$indPosition$rowNumber", "$i")
-                                  ->setCellValue("$namePosition$rowNumber", "$fullName")
-								  ->setCellValue("$totalRatePosition$rowNumber", "$totalRate")
-                                  ->setCellValue("$semesterRatePosition$rowNumber","$rate")
-                                  ->setCellValue("$bonusRatePosition$rowNumber","$bonus");
-			$rowNumber++;
-		}    
-
-		// delete rest rows
-		$objPHPExcel->getActiveSheet()->removeRow($rowNumber+1, $finalRow);
-   
-		$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
-		$objWriter->save(str_replace('.php', '.xls', __FILE__)); // TODO: change path
-   }
-}
-?>
\ No newline at end of file
diff --git a/~dev_rating/application/classes/Controller/Teacher/GenFinalForm.php b/~dev_rating/application/classes/Controller/Teacher/GenFinalForm.php
new file mode 100644
index 0000000000000000000000000000000000000000..f5f70df25028908c07172067d704102dfe4f17cf
--- /dev/null
+++ b/~dev_rating/application/classes/Controller/Teacher/GenFinalForm.php
@@ -0,0 +1,92 @@
+<?php defined('SYSPATH') or die('No direct script access.');
+
+class Controller_Teacher_GenFinalForm extends Controller_UserEnvi {
+    
+    public function action_do()
+	{
+		// parameters
+		//$disciplineID = $this->request->param('disciplineID');
+		//$groupID = $this->request->param('groupID');
+		$disciplineID = 266;
+		$groupID = 11;
+		
+		// preparation
+		$db = new Model_Teacher_Rating;
+		$info = $db->getFinalFormInfo($disciplineID, $groupID);
+		$type = $info[0]['ExamType'];
+		$specName = 
+		
+		$templateFile = "./docs/template $type.xls";
+		if (!file_exists($templateFile)) {
+			exit("template wasn't found" . PHP_EOL);
+		}
+		
+		$result = $db->getRatesForStudentsGroup($this->UserInfo['TeacherID'], $disciplineID, $groupID);
+		$rowsCount = count($result); // Получаем количество записей 
+		
+		$objPHPExcel = PHPExcel_IOFactory::load($templateFile);
+		$objPHPExcel->setActiveSheetIndex(0);
+		
+	
+		// fill header
+		$range = $objPHPExcel->getNamedRange("Discipline")->getRange();
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", $info[0]['SubjectName']);
+		$range = $objPHPExcel->getNamedRange("Subdivision")->getRange();
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", $info[0]['FacultyName']);
+		$range = $objPHPExcel->getNamedRange("Major")->getRange();	
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", "Специальность: ".$info[0]['SpecName']." ".$info[0]['SpecCode']);
+		$range = $objPHPExcel->getNamedRange("Teacher")->getRange();
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", $info[0]['LastName']." ".$info[0]['FirstName']." ".$info[0]['SecondName']);
+		$range = $objPHPExcel->getNamedRange("Grade")->getRange();
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", $info[0]['GradeNum']);
+		$range = $objPHPExcel->getNamedRange("Semester")->getRange();
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", $info[0]['SemesterNum']);
+		$range = $objPHPExcel->getNamedRange("Year")->getRange();
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", $info[0]['Year']);
+		$range = $objPHPExcel->getNamedRange("CreationDate")->getRange();
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", date("m.d.y"));
+		$range = $objPHPExcel->getNamedRange("Date")->getRange();
+		if ($type == 'exam') 
+			$controlDate = '__________';
+		else
+			$controlDate = '30.12.2014';
+		$objPHPExcel->getActiveSheet()->setCellValue("$range", "Дата зачета \n$controlDate");
+	
+		// fill students rows
+		$startRow = 12; 
+		$finalRow = 52; 
+		$indPosition = 'A'; // Номер 
+		$namePosition = 'B';  // ФИО 
+		$totalRatePosition = 'G';  // Итоговый рейтинг 
+		$semesterRatePosition  = 'H';   // Сумма баллов
+		$bonusRatePosition = 'I'; // Бонусные баллы
+		$rowNumber = $startRow;
+		$index = 1;
+		foreach($result as $studentInfo){
+			
+			$lastName = $studentInfo['Last'];
+			$firstName = $studentInfo['First'];
+			$secondName = $studentInfo['Second'];
+			$rate = (int)$studentInfo['intermediate'];
+			$bonus = (int)$studentInfo['bonus'];
+			$fullName = "$lastName  $firstName $secondName";
+			$totalRate = $rate + $bonus;
+       
+			$objPHPExcel->getActiveSheet()->setCellValue("$indPosition$rowNumber", "$index")
+                                  ->setCellValue("$namePosition$rowNumber", "$fullName")
+								  ->setCellValue("$totalRatePosition$rowNumber", "$totalRate")
+                                  ->setCellValue("$semesterRatePosition$rowNumber","$rate")
+                                  ->setCellValue("$bonusRatePosition$rowNumber","$bonus");
+			$rowNumber++;
+			$index++;
+		}    
+
+		// delete rest rows
+		$objPHPExcel->getActiveSheet()->removeRow($rowNumber+1, $finalRow);
+   
+		$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+		$objWriter->save('./FinalForm.xls'); 
+		// TODO: send to user
+   }
+}
+?>
\ No newline at end of file
diff --git a/~dev_rating/application/classes/Model/Teacher/Rating.php b/~dev_rating/application/classes/Model/Teacher/Rating.php
index 75a39fcbccdb4d89f32a48038b5928bbef75dc17..a57687d68f1e2239e9def1887eca760a2ece377e 100644
--- a/~dev_rating/application/classes/Model/Teacher/Rating.php
+++ b/~dev_rating/application/classes/Model/Teacher/Rating.php
@@ -49,5 +49,16 @@ class Model_Teacher_Rating extends Model
         $sql = "SELECT `GetRateForDisc`('$studentID', '$disciplineID') AS `Num`;";
         return DB::query(Database::SELECT, $sql)->execute();
     }
+
+    public function getRatesForStudentsGroup($teacherID, $disciplineID, $groupID)
+    {
+        $sql = "CALL `getRatesForStudentsGroup`($teacherID, $disciplineID, $groupID)";
+        return DB::query(Database::SELECT, $sql)->execute();
+    }
+    public function getFinalFormInfo($disciplineID, $groupID)
+    {
+        $sql = "CALL `getFinalFormInfo`($disciplineID, $groupID)";
+        return DB::query(Database::SELECT, $sql)->execute();
+    }
     
 }
diff --git a/~dev_rating/docs/template credit.xls b/~dev_rating/docs/template credit.xls
index c6b984c2be6337e971f52db5b7efc0f49e24bdb6..da8a284b60ca7651076604854a04875df7488f74 100644
Binary files a/~dev_rating/docs/template credit.xls and b/~dev_rating/docs/template credit.xls differ
diff --git a/~dev_rating/docs/template exam.xls b/~dev_rating/docs/template exam.xls
index 60ba31ce35f95af6d4087b0d694d292b7669f947..f0555930443b4a89ecd57bff78ecae6a2c92691d 100644
Binary files a/~dev_rating/docs/template exam.xls and b/~dev_rating/docs/template exam.xls differ