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

Помощь в коде

Автор Резеда, 24 ноя 2019, 18:24

0 Пользователей и 1 гость просматривают эту тему.

LexaK

команда:
Объект.ТабЧасть.Загрузить(Выборка);
по любому стирает все что было до этого в вашей ТЧ
попробуйте такой код

...
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(Объект.ТабЧасть.Добавить(),Выборка);
КонецЦикла;
...


если помогло нажмите: Спасибо!

Пересвет

LexaK., большое спасибо, что уделяете мне внимание! Работает такой код, но форма ведёт себя очень странно))) . Взгляните видос:
https://cloud.mail.ru/public/5Pey/2zojtBLT3

LexaK

прикольно получилось, необходимо четко представлять что вы хотите как бы ваша форма работала?
заполнение строки и заполнение ТЧ это две большие разницы, да и там возможны кучи вариантов, все в ваших руках.
если помогло нажмите: Спасибо!

Пересвет

Хотелось бы видеть обычное построчное заполнение данного документа. Как я себе представляю это:
1.Передаю на сервер два параметра: текущую строку и данные из активной ячейки строки для поиска в регистре сведений.
2.На сервере заполняем всю строку полностью согласно параметра "данные из активной ячейки" (фамилия препода).
3.Возвращаем строку на форму (но это наверное не правильно).

Yotram

Попробуйте так

&НаСервере
Функция ТабЧастьПреподавательПриИзмененииНаСервере(ДанныеФормы)
   
    Преподаватель = ДанныеФормы;
 
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ПреподавателиКурса.Преподаватель,
        |    ПреподавателиКурса.ВидЗанятия,
        |    ПреподавателиКурса.КоличествоЧасов,
        |    ПреподавателиКурса.Дисциплина
        |ИЗ
        |    РегистрСведений.ПреподавателиКурса КАК ПреподавателиКурса
        |ГДЕ
        |    ПреподавателиКурса.Преподаватель = &Преподаватель";
   
    Запрос.УстановитьПараметр("Преподаватель", Преподаватель);
   
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();

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

Возврат Неопределено;

КонецФункции

&НаКлиенте
Процедура ТабЧастьПреподавательПриИзменении(Элемент)
           
    ДанныеФормы = Элемент.ТекстРедактирования;
         
    ПолученныеДанные = ТабЧастьПреподавательПриИзмененииНаСервере(ДанныеФормы);

Если ПолученныеДанные <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(Элемент.ТекущиеДанные, ПолученныеДанные);
КонецЕсли;

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

Пересвет

Почему-то не дружит с ТекущимиДанными. Вываливается с ошибкой

Yotram

Точно. Не обратил внимание. Там же в элементе, скорее всего, поле формы.

//тогда вместо
ЗаполнитьЗначенияСвойств(Элемент.ТекущиеДанные, ПолученныеДанные);
//пишем
ЗаполнитьЗначенияСвойств(Элементы.ТабЧасть.ТекущиеДанные, ПолученныеДанные);

Пересвет

Да, заработало! Два вопроса:
1.На сколько это оптимальный код?
2. Почему была применена конструкция с условием?

Если ПолученныеДанные <> Неопределено Тогда
       // ...
    КонецЕсли;

Теги: код 8.3 помощь 

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

Рейтинг@Mail.ru

Поиск