diff --git a/db/postgresql/alter_study_groups_formid_17.11.18.sql b/db/postgresql/alter_study_groups_formid_17.11.18.sql
index a37f8873c7f223d6b7fa90fc266440b466153b21..34f6379698434576dcec3b428c17a61e5beebf70 100644
--- a/db/postgresql/alter_study_groups_formid_17.11.18.sql
+++ b/db/postgresql/alter_study_groups_formid_17.11.18.sql
@@ -4,10 +4,15 @@ ALTER TABLE public.study_groups ALTER COLUMN formid SET NOT NULL;
 ALTER TABLE public.study_groups ALTER COLUMN formid SET DEFAULT 1;
 
 ALTER TABLE public.study_groups DROP CONSTRAINT study_groups_facultyid_gradeid_groupnum_key;
-ALTER TABLE ONLY study_groups
+ALTER TABLE ONLY public.study_groups
   ADD CONSTRAINT study_groups_facultyid_gradeid_groupnum_formid_key UNIQUE (facultyid, gradeid, groupnum, formid);
 
-ALTER TABLE ONLY study_groups
+INSERT INTO public.study_form(id, formname) VALUES
+  (1, 'очная'),
+  (2, 'очно-заочная'),
+  (3, 'заочная');
+
+ALTER TABLE ONLY public.study_groups
   ADD CONSTRAINT study_groups_ibfk_4 FOREIGN KEY (formid) REFERENCES study_form(id);
 
 DROP FUNCTION IF EXISTS public.creategroup(pgradeid integer, pgroupnum integer, pspecname character varying, pfacultyid integer, pyear integer);
@@ -134,4 +139,28 @@ CREATE OR REPLACE VIEW public.view_groups
        JOIN study_groups ON groups_years.groupid = study_groups.id
        JOIN specializations ON groups_years.specializationid = specializations.id
        JOIN grades ON study_groups.gradeid = grades.id
-       JOIN faculties ON faculties.id = specializations.facultyid;
\ No newline at end of file
+       JOIN faculties ON faculties.id = specializations.facultyid;
+
+DROP FUNCTION IF EXISTS public.getgroups(pgradeid integer, pfacultyid integer, psemesterid integer);
+CREATE OR REPLACE FUNCTION public.getgroups(pgradeid integer, pfacultyid integer, psemesterid integer)
+  RETURNS TABLE("ID" integer, "GroupNum" integer, "SpecID" integer, "SpecName" character varying, "SpecAbbr" character varying, "FormID" character varying)
+LANGUAGE sql
+AS $function$
+--select * from public.getgroups(
+--	:pgradeid,	-- put the pgradeid parameter value instead of 'pgradeid' (int4)
+--	:pfacultyid,	-- put the pfacultyid parameter value instead of 'pfacultyid' (int4)
+--	:psemesterid 	-- put the psemesterid parameter value instead of 'psemesterid' (int4)
+--);
+SELECT  view_groups.GroupID AS "ID",
+        view_groups.GroupNum as "GroupNum",
+        view_groups.SpecID as "SpecID",
+        view_groups.SpecName as "SpecName",
+        view_groups.SpecAbbr as "SpecAbbr",
+  (SELECT study_form.FormName from study_form WHERE study_form.id = view_groups.FormID)
+FROM view_groups
+  INNER JOIN semesters ON semesters.ID = pSemesterID
+WHERE   view_groups.GradeID = pGradeID AND
+        view_groups.FacultyID = pFacultyID AND
+        view_groups.Year = semesters.Year
+ORDER BY view_groups.GroupNum ASC;
+$function$
\ No newline at end of file
diff --git a/db/postgresql/tables_and_views.sql b/db/postgresql/tables_and_views.sql
index 84242288fe285b5161882c58102dca5728d5222e..f074ec2134f95a267610d6c30a5a52b4c436a2ab 100644
--- a/db/postgresql/tables_and_views.sql
+++ b/db/postgresql/tables_and_views.sql
@@ -1295,9 +1295,3 @@ INSERT INTO lesson_types(id, lesson_type) values
 (2, 'лабораторная'),
 (3, 'семинар'),
 (4, 'практикум');
-
-INSERT INTO public.study_form(id, formname) VALUES
-(1, 'очная'),
-(2, 'очно-заочная'),
-(3, 'заочная');
-
diff --git a/media/js/optionLoader.js b/media/js/optionLoader.js
index b7bcb5c3a55cff1033caa11a483f8e8b2a9382a0..8174ccce111df666c20e00880aef757f48ec018b 100644
--- a/media/js/optionLoader.js
+++ b/media/js/optionLoader.js
@@ -85,6 +85,13 @@ class OptionLoader {
  */
 let getGroupOption = (data) => {
     let str = `РіСЂСѓРїРїР° ${data.GroupNum}`;
+    if (data.FormID === 'заочная') {
+        str = str+' Р—Рћ';
+    }
+    if (data.FormID === 'очно-заочная') {
+        str = str+' Р’Рћ';
+    }
+
     if (data.SpecName) {
         str += " - ";
         str += data.SpecName;
diff --git a/~dev_rating/application/classes/Controller/Api/V0/Student.php b/~dev_rating/application/classes/Controller/Api/V0/Student.php
index 8daa5c96b52691d06d338f0f851b1031e688dec5..019848d6fa455562c600ae4801a8accbfd22d91b 100644
--- a/~dev_rating/application/classes/Controller/Api/V0/Student.php
+++ b/~dev_rating/application/classes/Controller/Api/V0/Student.php
@@ -147,11 +147,11 @@ class Controller_Api_V0_Student extends Controller_Handler_Api {
                 break;
 
             case 'Очно-заочная':
-                $recordBookData->form = 3;
+                $recordBookData->form = 2;
                 break;
 
             case 'Заочная':
-                $recordBookData->form = 2;
+                $recordBookData->form = 3;
                 break;
 
             default:
diff --git a/~dev_rating/application/classes/Controller/Teacher/Index.php b/~dev_rating/application/classes/Controller/Teacher/Index.php
index 2f513f09b03a8eb2c7d751ad9f3198445c34fa75..5bf3647c29b64efa5e6bf97cfa3b2f6c47e31ec6 100644
--- a/~dev_rating/application/classes/Controller/Teacher/Index.php
+++ b/~dev_rating/application/classes/Controller/Teacher/Index.php
@@ -43,10 +43,10 @@ class Controller_Teacher_Index extends Controller_Environment_Teacher
                     if ($dis_group['FormID'] === 'очно-заочная') {
                         $groupDesc = $groupDesc.' Р’Рћ';
                     }
-                    if ($dis_group['FormID'] === 'зачная') {
+                    if ($dis_group['FormID'] === 'заочная') {
                         $groupDesc = $groupDesc.' Р—Рћ';
                     }
-                    $groups[$dis->ID][] = $dis_group['GroupNum'] . ' РіСЂ';
+                    $groups[$dis->ID][] = $dis_group['GroupNum'] . $groupDesc;
                 }
             }
 
diff --git a/~dev_rating/application/classes/Model/Discipline.php b/~dev_rating/application/classes/Model/Discipline.php
index 72c155974f2153b40a7d02d2a0752a667106c95a..0d61cb4fb5db1309fb370e6976b47816c7f18833 100644
--- a/~dev_rating/application/classes/Model/Discipline.php
+++ b/~dev_rating/application/classes/Model/Discipline.php
@@ -104,6 +104,14 @@ class Model_Discipline extends Model_Container
 
     /** Get groups with separately attached students. */
     public function getAllGroups() {
+        // http://gitlab.mmcs.sfedu.ru/it-lab/grade/issues/50
+        // для получения списка групп для всех дисциплин на странице преподавателя
+        // нужно сделать несколько запросов к GetGroupsForDisciplineAll
+        // за одно подключение к базе данных
+        // но тогда функция возвращает один и тот же ответ
+        // поэтому каждый раз подключаемся заново
+        $db = Kohana_Database::instance();
+        $db->disconnect();
         $sql = 'SELECT * FROM GetGroupsForDisciplineAll(:id)';
         return DB::query(Database::SELECT, $sql)->param(':id', $this->ID)->execute();
     }
diff --git a/~dev_rating/application/views/teacher/discipline/journal.twig b/~dev_rating/application/views/teacher/discipline/journal.twig
index ce536ff4b2b04e33a92144b5c4e32f1da985eeed..aa1c15425ae7831321e6116d4da37dce7791de21 100644
--- a/~dev_rating/application/views/teacher/discipline/journal.twig
+++ b/~dev_rating/application/views/teacher/discipline/journal.twig
@@ -102,6 +102,14 @@
                         {% endif %}
 
                         {{ Group.GroupNum }} РіСЂСѓРїРїР°
+
+                        {% if Group.FormID == 'очно-заочная' %}
+                            Р’Рћ
+                        {% endif %}
+
+                        {% if Group.FormID == 'заочная' %}
+                            Р—Рћ
+                        {% endif %}
                     </option>
                 {% endfor %}
             </select>
diff --git a/~dev_rating/application/views/teacher/discipline/rating/exam.twig b/~dev_rating/application/views/teacher/discipline/rating/exam.twig
index ad5808575dc048123c36d4f2636ee6d0935c3b7d..33cb4d87b9d1f60fb3512d622708fe3b084c7267 100644
--- a/~dev_rating/application/views/teacher/discipline/rating/exam.twig
+++ b/~dev_rating/application/views/teacher/discipline/rating/exam.twig
@@ -67,6 +67,14 @@
                         {% endif %}
 
                         {{ Group.GroupNum }} РіСЂСѓРїРїР°
+
+                        {% if Group.FormID == 'очно-заочная' %}
+                            Р’Рћ
+                        {% endif %}
+
+                        {% if Group.FormID == 'заочная' %}
+                            Р—Рћ
+                        {% endif %}
                     </option>
                 {% endfor %}
             </select>
diff --git a/~dev_rating/application/views/teacher/discipline/rating/rate.twig b/~dev_rating/application/views/teacher/discipline/rating/rate.twig
index 32fb0017b5574e035e54bb2586d837cb469e48c0..5085c6d9aefdcf6df7158a83e403e5cda3e4038e 100644
--- a/~dev_rating/application/views/teacher/discipline/rating/rate.twig
+++ b/~dev_rating/application/views/teacher/discipline/rating/rate.twig
@@ -59,6 +59,13 @@
                         {% endif %}
 
                         {{ Group.GroupNum }} РіСЂСѓРїРїР°
+                        {% if Group.FormID == 'очно-заочная' %}
+                            Р’Рћ
+                        {% endif %}
+
+                        {% if Group.FormID == 'заочная' %}
+                            Р—Рћ
+                        {% endif %}
                     </option>
                 {% endfor %}
             </select>