diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql
index 057b5310b21585257e76914a9fafa8f62822dd63..f0f2217d9656cff840a5c1c4158fe1b7395ed7ee 100644
--- a/db/StoredProcedures.sql
+++ b/db/StoredProcedures.sql
@@ -644,24 +644,15 @@ CREATE FUNCTION `CreateStudent`(	`Last` 			VARCHAR(30) CHARSET utf8,
 								) 	RETURNS int(11)
     NO SQL
 BEGIN 
-	DECLARE curID, StudyGroupID, RoleID INT;
-	
-	SELECT user_roles.ID
-	INTO RoleID
-	FROM `user_roles`
-	WHERE 	user_roles.Type = 'student' AND
-			user_roles.Role = 'common'
-	LIMIT 1;
-	IF NOT (RoleID > 0) THEN
-		RETURN -1;
-	END IF;
+	DECLARE curID, StudyGroupID INT;
 
 	SELECT study_groups.ID 
 	INTO StudyGroupID 
 	FROM `study_groups` 
+	INNER JOIN `specializations` ON study_groups.SpecializationID = specializations.ID
 	WHERE 	study_groups.Grade = Grade 	AND 
 			study_groups.GroupNum = GroupN AND 
-			study_groups.FacultyID = FacultyID 
+			specializations.FacultyID = FacultyID 
 	LIMIT 1;
 	IF NOT (StudyGroupID > 0) THEN
 		RETURN -1;
@@ -669,7 +660,7 @@ BEGIN
 
 
 	INSERT INTO `accounts` ( accounts.Login , accounts.Password , accounts.EMail, accounts.UserRoleID, accounts.ActivationCode )
-	VALUES 				   ( NULL, NULL, NULL, RoleID, Code);
+	VALUES 				   ( NULL, NULL, NULL, 1, Code);
 		
 	SELECT accounts.ID 
 	INTO curID
@@ -697,15 +688,6 @@ CREATE FUNCTION `CreateTeacher`(	`Last` 			VARCHAR(30) CHARSET utf8,
 BEGIN 
 	DECLARE curID, checker, RoleID INT;
 
-	SELECT user_roles.ID
-	INTO RoleID
-	FROM `user_roles`
-	WHERE 	user_roles.Type = 'teachers' AND
-			user_roles.Role = 'common'
-	LIMIT 1;
-	IF NOT (RoleID > 0) THEN
-		RETURN -1;
-	END IF;
 	
 	SELECT departments.ID 
 	INTO checker
@@ -732,7 +714,7 @@ BEGIN
 	END IF;
 
 	INSERT INTO `accounts` ( accounts.Login , accounts.Password , accounts.EMail, accounts.UserRoleID, accounts.ActivationCode )
-	VALUES 				   ( NULL, NULL, NULL, RoleID, Code);
+	VALUES 				   ( NULL, NULL, NULL, 2, Code);
 	
 	SELECT accounts.ID INTO curID
 	FROM `accounts`
@@ -791,7 +773,7 @@ CREATE FUNCTION `GetMaxRateForDisc`	(	`StudentID` INT,
 									) 	RETURNS int(11)
     NO SQL
 BEGIN
-	RETURN 	(	SELECT SUM(rating_table.MaxRate) 
+	RETURN 	(	SELECT SUM(submodules.MaxRate) 
 				FROM `rating_table`
 				INNER JOIN `submodules` ON rating_table.SubmoduleID = submodules.ID
 				INNER JOIN `modules`	ON submodules.ModuleID = modules.ID
@@ -830,7 +812,7 @@ BEGIN
 												disciplines_students.StudentID = StudentID
 	WHERE 	disciplines.SemesterID = semID AND
 			(	disciplines_students.Type = 'attach'	OR
-				(	disciplines_students.Type != 'detach' AND 
+				(	( disciplines_students.Type IS NULL OR disciplines_students.Type != 'detach' ) AND 
 					disciplines_groups.StudyGroupID = groupID 
 				)
 			)
@@ -871,7 +853,7 @@ BEGIN
 															disciplines_students.StudentID = StudentID
 				WHERE 	disciplines.SemesterID = semID AND
 						(	disciplines_students.Type = 'attach'	OR
-							(	disciplines_students.Type != 'detach' AND 
+							(	( disciplines_students.Type IS NULL OR disciplines_students.Type != 'detach' ) AND 
 								disciplines_groups.StudyGroupID = groupID 
 							)
 						)
@@ -970,7 +952,7 @@ BEGIN
     FROM `disciplines_groups`
     INNER JOIN `disciplines` 			ON 	disciplines_groups.DisciplineID = disciplines.ID
     INNER JOIN `disciplines_teachers` 	ON 	disciplines.ID = disciplines_teachers.DisciplineID AND 
-											disciplines.TeacherID = TeacherID
+											disciplines_teachers.TeacherID = TeacherID
     INNER JOIN `subjects`				ON 	subjects.ID = disciplines.SubjectID
     INNER JOIN `study_groups` 			ON 	study_groups.ID = disciplines_groups.StudyGroupID
     WHERE 	disciplines.SemesterID = semID
@@ -1060,7 +1042,7 @@ BEGIN
 				submodules.MaxRate,
 				submodules.Type 		AS 'SubmoduleControl'
 		FROM `modules`
-		RIGHT JOIN `submodules` ON modules.ID = submodules.ModuleID
+		LEFT JOIN  `submodules` ON modules.ID = submodules.ModuleID
 		INNER JOIN `disciplines` ON modules.DisciplineID = disciplines.ID
 		INNER JOIN `subjects` 	ON disciplines.SubjectID = subjects.ID
 		ORDER BY modules.OrderNum ASC, 
@@ -1268,7 +1250,7 @@ BEGIN
 	FROM `disciplines`
 	INNER JOIN `disciplines_teachers` ON 	disciplines_teachers.DisciplineID = disciplines.ID AND 
 											disciplines_teachers.TeacherID = AccessedTeacher  
-	WHERE disciplines.ID = discID
+	WHERE disciplines.ID = DisciplineID
 	LIMIT 1;
 	IF NOT (checker > 0) THEN
 		RETURN -1;