Имя: Пароль:
1C
1С v8
Как получить реквизиты и строки табличной части из "другого" документа в запросе
0 FrostBite101
 
12.04.20
11:08
Документ исправление оценок,  в нем есть реквизит ДОКУМЕНТ ( Выставление оценок) надо при движении считать реквизиты и строки табличной части из документы Выставление оценок, и соответственно заполнить строки в регистре ( Студент, группа) . Но как? Я попытался сделать, но в цикл даже не входит...


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

        
    Движение = Движения.Оценки.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Студент = ВыборкаДетальныеЗаписи.Студент;
    Движение.Подгруппа =ВыборкаДетальныеЗаписи.Подгруппа;
    Движение.Оценка = ВыборкаДетальныеЗаписи.СтараяОценка;
    
    
    Движение = Движения.Оценки.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
    Движение.Период = Дата;
    Движение.Студент = ВыборкаДетальныеЗаписи.Студент;
    Движение.Подгруппа =ВыборкаДетальныеЗаписи.Подгруппа;
    Движение.Оценка = НоваяОценка;
    

    
    
    

        
        
        
    КонецЦикла;
1 FrostBite101
 
12.04.20
11:12
{Документ.ИсправлениеОценки.МодульОбъекта(33)}: Поле объекта не обнаружено (Студент)
    Движение.Студент = ВыборкаДетальныеЗаписи.Студент;
2 ДенисЧ
 
12.04.20
11:13
А если
Движение.Студент = ВыборкаДетальныеЗаписи.ФИО ?
3 RomanYS
 
12.04.20
11:14
(1) В запросе у тебя "ФИО", а не "студент".
В (0)
ПосещениеСтуденты.ФИО = &СтудентСсылка

Обычно в ФИО строку пишут, а не ссылку
4 H A D G E H O G s
 
12.04.20
11:19
Весело у вас там, если вы на остаточном регистре ведёте оценки.
5 vicof
 
12.04.20
11:21
Следующая ошибка Поле объекта не обнаружено (СтараяОценка)
6 H A D G E H O G s
 
12.04.20
11:23
сложна...
7 FrostBite101
 
12.04.20
11:27
Процедура ОбработкаПроведения(Отказ, Режим)
    Движения.Оценки.Записывать = Истина;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Посещение.Ссылка,
        |    ПосещениеСтуденты.Студент,
        |    ПосещениеСтуденты.Оценка,
        |    Посещение.Подгруппа
        |ИЗ
        |    Документ.Посещение.Студенты КАК ПосещениеСтуденты
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Посещение КАК Посещение
        |        ПО ПосещениеСтуденты.Ссылка = Посещение.Ссылка
        |ГДЕ
        |    Посещение.Ссылка = &ДокументСсылка
        |    И ПосещениеСтуденты.Студент = &СтудентСсылка";
    
    Запрос.УстановитьПараметр("ДокументСсылка", Документ);    //реквизит документ
    Запрос.УстановитьПараметр("СтудентСсылка", Студент);      // реквизит студент
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

        
    Движение = Движения.Оценки.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Студент = ВыборкаДетальныеЗаписи.Студет;
    Движение.Подгруппа =ВыборкаДетальныеЗаписи.Подгруппа;
    Движение.Оценка = ВыборкаДетальныеЗаписи.СтараяОценка;
    
    
    Движение = Движения.Оценки.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
    Движение.Период = Дата;
    Движение.Студент = ВыборкаДетальныеЗаписи.Студент;
    Движение.Подгруппа =ВыборкаДетальныеЗаписи.Подгруппа;
    Движение.Оценка = НоваяОценка;
        
    КонецЦикла;
    
Доходит до Движение.Студент = ВыборкаДетальныеЗаписи.Студет; и вылетает из цикла.
8 FrostBite101
 
12.04.20
11:31
Все поправил, но не работает...

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

        
    Движение = Движения.Оценки.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Студент = ВыборкаДетальныеЗаписи.Студент;
    Движение.Подгруппа =ВыборкаДетальныеЗаписи.Подгруппа;
    Движение.Оценка = ВыборкаДетальныеЗаписи.СтараяОценка;
    
    
    Движение = Движения.Оценки.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
    Движение.Период = Дата;
    Движение.Студент = ВыборкаДетальныеЗаписи.Студент;
    Движение.Подгруппа =ВыборкаДетальныеЗаписи.Подгруппа;
    Движение.Оценка = НоваяОценка;
    
    
    КонецЦикла;
    


    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
9 FrostBite101
 
12.04.20
11:40
Исправил, все работает, может кому понадобиться... А ведутся оценки так, потому что каждый преподователь сам выбирает систему оценок, 5 бальная, 100 бальная , 100 бальная + посещение, и т.д, кароче, мы глупые студенты, что можем то и пишем))))
10 FrostBite101
 
12.04.20
11:40
Процедура ОбработкаПроведения(Отказ, Режим)
    Движения.Оценки.Записывать = Истина;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Посещение.Ссылка,
        |    ПосещениеСтуденты.Студент КАК Студент,
        |    ПосещениеСтуденты.Оценка КАК СтараяОценка,
        |    Посещение.Подгруппа КАК Подгруппа
        |ИЗ
        |    Документ.Посещение.Студенты КАК ПосещениеСтуденты
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Посещение КАК Посещение
        |        ПО ПосещениеСтуденты.Ссылка = Посещение.Ссылка
        |ГДЕ
        |    Посещение.Ссылка = &ДокументСсылка
        |    И Студент = &СтудентСсылка";
    
    Запрос.УстановитьПараметр("ДокументСсылка", Документ);    //реквизит документ
    Запрос.УстановитьПараметр("СтудентСсылка", Студент);      // реквизит студент
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

        
    Движение = Движения.Оценки.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Студент = ВыборкаДетальныеЗаписи.Студент;
    Движение.Подгруппа =ВыборкаДетальныеЗаписи.Подгруппа;
    Движение.Оценка = ВыборкаДетальныеЗаписи.СтараяОценка;
    
    
    Движение = Движения.Оценки.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
    Движение.Период = Дата;
    Движение.Студент = ВыборкаДетальныеЗаписи.Студент;
    Движение.Подгруппа =ВыборкаДетальныеЗаписи.Подгруппа;
    Движение.Оценка = НоваяОценка;
    

    
    
    

        
        
        
    КонецЦикла;
    
    
        

    

    
    

    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Независимо от того, куда вы едете — это в гору и против ветра!