diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql
index d0feb3a6ed53c653ba6caf553716b4bf32a25b7c..e9aa59517232706c6fabc2d25bc1885998b02f3b 100644
--- a/db/StoredProcedures.sql
+++ b/db/StoredProcedures.sql
@@ -1107,7 +1107,7 @@ DROP PROCEDURE IF EXISTS GetDisciplineInfoByID//
 CREATE PROCEDURE `GetDisciplineInfoByID`(	IN `DiscID` INT )
     NO SQL
 BEGIN  
-
+	-- TODO: Inline InternalCheckRate
 	SELECT 	disciplines.AuthorID,
 			disciplines.Grade 			AS 'DisciplineGrade',
 			disciplines.ExamType,
@@ -1326,44 +1326,41 @@ CREATE FUNCTION `SetStudentRate`(	`TeacherID` 	INT,
 									RETURNS int(11)
     NO SQL
 BEGIN  
-    DECLARE checker, discID, groupID, semID INT; 
+    DECLARE checker, discID, groupID, semID, rateID INT; 
     SET discID = -1;
     SET groupID = -1; 					 
 	
-    SELECT disciplines.ID 
+    SELECT modules.DisciplineID 
     INTO discID
 	FROM `submodules`
-	INNER JOIN `modules` 		ON submodules.ModuleID = modules.ID
-	INNER JOIN `disciplines` 	ON disciplines.ID = modules.DisciplineID 
+	INNER JOIN `modules` 		ON submodules.ModuleID = modules.ID 
 	WHERE submodules.ID = SubmoduleID
 	LIMIT 1;
+	IF NOT (discID>0) THEN
+		RETURN -1;
+	END IF;
 
-	SELECT disciplines.ID 
-	INTO checker 
-	FROM `disciplines`
-	INNER JOIN `disciplines_teachers` ON 	disciplines_teachers.DisciplineID = disciplines.ID AND 
-											disciplines_teachers.TeacherID = TeacherID  
-	WHERE disciplines.ID = discID
+	SELECT disciplines_teachers.ID
+	INTO checker
+	FROM `disciplines_teachers`
+	WHERE 	disciplines_teachers.DisciplineID = discID AND 
+			disciplines_teachers.TeacherID = TeacherID  
 	LIMIT 1;
 	IF NOT (checker > 0) THEN
 		RETURN -1;
 	END IF;
 
 
-	SELECT COUNT(rating_table.ID) 
-	INTO checker
-	FROM `rating_table`
-	WHERE 	rating_table.SubmoduleID = SubmoduleID AND 
-			rating_table.TeacherID = TeacherID AND 
-			rating_table.StudentID = StudentID;
-	IF NOT (checker = 0) THEN
-		RETURN -1;
-	END IF;
+	SELECT students.StudyGroupID 
+	INTO groupID 
+	FROM `students` 
+	WHERE students.ID = StudentID 
+	LIMIT 1; 
 
-	SELECT students.StudyGroupID INTO groupID FROM `students` WHERE students.ID = StudentID LIMIT 1; 
 	SET semID = GetCurSemesterID(); 
-	
-	SELECT 	disciplines.ID INTO checker
+	SET checker = -1;
+	SELECT 	disciplines.ID 
+	INTO checker
 	FROM `disciplines`
 	LEFT JOIN 	`disciplines_groups` 		ON 	disciplines_groups.DisciplineID = disciplines.ID AND
 												disciplines_groups.StudyGroupID = groupID
@@ -1375,106 +1372,36 @@ BEGIN
 				((disciplines_students.Type IS NULL OR disciplines_students.Type != 'detach') AND disciplines_groups.StudyGroupID = groupID )
 			)
 	LIMIT 1;
-
 	IF NOT (checker > 0) THEN
 		RETURN -1;
 	END IF;
-		
-	INSERT INTO `rating_table` ( rating_table.StudentID, rating_table.TeacherID, rating_table.SubmoduleID, rating_table.Rate, rating_table.Date )
-	VALUES ( StudentID, TeacherID, SubmoduleID, Rate, CURDATE() );
-	RETURN 0;
-END //
 
 
--- Изменение баллов для данного студента
-DROP FUNCTION IF EXISTS ChangeStudentRate//
-CREATE FUNCTION `ChangeStudentRate`	(	`TeacherID` 	INT,
-										`StudentID` 	INT,
-										`SubmoduleID` 	INT,
-										`Rate` 			INT 
-									) 	RETURNS int(11)
-    NO SQL
-BEGIN  
-    DECLARE checker, discID, OldVal, accID, groupID, rateID, semID INT;
-    SET discID = -1;
-    SET groupID = -1;  					 
-	
-    SELECT disciplines.ID 
-    INTO discID
-	FROM `submodules`
-	INNER JOIN `modules` 	 	ON submodules.ModuleID = modules.ID
-	INNER JOIN `disciplines` 	ON disciplines.ID = modules.DisciplineID 
-	WHERE submodules.ID = SubmoduleID
-	LIMIT 1;
-
-	SELECT disciplines.ID 
-	INTO checker 
-	FROM `disciplines`
-	INNER JOIN `disciplines_teachers` ON 	disciplines_teachers.DisciplineID = disciplines.ID AND 
-											disciplines_teachers.TeacherID = TeacherID  
-	WHERE disciplines.ID = discID
+	SELECT rating_table.ID 
+	INTO rateID
+	FROM `rating_table`
+	WHERE 	rating_table.SubmoduleID = SubmoduleID AND 
+			rating_table.StudentID = StudentID
 	LIMIT 1;
+	IF rateID > 0 THEN
+		UPDATE `rating_table`
+		SET 	rating_table.TeacherID 	= TeacherID,
+				rating_table.Rate 		= Rate,
+				rating_table.Date 		= CURDATE()
+		WHERE 	rating_table.ID = rateID;	
 
-	
-	IF checker > 0 THEN
-		SELECT rating_table.ID 
-		INTO rateID
-		FROM `rating_table`
-		WHERE 	rating_table.SubmoduleID = SubmoduleID AND 
-				rating_table.TeacherID = TeacherID AND 
-				rating_table.StudentID = StudentID
-		LIMIT 1;
-
-		IF checker > 0 THEN
-			SELECT students.StudyGroupID INTO groupID FROM `students` WHERE students.ID = StudentID LIMIT 1; 
-			SET semID = GetCurSemesterID(); 
-			
-			SELECT 	disciplines.ID INTO checker
-			FROM `disciplines`
-			LEFT JOIN 	`disciplines_groups` 		ON 	disciplines_groups.DisciplineID = disciplines.ID AND
-														disciplines_groups.StudyGroupID = groupID
-			LEFT JOIN 	`disciplines_students`		ON 	disciplines_students.DisciplineID = disciplines.ID AND
-														disciplines_students.StudentID = StudentID
-			WHERE 	disciplines.SubjectID = SubjectID 	AND
-					disciplines.SemesterID = semID 		AND
-					(	disciplines_students.Type = 'attach'	OR
-						((disciplines_students.Type IS NULL OR disciplines_students.Type != 'detach') AND disciplines_groups.StudyGroupID = groupID )
-					)
-			LIMIT 1;
-
-			IF checker > 0 THEN	
-				SELECT rating_table.Rate 
-				INTO OldVal
-				FROM `rating_table`
-				WHERE rating_table.ID = rateID
-				LIMIT 1;
-
-
-				SELECT accounts.ID 
-				INTO accID
-				FROM `teachers`
-				INNER JOIN `accounts` ON teachers.AccountID = accounts.ID
-				WHERE teachers.ID = TeacherID
-				LIMIT 1; 
-
-				INSERT INTO `logs` ( logs.RatingTableID, logs.AccountID, logs.OldValue, logs.NewValue, logs.Date )
-				VALUES ( rateID, accID, OldVal, Rate, NOW() );
-			
-
-				UPDATE `rating_table`
-				SET rating_table.Rate = Rate
-				WHERE rating_table.ID = rateID;
-
-				RETURN 0;
-
-
-			END IF;
-		END IF;
+	ELSE 
+		INSERT INTO `rating_table` ( 	rating_table.StudentID, 
+										rating_table.TeacherID, 
+										rating_table.SubmoduleID, 
+										rating_table.Rate, 
+										rating_table.Date 
+									)
+		VALUES ( StudentID, TeacherID, SubmoduleID, Rate, CURDATE() );
 	END IF;
-	RETURN -1;
-END //
-
 
+	RETURN 0;
+END //