Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 09:44

Добавление и изменение данных в таблице значений

Автор Серёжа Сухинин, 15 апр 2018, 06:40

0 Пользователей и 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);



КонецЕсли;

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

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

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

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

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

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




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

alexandr_ll

Можно создать в обработке табличную часть с нужными реквизитами и вывести ее на форму.
Тогда на сервере она будет доступна через Объект.<Имя табличной части>

Серёжа Сухинин

Цитата: alexandr_ll от 15 апр 2018, 10:05
Можно создать в обработке табличную часть с нужными реквизитами и вывести ее на форму.
Тогда на сервере она будет доступна через Объект.<Имя табличной части>
решил таким способом

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

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



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

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

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

Спасибо!

AIFrame

Цитата: Серёжа Сухинин от 15 апр 2018, 12:08как мне получить значение текуще выделенной строки?
По событию ПриАктивизацииЯчейки\Строки.
Или поищи в СП ТекущиеДанные, т.к. я не вникал, что и когда ты хочешь получать.

Теги:  8.3 ТЗ 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск