@LetMeDieYung

Как вывести Реквизит Комментарий на макет 1с?

Доброго времени суток! У меня есть СКД в 1С для Университета. Я хочу сформировать отчёт, в котором на макете будет выводиться Реквизит Комментарий из документа "ПриемнаяКампания". Я выбираю эту Приемную компанию при формировании отчёта. Однако, когда я в последнем запросе выбираю поле "ВТ_ДляРасчета.ПриемнаяКампания.Комментарий", а на макете выбираю поле "ПриемнаяКампанияКомментарий", мне выдает ошибку "Ошибка исполнения отчета: Поле "Приемная кампания.Комментарий" не может быть использовано в группировке". Помогите, пожалуйста! Я уже сижу более двух дней и не могу решить проблему с кодом запросов. Ниже приложен мой запрос:
Так же вот ссылка на .erf файлик : https://drive.google.com/file/d/1mauat4prMZMf-Lg3v...
ВЫБРАТЬ
	ПланыНабора.КонкурснаяГруппа КАК КонкурснаяГруппа,
	ПланыНабора.КонкурснаяГруппа.ОснованиеПоступления КАК КонкурснаяГруппаОснованиеПоступления,
	ПланыНабора.КонкурснаяГруппа.ФормаОбучения КАК КонкурснаяГруппаФормаОбучения,
	ПланыНабора.УчебныйПлан.Специальность.КодСпециальности КАК УчебныйПланСпециальностьКодСпециальности,
	ПланыНабора.УчебныйПлан.Специальность КАК УчебныйПланСпециальность,
	ПланыНабора.УчебныйПлан КАК УчебныйПлан,
	ПланыНабора.КоличествоМест КАК КоличествоМест,
	ПланыНабора.ПриемнаяКампания КАК ПриемнаяКампания,
	ПланыНабора.ПриемнаяКампания.Комментарий КАК ПриемнаяКампанияКомментарий
ПОМЕСТИТЬ ВТ_ПланНабора
ИЗ
	РегистрСведений.ПланыНабора КАК ПланыНабора
ГДЕ
	НАЧАЛОПЕРИОДА(ПланыНабора.ПриемнаяКампания.ГодПоступления, ГОД) = &НачалоТекущегоГода
	И ПланыНабора.ОснованиеПоступления = &ОснованиеПоступления
	И ПланыНабора.ПриемнаяКампания = &ПриемнаяКампания
	И ПланыНабора.КонкурснаяГруппа.ФормаОбучения = &ФормаОбучения
	И ПланыНабора.КонкурснаяГруппа.ОснованиеПоступления = &ОснованиеПоступление
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ВТ_ПланНабора.КонкурснаяГруппаОснованиеПоступления КАК КонкурснаяГруппаОснованиеПоступления,
	ВТ_ПланНабора.КонкурснаяГруппаФормаОбучения КАК КонкурснаяГруппаФормаОбучения,
	ВТ_ПланНабора.УчебныйПланСпециальностьКодСпециальности КАК УчебныйПланСпециальностьКодСпециальности,
	ВТ_ПланНабора.УчебныйПланСпециальность КАК УчебныйПланСпециальность,
	УчебныйПланПрофили.Специализация КАК Специализация,
	ВТ_ПланНабора.КоличествоМест КАК КоличествоМест,
	ВТ_ПланНабора.УчебныйПлан КАК УчебныйПлан,
	ВТ_ПланНабора.ПриемнаяКампания КАК ПриемнаяКампания
ПОМЕСТИТЬ ВТ_Данные_Спец
ИЗ
	ВТ_ПланНабора КАК ВТ_ПланНабора
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.УчебныйПлан.Профили КАК УчебныйПланПрофили
		ПО ВТ_ПланНабора.УчебныйПлан = УчебныйПланПрофили.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	СостояниеЗаявленийПоступающихСрезПоследних.УчебныйПлан КАК УчебныйПлан,
	СостояниеЗаявленийПоступающихСрезПоследних.ОснованиеПоступления КАК ОснованиеПоступления,
	МАКСИМУМ(СостояниеЗаявленийПоступающихСрезПоследних.Состояние) КАК Состояние,
	КОЛИЧЕСТВО(СостояниеЗаявленийПоступающихСрезПоследних.ФизическоеЛицо) КАК КоличествоЗаявлений,
	СостояниеЗаявленийПоступающихСрезПоследних.ПриемнаяКампания КАК ПриемнаяКампания
ПОМЕСТИТЬ ВТ_КоличесвтоЗавлений
ИЗ
	РегистрСведений.СостояниеЗаявленийПоступающих.СрезПоследних(
			,
			(УчебныйПлан, КонкурснаяГруппа.ОснованиеПоступления) В
				(ВЫБРАТЬ
					ВТ_Данные_Спец.УчебныйПлан КАК УчебныйПлан,
					ВТ_Данные_Спец.КонкурснаяГруппаОснованиеПоступления КАК КонкурснаяГруппаОснованиеПоступления
				ИЗ
					ВТ_Данные_Спец КАК ВТ_Данные_Спец)) КАК СостояниеЗаявленийПоступающихСрезПоследних
ГДЕ
	СостояниеЗаявленийПоступающихСрезПоследних.Состояние <> &СостояниеОтозвано

СГРУППИРОВАТЬ ПО
	СостояниеЗаявленийПоступающихСрезПоследних.УчебныйПлан,
	СостояниеЗаявленийПоступающихСрезПоследних.ОснованиеПоступления,
	СостояниеЗаявленийПоступающихСрезПоследних.ПриемнаяКампания
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ВТ_Данные_Спец.КонкурснаяГруппаОснованиеПоступления КАК КонкурснаяГруппаОснованиеПоступления,
	ВТ_Данные_Спец.КонкурснаяГруппаФормаОбучения КАК КонкурснаяГруппаФормаОбучения,
	ВТ_Данные_Спец.УчебныйПланСпециальностьКодСпециальности КАК УчебныйПланСпециальностьКодСпециальности,
	ВТ_Данные_Спец.УчебныйПланСпециальность КАК УчебныйПланСпециальность,
	ВТ_Данные_Спец.Специализация КАК Специализация,
	СУММА(ВТ_Данные_Спец.КоличествоМест) КАК КоличествоМест,
	ЕСТЬNULL(ВТ_КоличесвтоЗавлений.КоличествоЗаявлений, 0) КАК КоличествоЗаявлений,
	ВТ_Данные_Спец.УчебныйПлан.УровеньПодготовки КАК УчебныйПланУровеньПодготовки,
	ВТ_КоличесвтоЗавлений.ПриемнаяКампания КАК ПриемнаяКампания
ПОМЕСТИТЬ ВТ_ДляРасчета
ИЗ
	ВТ_Данные_Спец КАК ВТ_Данные_Спец
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КоличесвтоЗавлений КАК ВТ_КоличесвтоЗавлений
		ПО ВТ_Данные_Спец.УчебныйПлан = ВТ_КоличесвтоЗавлений.УчебныйПлан
			И ВТ_Данные_Спец.КонкурснаяГруппаОснованиеПоступления = ВТ_КоличесвтоЗавлений.ОснованиеПоступления
			И ВТ_Данные_Спец.ПриемнаяКампания = ВТ_КоличесвтоЗавлений.ПриемнаяКампания
ГДЕ
	ЕСТЬNULL(ВТ_КоличесвтоЗавлений.КоличествоЗаявлений, 0) <> 0

СГРУППИРОВАТЬ ПО
	ВТ_Данные_Спец.УчебныйПланСпециальность,
	ВТ_Данные_Спец.КонкурснаяГруппаОснованиеПоступления,
	ВТ_Данные_Спец.КонкурснаяГруппаФормаОбучения,
	ВТ_Данные_Спец.УчебныйПланСпециальностьКодСпециальности,
	ВТ_Данные_Спец.Специализация,
	ЕСТЬNULL(ВТ_КоличесвтоЗавлений.КоличествоЗаявлений, 0),
	ВТ_Данные_Спец.УчебныйПлан.УровеньПодготовки,
	ВТ_КоличесвтоЗавлений.ПриемнаяКампания
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ВТ_ДляРасчета.КонкурснаяГруппаОснованиеПоступления КАК КонкурснаяГруппаОснованиеПоступления,
	ВТ_ДляРасчета.КонкурснаяГруппаФормаОбучения КАК КонкурснаяГруппаФормаОбучения,
	ВТ_ДляРасчета.УчебныйПланСпециальностьКодСпециальности КАК УчебныйПланСпециальностьКодСпециальности,
	ВТ_ДляРасчета.УчебныйПланСпециальность КАК УчебныйПланСпециальность,
	ВТ_ДляРасчета.Специализация КАК Специализация,
	ВТ_ДляРасчета.КоличествоМест КАК КоличествоМест,
	ВТ_ДляРасчета.КоличествоЗаявлений КАК КоличествоЗаявлений,
	ЕСТЬNULL(ВТ_ДляРасчета.КоличествоЗаявлений, 0) / ВТ_ДляРасчета.КоличествоМест КАК Процент,
	ВТ_ДляРасчета.УчебныйПланУровеньПодготовки КАК УчебныйПланУровеньПодготовки,
	ВТ_ДляРасчета.ПриемнаяКампания.Комментарий КАК ПриемнаяКампанияКомментарий
ИЗ
	ВТ_ДляРасчета КАК ВТ_ДляРасчета

УПОРЯДОЧИТЬ ПО
	УчебныйПланСпециальностьКодСпециальности
  • Вопрос задан
  • 490 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Dementor
программист, архитектор, аналитик
Просто глаза разбегаются:
1) Только специалисты с многолетним опытом используют в СКД настраиваемые макеты, так как в этой технологии очень много нюансов и плохая документация. Откажитесь или от макета или от СКД - быстрее закончите.
2) "в последнем запросе выбираю поле ВТ_ДляРасчета.ПриемнаяКампания.Комментарий" - тут здравый смысл просто кричит: или откажись от временных таблиц или выбери комментарий при формировании временной таблицы.
3) насколько я вижу есть слабое понимание работы СКД - в запросе для источника данных вовсе не нужно выбирать реквизиты - это можно сделать в структуре вывода и СКД сама все выберет самым лучшим образом. А вы просто перегрузили запрос и сделали его плохо читаемым.
4) "Ошибка исполнения отчета: Поле "Приемная кампания.Комментарий" не может быть использовано в группировке" - это очень распространённая ошибка использования строки неограниченной длинны. Если так сильно хочется использовать комментарий в запросе с группировками и "только различные" (вы хотите возразить, что их нет в запросе, а я хочу возразить, что вы не знаете нюансы работы СКД и что запрос в процессе выполнения еще дорабатывается и группировки будут добавлены, после чего срабатывают стандартные ограничения платформы на группировки в запросе), то нужно делать как-то так:
Выразить(ВТ_ДляРасчета.ПриемнаяКампания.Комментарий как Строка(1000)) КАК ПриемнаяКампанияКомментарий
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы