Поле объекта не обнаружено

1. arsen_botashev 25.02.19 16:17 Сейчас в теме
Здравствуйте. подскажите что может быть не так?
пишу запрос, выходит ошибка что поле не обнаружено, смотрю отладчиком, пишет что тип неопределено, хотя все остальные поля работают и у них тип ВыборкаИзрезультатаЗапроса

Ошибка: {БизнесПроцесс.СнижениеРисков.Форма.ФормаБизнесПроцесса.Форма(180)}: Поле объекта не обнаружено (Услуги)
ВыборкаУслуги = Выборка.Услуги.Выбрать();

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

		ТабДок.Вывести(ОбластьЗаголовок);

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

Показать
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. gudogu 93 25.02.19 16:29 Сейчас в теме
Причины это у Вас табличная часть, поэтому из нее можно сделать выборку.
Услуги это справочник, который присоединили к основной таблице внутренним соединением, поэтому поля справочника услуги у вас будут доступны при обходе основной таблицы выборки.
т.е. код
Пока ВыборкаУслуги.Следующий() Цикл
ОбластьТаблица.Параметры.Заполнить(ВыборкаУслуги);
КонецЦикла;

лишний

ОбластьТаблица.Параметры.Заполнить(Выборка) - этого достаточно
+
4. arsen_botashev 25.02.19 17:54 Сейчас в теме
(2)
Сделал как вы сказали, сначала все получилось, а потом не получилось)))

Что не так?
Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	СнижениеРисков.Номер,
	|	СнижениеРисков.Дата,
	|	СнижениеРисков.Автор,
	|	СнижениеРисков.Причины.(
	|		Риск,
	|		Причина,
	|		Мероприятие,
	|		Ответственный,
	|		Срок
	|	),
	|	Услуги.Процесс,
	|	Услуги.ПереходПроцесса
	|ИЗ
	|	БизнесПроцесс.СнижениеРисков КАК СнижениеРисков
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Услуги КАК Услуги
	|		ПО СнижениеРисков.Причины.Риск.Ссылка = Услуги.Ссылка
	|ГДЕ
	|	СнижениеРисков.Ссылка = &Ссылка";
	
	Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();
	ТабДок.Вывести(ОбластьЗаголовок);	
	Пока выборка.Следующий() Цикл
		ОбластьШапка.параметры.заполнить(Выборка);
	КонецЦикла;
	ТабДок.Вывести(ОбластьШапка);
	ТабДок.Вывести(ОбластьЗаголовокТаблицы);	
	ВыборкаПричины = Выборка.Причины.Выбрать();	
	Пока ВыборкаПричины.следующий() Цикл
		ОбластьТаблица.Параметры.Заполнить(ВыборкаПричины);
		ОбластьТаблица.Параметры.Заполнить(Выборка);
		ТабДок.Вывести(ОбластьТаблица);
	КонецЦикла;
	
	ТабДок.ОтображатьСетку = Ложь;
	ТабДок.Защита = Ложь;
	ТабДок.ТолькоПросмотр = Истина;
	ТабДок.ОтображатьЗаголовки = Ложь;
	Возврат ТабДок;
Показать
+
5. gudogu 93 25.02.19 22:25 Сейчас в теме
(4) У Вас изначально неправильно построен запрос.
Посмотрите что Вам написал mitiyV
+
6. arsen_botashev 26.02.19 09:18 Сейчас в теме
(5)в консоли запросов все работает, как надо тогда пределать? я прочитал что выше писали. не пойму
+
8. Ганс 26.02.19 10:03 Сейчас в теме
(4)
Пока выборка.Следующий() Цикл
ОбластьШапка.параметры.заполнить(Выборка);
КонецЦикла;
ТабДок.Вывести(ОбластьШапка);
ТабДок.Вывести(ОбластьЗаголовокТаблицы);
ВыборкаПричины = Выборка.Причины.Выбрать();
Пока ВыборкаПричины.следующий() Цикл
ОбластьТаблица.Параметры.Заполнить(ВыборкаПричины);
ОбластьТаблица.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьТаблица);
КонецЦикла;


 Пока выборка.Следующий() Цикл
        ОбластьШапка.параметры.заполнить(Выборка);

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

    КонецЦикла;
Показать


Так попробуйте...
+
3. mitiyV 7 25.02.19 16:48 Сейчас в теме
Результат запроса (Выборка) таблица с полями: Номер, Дата, Автор, Причины( таблица),Процесс, ПереходПроцесса. Поле "Услуги" отсутствует. Запрос полностью нужно переделать . В качестве основной таблицы брать Причины , Использовать группировке "Причины.Ссылка", "Причина" и обращаться к результату запроса соответственно: К первой группировке , ко второй и остальным элементам
+
7. Дмитрий74Чел 234 26.02.19 09:47 Сейчас в теме
(0)
1) Идите изучайте язык запросов. То, что вы написали - белиберда.
Конструкции вида "СнижениеРисков.Причины.Риск.Ссылка =" (куча обращений через точку) приводят к тормозам.
Вытаскивать таблицу в качестве поля - "СнижениеРисков.Причины.(" - тоже сомнительное решение.
2) Текст "Поле объекта не обнаружено" надо читать как "Поле У объекта не обнаружено". Если добавить "Поле объекта не обнаружено (Услуги): ВыборкаУслуги = Выборка.Услуги.Выбрать(); " то становится понятно, что система не может найти поле "Услуги" у объекта "Выборка". Вы же написали "Выборка.Услуги". А в выборке нет поля "услуги"; перечень полей задан вами в секции "ВЫБРАТЬ ...".
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот