Здравствуйте. Я новичок в 1с. Не могу понять в чем ошибка.
Имеется документ "ПроведениеЗанятий" с реквизитом "УчебнаяГруппа" и табличной частью "Студенты" с реквизитом в нем "ФИО", а так же регистр сведений "СоставУчебныхГрупп" с измерениями "Студент" и "УчебнаяГруппа".
Нужно чтобы при выборе из списка учебной группы реквизита "УчебнаяГруппа" документа "ПроведениеЗанятий"
в табличной части "Студенты" заполнялся автоматически реквизит "ФИО".
В форме документа "ПроведениеЗанятий" сделал реквизиту "УчебнаяГруппа" обработку выбора при изменении.
Выдает ошибку при выборе учебной группы:
Измерение не найдено "УчебнаяГруппа"
{Документ.ПроведениеЗанятий.Форма.ФормаЭлемента.Форма(28)}: ЗначениеРесурсаУчебнаяГруппа = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "УчебнаяГруппа");
{Документ.ПроведениеЗанятий.Форма.ФормаЭлемента.Форма(4)}: СервернаяЧасть();
по причине:
Измерение не найдено "УчебнаяГруппа"
Имеется документ "ПроведениеЗанятий" с реквизитом "УчебнаяГруппа" и табличной частью "Студенты" с реквизитом в нем "ФИО", а так же регистр сведений "СоставУчебныхГрупп" с измерениями "Студент" и "УчебнаяГруппа".
Нужно чтобы при выборе из списка учебной группы реквизита "УчебнаяГруппа" документа "ПроведениеЗанятий"
в табличной части "Студенты" заполнялся автоматически реквизит "ФИО".
В форме документа "ПроведениеЗанятий" сделал реквизиту "УчебнаяГруппа" обработку выбора при изменении.
&НаКлиенте
Процедура УчебнаяГруппаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Объект.Студенты.Очистить();
СервернаяЧасть();
КонецПроцедуры
&НаСервере
Процедура СервернаяЧасть()
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| СоставУчебныхГрупп.Студент КАК Студент,
| СоставУчебныхГрупп.УчебнаяГруппа КАК Группа
|ИЗ
| РегистрСведений.СоставУчебныхГрупп КАК СоставУчебныхГрупп
|
|СГРУППИРОВАТЬ ПО
| СоставУчебныхГрупп.УчебнаяГруппа,
| СоставУчебныхГрупп.Студент
|ИТОГИ ПО
| Студент,
| УчебнаяГруппа";
Выборка = Запрос.Выполнить().Выбрать();
ЗначениеУчебнаяГруппа = Объект.УчебнаяГруппа.Ссылка;
ЗначениеРесурсаУчебнаяГруппа = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "УчебнаяГруппа");
Сообщить("ЦиклНеРаботает");
Пока ЗначениеРесурсаУчебнаяГруппа = ЗначениеУчебнаяГруппа Цикл
Сообщить("ЦиклРаботает");
Выборка = Выборка.Выбрать(Объект.Студент);
КонецЦикла;
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.Студенты.Добавить();
НоваяСтрока = Выборка;
КонецЦикла;
КонецПроцедуры
ПоказатьВыдает ошибку при выборе учебной группы:
Измерение не найдено "УчебнаяГруппа"
{Документ.ПроведениеЗанятий.Форма.ФормаЭлемента.Форма(28)}: ЗначениеРесурсаУчебнаяГруппа = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "УчебнаяГруппа");
{Документ.ПроведениеЗанятий.Форма.ФормаЭлемента.Форма(4)}: СервернаяЧасть();
по причине:
Измерение не найдено "УчебнаяГруппа"
Прикрепленные файлы:
![](/upload/forum/upload/6b4/6b4237665b55fbaef8b0d75a14272111.png)
![](/upload/forum/upload/325/32509b18cf6032ef7c74eb78256bd960.png)
![](/upload/forum/upload/616/616e9a89b0666488f63c0a4754f8c25c.png)
![](/upload/forum/upload/256/256133d8a6a10cf317654ae5cbc7c930.png)
![](/upload/forum/upload/f62/f62384c62cf4a15fdd26514784917e7b.png)
По теме из базы знаний
- Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы
- Интеграция 1С со сканерами отпечатка пальца ZKTime (обычные формы)
- Не спеша, эффективно и правильно – путь разработки. Часть 2. Теория
- Распространенные ошибки разработчиков, приводящие к проблемам производительности
- Пример разработки инструмента загрузки данных SAP в 1С
Найденные решения
(1)
проще сделать таким образом
так не будет лишних циклов и сразу получите нужные данные.
а ошибка по идее в этой строке
вместо УчебнаяГруппа укажите "Группа" просто
&НаСервере
Процедура СервернаяЧасть()
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| СоставУчебныхГрупп.Студент КАК Студент,
| СоставУчебныхГрупп.УчебнаяГруппа КАК Группа
|ИЗ
| РегистрСведений.СоставУчебныхГрупп КАК СоставУчебныхГрупп
|
|СГРУППИРОВАТЬ ПО
| СоставУчебныхГрупп.УчебнаяГруппа,
| СоставУчебныхГрупп.Студент
|ИТОГИ ПО
| Студент,
| УчебнаяГруппа";
Выборка = Запрос.Выполнить().Выбрать();
ЗначениеУчебнаяГруппа = Объект.УчебнаяГруппа.Ссылка;
ЗначениеРесурсаУчебнаяГруппа = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "УчебнаяГруппа");
Сообщить("ЦиклНеРаботает");
Пока ЗначениеРесурсаУчебнаяГруппа = ЗначениеУчебнаяГруппа Цикл
Сообщить("ЦиклРаботает");
Выборка = Выборка.Выбрать(Объект.Студент);
КонецЦикла;
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.Студенты.Добавить();
НоваяСтрока = Выборка;
КонецЦикла;
КонецПроцедуры
ПоказатьПроцедура СервернаяЧасть()
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| СоставУчебныхГрупп.Студент КАК Студент,
| СоставУчебныхГрупп.УчебнаяГруппа КАК Группа
|ИЗ
| РегистрСведений.СоставУчебныхГрупп КАК СоставУчебныхГрупп
|
|СГРУППИРОВАТЬ ПО
| СоставУчебныхГрупп.УчебнаяГруппа,
| СоставУчебныхГрупп.Студент
|ИТОГИ ПО
| Студент,
| УчебнаяГруппа";
Выборка = Запрос.Выполнить().Выбрать();
ЗначениеУчебнаяГруппа = Объект.УчебнаяГруппа.Ссылка;
ЗначениеРесурсаУчебнаяГруппа = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "УчебнаяГруппа");
Сообщить("ЦиклНеРаботает");
Пока ЗначениеРесурсаУчебнаяГруппа = ЗначениеУчебнаяГруппа Цикл
Сообщить("ЦиклРаботает");
Выборка = Выборка.Выбрать(Объект.Студент);
КонецЦикла;
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.Студенты.Добавить();
НоваяСтрока = Выборка;
КонецЦикла;
КонецПроцедуры
проще сделать таким образом
&НаСервере
Процедура СервернаяЧасть()
Запрос = Новый Запрос();
Запрос.УстановитьПараметры("УчебнаяГруппа", Объект.УчебнаяГруппа);
Запрос.Текст =
"ВЫБРАТЬ
| СоставУчебныхГрупп.Студент КАК Студент,
| СоставУчебныхГрупп.УчебнаяГруппа КАК Группа
|ИЗ
| РегистрСведений.СоставУчебныхГрупп КАК СоставУчебныхГрупп
|
|ГДЕ РегистрСведений.СоставУчебныхГрупп.УчебнаяГруппа = &УчебнаяГруппа";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Сообщить("Нет данных по группе");
Возврат;
КонецЕсли;
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.Студенты.Добавить();
НоваяСтрока = Выборка.Студент;
КонецЦикла;
КонецПроцедуры
Показатьтак не будет лишних циклов и сразу получите нужные данные.
а ошибка по идее в этой строке
ЗначениеРесурсаУчебнаяГруппа = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "УчебнаяГруппа");
вместо УчебнаяГруппа укажите "Группа" просто
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
проще сделать таким образом
так не будет лишних циклов и сразу получите нужные данные.
а ошибка по идее в этой строке
вместо УчебнаяГруппа укажите "Группа" просто
&НаСервере
Процедура СервернаяЧасть()
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| СоставУчебныхГрупп.Студент КАК Студент,
| СоставУчебныхГрупп.УчебнаяГруппа КАК Группа
|ИЗ
| РегистрСведений.СоставУчебныхГрупп КАК СоставУчебныхГрупп
|
|СГРУППИРОВАТЬ ПО
| СоставУчебныхГрупп.УчебнаяГруппа,
| СоставУчебныхГрупп.Студент
|ИТОГИ ПО
| Студент,
| УчебнаяГруппа";
Выборка = Запрос.Выполнить().Выбрать();
ЗначениеУчебнаяГруппа = Объект.УчебнаяГруппа.Ссылка;
ЗначениеРесурсаУчебнаяГруппа = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "УчебнаяГруппа");
Сообщить("ЦиклНеРаботает");
Пока ЗначениеРесурсаУчебнаяГруппа = ЗначениеУчебнаяГруппа Цикл
Сообщить("ЦиклРаботает");
Выборка = Выборка.Выбрать(Объект.Студент);
КонецЦикла;
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.Студенты.Добавить();
НоваяСтрока = Выборка;
КонецЦикла;
КонецПроцедуры
ПоказатьПроцедура СервернаяЧасть()
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| СоставУчебныхГрупп.Студент КАК Студент,
| СоставУчебныхГрупп.УчебнаяГруппа КАК Группа
|ИЗ
| РегистрСведений.СоставУчебныхГрупп КАК СоставУчебныхГрупп
|
|СГРУППИРОВАТЬ ПО
| СоставУчебныхГрупп.УчебнаяГруппа,
| СоставУчебныхГрупп.Студент
|ИТОГИ ПО
| Студент,
| УчебнаяГруппа";
Выборка = Запрос.Выполнить().Выбрать();
ЗначениеУчебнаяГруппа = Объект.УчебнаяГруппа.Ссылка;
ЗначениеРесурсаУчебнаяГруппа = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "УчебнаяГруппа");
Сообщить("ЦиклНеРаботает");
Пока ЗначениеРесурсаУчебнаяГруппа = ЗначениеУчебнаяГруппа Цикл
Сообщить("ЦиклРаботает");
Выборка = Выборка.Выбрать(Объект.Студент);
КонецЦикла;
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.Студенты.Добавить();
НоваяСтрока = Выборка;
КонецЦикла;
КонецПроцедуры
проще сделать таким образом
&НаСервере
Процедура СервернаяЧасть()
Запрос = Новый Запрос();
Запрос.УстановитьПараметры("УчебнаяГруппа", Объект.УчебнаяГруппа);
Запрос.Текст =
"ВЫБРАТЬ
| СоставУчебныхГрупп.Студент КАК Студент,
| СоставУчебныхГрупп.УчебнаяГруппа КАК Группа
|ИЗ
| РегистрСведений.СоставУчебныхГрупп КАК СоставУчебныхГрупп
|
|ГДЕ РегистрСведений.СоставУчебныхГрупп.УчебнаяГруппа = &УчебнаяГруппа";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Сообщить("Нет данных по группе");
Возврат;
КонецЕсли;
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.Студенты.Добавить();
НоваяСтрока = Выборка.Студент;
КонецЦикла;
КонецПроцедуры
Показатьтак не будет лишних циклов и сразу получите нужные данные.
а ошибка по идее в этой строке
ЗначениеРесурсаУчебнаяГруппа = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "УчебнаяГруппа");
вместо УчебнаяГруппа укажите "Группа" просто
(1)
Приведите к одному наименованию (выделенные слова).
Запрос.Текст =
"ВЫБРАТЬ
| СоставУчебныхГрупп.Студент КАК Студент,
| СоставУчебныхГрупп.УчебнаяГруппа КАК Группа
|ИЗ
| РегистрСведений.СоставУчебныхГрупп КАК СоставУчебныхГрупп
|
|СГРУППИРОВАТЬ ПО
| СоставУчебныхГрупп.УчебнаяГруппа,
| СоставУчебныхГрупп.Студент
|ИТОГИ ПО
| Студент,
| УчебнаяГруппа";
Выборка = Запрос.Выполнить().Выбрать();
ЗначениеУчебнаяГруппа = Объект.УчебнаяГруппа.Ссылка;
ЗначениеРесурсаУчебнаяГруппа = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "УчебнаяГруппа");
Показать"ВЫБРАТЬ
| СоставУчебныхГрупп.Студент КАК Студент,
| СоставУчебныхГрупп.УчебнаяГруппа КАК Группа
|ИЗ
| РегистрСведений.СоставУчебныхГрупп КАК СоставУчебныхГрупп
|
|СГРУППИРОВАТЬ ПО
| СоставУчебныхГрупп.УчебнаяГруппа,
| СоставУчебныхГрупп.Студент
|ИТОГИ ПО
| Студент,
| УчебнаяГруппа";
Выборка = Запрос.Выполнить().Выбрать();
ЗначениеУчебнаяГруппа = Объект.УчебнаяГруппа.Ссылка;
ЗначениеРесурсаУчебнаяГруппа = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "УчебнаяГруппа");
Приведите к одному наименованию (выделенные слова).
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот