Доброго времени суток,есть задача изменять и добавлять в таблице значений данные
пробовал реализовать так

```1c
    Перем Заочное;
    Перем Очное;

    &НаКлиенте
    Процедура ОчноеОтделениПриИзменении(Элемент)
    ОчноеОтделениПриИзмененииНаСервере();
    КонецПроцедуры

    &НаСервере
    Процедура ОчноеОтделениПриИзмененииНаСервере()

    Если ОчноеОтделени Тогда
    Очное = Новый ТаблицаЗначений;
    Очное.Колонки.Добавить("КодСтудента", Новый ОписаниеТипов("Строка"));
    Очное.Колонки.Добавить("РазмербазовойСтипендии", Новый ОписаниеТипов("Число"));
    Очное.Колонки.Добавить("Математика", Новый ОписаниеТипов("Число"));
    Очное.Колонки.Добавить("Информатика", Новый ОписаниеТипов("Число"));
    Очное.Колонки.Добавить("Культурология", Новый ОписаниеТипов("Число"));
    Очное.Колонки.Добавить("ПовышеннаяСтипендия20", Новый ОписаниеТипов("Число"));
    Очное.Колонки.Добавить("ИтогКВыдаче", Новый ОписаниеТипов("Число"));

    Элементы.СписокГрупп.Заголовок = "Список студентов очного отделения";
    ЗаочноеОтделени = Ложь;
    Для Счетчик = 1 По 144 Цикл
    Стр = Реквизит1.Добавить();
    Если Счетчик<10 Тогда
    НоваяСтрока = Очное.Добавить();
    ГенераторСлучайныхЧисел = Новый ГенераторСлучайныхЧисел(ТекущаяУниверсальнаяДатаВМиллисекундах());
    СлучайноеЧислоМ = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    СлучайноеЧислоИ = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    СлучайноеЧислоК = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    НоваяСтрока.КодСтудента = "Эип00"+"+Счетчик;
    СрОц = (СлучайноеЧислоМ+СлучайноеЧислоИ+СлучайноеЧислоК)/3;
    если СрОц >=4 тогда
    НоваяСтрока.РазмерБазовойСтипендии = 3000;
    НоваяСтрока.ПовышеннаяСтипендия20 = 3600;
    НоваяСтрока.ИтогКВыдаче = 3600;
    Иначе
    НоваяСтрока.РазмерБазовойСтипендии = 3000;
    НоваяСтрока.ПовышеннаяСтипендия20 = 0;
    НоваяСтрока.ИтогКВыдаче = 3000;
    КонецЕсли;

    НоваяСтрока.Математика = СлучайноеЧислоМ;
    НоваяСтрока.Информатика = СлучайноеЧислоИ;
    НоваяСтрока.Культурология = СлучайноеЧислоК;

    ЗначениеВДанныеФормы(Очное, Реквизит1);

    ИначеЕсли Счетчик<100 Тогда
    НоваяСтрока = Очное.Добавить();
    ГенераторСлучайныхЧисел = Новый ГенераторСлучайныхЧисел(ТекущаяУниверсальнаяДатаВМиллисекундах());
    СлучайноеЧислоМ = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    СлучайноеЧислоИ = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    СлучайноеЧислоК = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    НоваяСтрока.КодСтудента = "Эип0"+"+Счетчик;
    СрОц = (СлучайноеЧислоМ+СлучайноеЧислоИ+СлучайноеЧислоК)/3;
    если СрОц >=4 тогда
    НоваяСтрока.РазмерБазовойСтипендии = 3000;
    НоваяСтрока.ПовышеннаяСтипендия20 = 3600;
    НоваяСтрока.ИтогКВыдаче = 3600;
    Иначе
    НоваяСтрока.РазмерБазовойСтипендии = 3000;
    НоваяСтрока.ПовышеннаяСтипендия20 = 0;
    НоваяСтрока.ИтогКВыдаче = 3000;
    КонецЕсли;

    НоваяСтрока.Математика = СлучайноеЧислоМ;
    НоваяСтрока.Информатика = СлучайноеЧислоИ;
    НоваяСтрока.Культурология = СлучайноеЧислоК;

    ЗначениеВДанныеФормы(Очное, Реквизит1);

    ИначеЕсли Счетчик>=100 Тогда

    НоваяСтрока = Очное.Добавить();
    ГенераторСлучайныхЧисел = Новый ГенераторСлучайныхЧисел(ТекущаяУниверсальнаяДатаВМиллисекундах());
    СлучайноеЧислоМ = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    СлучайноеЧислоИ = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    СлучайноеЧислоК = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    НоваяСтрока.КодСтудента = "Эип"+"+Счетчик;
    СрОц = (СлучайноеЧислоМ+СлучайноеЧислоИ+СлучайноеЧислоК)/3;
    если СрОц >=4 тогда
    НоваяСтрока.РазмерБазовойСтипендии = 3000;
    НоваяСтрока.ПовышеннаяСтипендия20 = 3600;
    НоваяСтрока.ИтогКВыдаче = 3600;
    Иначе
    НоваяСтрока.РазмерБазовойСтипендии = 3000;
    НоваяСтрока.ПовышеннаяСтипендия20 = 0;
    НоваяСтрока.ИтогКВыдаче = 3000;
    КонецЕсли;

    НоваяСтрока.Математика = СлучайноеЧислоМ;
    НоваяСтрока.Информатика = СлучайноеЧислоИ;
    НоваяСтрока.Культурология = СлучайноеЧислоК;

    ЗначениеВДанныеФормы(Очное, Реквизит1);

    КонецЕсли;

    КонецЦикла;
    Иначе
    Элементы.СписокГрупп.Заголовок = "Список Групп"
    КонецЕсли

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

    &НаКлиенте
    Процедура ЗаочноеОтделениПриИзменении(Элемент)
    ЗаочноеОтделениПриИзмененииНаСервере();
    КонецПроцедуры

    &НаСервере
    Функция ЗаочноеОтделениПриИзмененииНаСервере()

    Если ЗаочноеОтделени Тогда
    Очное = Новый ТаблицаЗначений;
    Очное.Колонки.Добавить("КодСтудента", Новый ОписаниеТипов("Строка"));
    Очное.Колонки.Добавить("РазмербазовойСтипендии", Новый ОписаниеТипов("Число"));
    Очное.Колонки.Добавить("Математика", Новый ОписаниеТипов("Число"));
    Очное.Колонки.Добавить("Информатика", Новый ОписаниеТипов("Число"));
    Очное.Колонки.Добавить("Культурология", Новый ОписаниеТипов("Число"));
    Очное.Колонки.Добавить("ПовышеннаяСтипендия20", Новый ОписаниеТипов("Число"));
    Очное.Колонки.Добавить("ИтогКВыдаче", Новый ОписаниеТипов("Число"));

    Элементы.СписокГрупп.Заголовок = "Список студентов заочного отделения";
    ОчноеОтделени = Ложь;
    Для Счетчик = 1 По 144 Цикл
    Стр = Реквизит1.Добавить();
    Если Счетчик<10 Тогда

    НоваяСтрока = Очное.Добавить();
    ГенераторСлучайныхЧисел = Новый ГенераторСлучайныхЧисел(ТекущаяУниверсальнаяДатаВМиллисекундах());
    СлучайноеЧислоМ = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    СлучайноеЧислоИ = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    СлучайноеЧислоК = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    НоваяСтрока.КодСтудента = "Эип00"+"+Счетчик;
    СрОц = (СлучайноеЧислоМ+СлучайноеЧислоИ+СлучайноеЧислоК)/3;
    если СрОц >=4 тогда
    НоваяСтрока.РазмерБазовойСтипендии = 3000;
    НоваяСтрока.ПовышеннаяСтипендия20 = 3600;
    НоваяСтрока.ИтогКВыдаче = 3600;
    Иначе
    НоваяСтрока.РазмерБазовойСтипендии = 3000;
    НоваяСтрока.ПовышеннаяСтипендия20 = 0;
    НоваяСтрока.ИтогКВыдаче = 3000;
    КонецЕсли;

    НоваяСтрока.Математика = СлучайноеЧислоМ;
    НоваяСтрока.Информатика = СлучайноеЧислоИ;
    НоваяСтрока.Культурология = СлучайноеЧислоК;

    ЗначениеВДанныеФормы(Очное, Реквизит1);

    ИначеЕсли Счетчик<100 Тогда
    НоваяСтрока = Очное.Добавить();
    ГенераторСлучайныхЧисел = Новый ГенераторСлучайныхЧисел(ТекущаяУниверсальнаяДатаВМиллисекундах());
    СлучайноеЧислоМ = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    СлучайноеЧислоИ = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    СлучайноеЧислоК = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    НоваяСтрока.КодСтудента = "Эип0"+"+Счетчик;
    СрОц = (СлучайноеЧислоМ+СлучайноеЧислоИ+СлучайноеЧислоК)/3;
    если СрОц >=4 тогда
    НоваяСтрока.РазмерБазовойСтипендии = 3000;
    НоваяСтрока.ПовышеннаяСтипендия20 = 3600;
    НоваяСтрока.ИтогКВыдаче = 3600;
    Иначе
    НоваяСтрока.РазмерБазовойСтипендии = 3000;
    НоваяСтрока.ПовышеннаяСтипендия20 = 0;
    НоваяСтрока.ИтогКВыдаче = 3000;
    КонецЕсли;

    НоваяСтрока.Математика = СлучайноеЧислоМ;
    НоваяСтрока.Информатика = СлучайноеЧислоИ;
    НоваяСтрока.Культурология = СлучайноеЧислоК;

    ЗначениеВДанныеФормы(Очное, Реквизит1);

    ИначеЕсли Счетчик>=100 Тогда

    НоваяСтрока = Очное.Добавить();
    ГенераторСлучайныхЧисел = Новый ГенераторСлучайныхЧисел(ТекущаяУниверсальнаяДатаВМиллисекундах());
    СлучайноеЧислоМ = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    СлучайноеЧислоИ = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    СлучайноеЧислоК = ГенераторСлучайныхЧисел.СлучайноеЧисло(1, 5);
    НоваяСтрока.КодСтудента = "Эип"+"+Счетчик;
    СрОц = (СлучайноеЧислоМ+СлучайноеЧислоИ+СлучайноеЧислоК)/3;
    если СрОц >=4 тогда
    НоваяСтрока.РазмерБазовойСтипендии = 3000;
    НоваяСтрока.ПовышеннаяСтипендия20 = 3600;
    НоваяСтрока.ИтогКВыдаче = 3600;
    Иначе
    НоваяСтрока.РазмерБазовойСтипендии = 3000;
    НоваяСтрока.ПовышеннаяСтипендия20 = 0;
    НоваяСтрока.ИтогКВыдаче = 3000;
    КонецЕсли;

    НоваяСтрока.Математика = СлучайноеЧислоМ;
    НоваяСтрока.Информатика = СлучайноеЧислоИ;
    НоваяСтрока.Культурология = СлучайноеЧислоК;

    ЗначениеВДанныеФормы(Очное, Реквизит1);

    КонецЕсли;

    КонецЦикла;
    Иначе
    Элементы.СписокГрупп.Заголовок = "Список Групп"
    КонецЕсли;
    если КодСтудента = " Тогда
    Элементы.СписокГрупп.Заголовок = "поле крод студента пустой";
    Иначе
    ДобавитьНаСервере(Очное)
    КонецЕсли;
    КонецФункции

    &НаКлиенте

    Процедура ДобавитьНаСервере(Очное)
    ДобавитьНаСервере()

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

    &НаСервере
    Процедура ДобавитьНаСервере()
    НоваяСтрока = Очное.Добавить();
    НоваяСтрока.КодСтудента = "Эип"+"+КодСтудента;
    СрОц = (Культурология+Информатика+Математика)/3;
    если СрОц >=4 тогда
    НоваяСтрока.РазмерБазовойСтипендии = 3000;
    НоваяСтрока.ПовышеннаяСтипендия20 = 3600;
    НоваяСтрока.ИтогКВыдаче = 3600;
    Иначе
    НоваяСтрока.РазмерБазовойСтипендии = 3000;
    НоваяСтрока.ПовышеннаяСтипендия20 = 0;
    НоваяСтрока.ИтогКВыдаче = 3000;
    КонецЕсли;

    НоваяСтрока.Математика = Математика;
    НоваяСтрока.Информатика = Информатика;
    НоваяСтрока.Культурология = Культурология;

    ЗначениеВДанныеФормы(Очное, Реквизит1);

    КонецПроцедуры
```
---
ДанныеФормыКоллекция типа ТЗ вынесена на форму?
Тут сервер вызывать вообще не требуется. Все данные есть на клиенте.

```1c
    &НаКлиенте
    Процедура ИмяТЗПриАктивизацииСтроки(Элемент)
    ТекущиеДанные = Элемент.ТекущиеДанные;
    Если ТекущиеДанные = Неопределено Тогда
    Возврат;
    КонецЕсли;
    КодСтудента = ТекущиеДанные.КодСтудента;
    РазмербазовойСтипендии = ТекущиеДанные.РазмербазовойСтипендии;
    Математика = ТекущиеДанные.Математика;
    // и т.д.
    КонецПроцедуры
```
---
в данном случае, значения серверных переменных между серверными вызовами не сохраняются. Очищаются/уничтожаются сразу при возврате с сервера.
Делайте ТЗ не переменными, а реквизитами формы.
---
решил таким способом

Очное = РеквизитФормыВЗначение("Реквизит1",Тип("ТаблицаЗначений"));
....

ЗначениеВРеквизитФормы(Очное, "Реквизит1");

но возник следующий вопрос как мне получить значение текуще выделенной строки?

т.е. я выбираю строки а уменя заполняется реквезиты на поле код студента и и.д.

выбираю другую строку данные меняются.

Спасибо!
---
ДанныеФормыКоллекция типа ТЗ вынесена на форму?
Тут сервер вызывать вообще не требуется. Все данные есть на клиенте.

```1c
    &НаКлиенте
    Процедура ИмяТЗПриАктивизацииСтроки(Элемент)
    ТекущиеДанные = Элемент.ТекущиеДанные;
    Если ТекущиеДанные = Неопределено Тогда
    Возврат;
    КонецЕсли;
    КодСтудента = ТекущиеДанные.КодСтудента;
    РазмербазовойСтипендии = ТекущиеДанные.РазмербазовойСтипендии;
    Математика = ТекущиеДанные.Математика;
    // и т.д.
    КонецПроцедуры
```