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

Помогите пожалуйста новичку

Автор Екатерина Егорова, 21 авг 2017, 09:55

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

Екатерина Егорова

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

ilyay

Объект.ИнформацияПоГруппе.Загрузить(РезультатЗапроса.Выгрузить);
Объект.ИнформацияПоГруппе.Загрузить(РезультатЗапроса.Выгрузить() );

Екатерина Егорова

Исправила. попробовала. ничего не заполняет... но спасибо

ilyay

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

Екатерина Егорова

Понимаю что глупо звучит, но, извините, как это сделать...

AsadRoman

Если регистр сведений непериодический, ошибка только в РезультатЗапроса.Выгрузить().
Если регистр сведений периодический, то
    РегистрСведений.Договора.СрезПоследних( &ДатаДокумента, УчебныйГод = &УчебныйГод и НомерГруппы = &НомерГруппы) КАК Договора
При условии что УчебныйГод и НомерГруппы это измерения и у них выбрано "ведущее" или "индексировать".
Добавлено: 21 авг 2017, 10:31


В конфигураторе ставите точку останова на строке
    Объект.ИнформацияПоГруппе.Загрузить(РезультатЗапроса.Выгрузить());
Послеостановки в табло (Отладка - Табло) набираете
  РезультатЗапроса.Выгрузить()
Должно в значении и (или) тип отобразиться "таблица значений". Нажимаете "F2" и любуетесь результатом запроса.
Если результат запроса не пустой, тогда нужно проверить что у вас в ТЧ Обучающиеся имеют тот-же тип что и в запросе. Тип в запросе буден виден в каждой строчке после нажатия "F2". Если типы одинаковые, но ТЧ "не заполняется". Добавьте команду в процедуру на клиенте
    ЭтаФорма.ОбновитьОтображениеДанных();

Екатерина Егорова

Спасибо, проверила регистр, поправила стал заполнять, но почему-то задваивает строки?

AsadRoman

Потому-что "Итоги". Лучше сгруппировать.
Добавлено: 21 авг 2017, 10:48


Регистр периодический?

Екатерина Егорова

нет. а как переписать запрос без итогов но с сортировкой? Спасибо что помогаете!!!
Добавлено: 21 авг 2017, 11:02


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

AsadRoman


Как-то так:

ВЫБРАТЬ
   Договора.Обучающиеся КАК Обучающиеся
ИЗ
   РегистрСведений.Договора КАК Договора
    левое соединение справочник.обучающиеся как СправочникОбучающиеся
    по Договора.Обучающиеся = СправочникОбучающиеся.Ссылка
ГДЕ
   Договора.УчебныйГод = &УчебныйГод
   И Договора.НомерГруппы = &НомерГруппы
упорядочить по
   СправочникОбучающиеся.Наименование

Наименование реквизитов может отличаться.
Добавлено: 21 авг 2017, 11:07


Цитата: Екатерина Егорова от 21 авг 2017, 10:51
нет. а как переписать запрос без итогов но с сортировкой? Спасибо что помогаете!!!
Добавлено: 21 авг 2017, 11:02


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


Сортировка будет не по алфавиту.

Теги:

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

Рейтинг@Mail.ru

Поиск