Ошибка чтения значения в запросе

1. D_e_X_T_e_R 573 26.07.17 08:36 Сейчас в теме
Есть такой запрос:
Функция ПолучитьДопРеквизит(Док,Рекв)
	
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |	СчетНаОплатуДополнительныеРеквизиты.Свойство,
               |	СчетНаОплатуДополнительныеРеквизиты.Значение КАК Значение
               |ИЗ
               |	Документ.СчетНаОплату.ДополнительныеРеквизиты КАК СчетНаОплатуДополнительныеРеквизиты
               |ГДЕ
               |	СчетНаОплатуДополнительныеРеквизиты.Ссылка = &Ссылка
               |	И СчетНаОплатуДополнительныеРеквизиты.Свойство = &Рекв";

Запрос.УстановитьПараметр("Ссылка",Док);
Запрос.УстановитьПараметр("Рекв",Рекв);

Результат = Запрос.Выполнить().Выбрать();
Результат.Следующий();

Возврат Результат.Значение;
	
КонецФункции
Показать


В док попадет ссылка на документ, рекв - строка наименование свойства.
Отладчик в выборке выдает "Ошибка чтения значения");
В консоли запросов все отрабатывает.
В чем может быть проблема?
По теме из базы знаний
Найденные решения
7. maks_20 164 26.07.17 08:57 Сейчас в теме
Либо ссылку в рекв передавать надо либо тут И СчетНаОплатуДополнительныеРеквизиты.Свойство = &Рекв изменить на И СчетНаОплатуДополнительныеРеквизиты.Свойство.Наименование = &Рекв
D_e_X_T_e_R; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. BackinSoda 26.07.17 08:41 Сейчас в теме
(1) Ошибка уже после "Результат.Следующий();" происходит ?
3. D_e_X_T_e_R 573 26.07.17 08:50 Сейчас в теме
(2)Точка останова на Результат.Следующий();, захожу отладчиком в результат и там ошибка чтения значения и по свойству и по значению показывает.
4. BackinSoda 26.07.17 08:51 Сейчас в теме
(3) на следующую строчку перейдите, там уже должно быть получено значение
D_e_X_T_e_R; +1 Ответить
5. D_e_X_T_e_R 573 26.07.17 08:55 Сейчас в теме
(4)Там показывает Поле объекта не обнаружено.
6. maks_20 164 26.07.17 08:56 Сейчас в теме
Почему рекв - строка наименование свойства? это же должна быть ссылка на план видов характеристик Дополнительные реквизиты
sergpogo; +1 Ответить
7. maks_20 164 26.07.17 08:57 Сейчас в теме
Либо ссылку в рекв передавать надо либо тут И СчетНаОплатуДополнительныеРеквизиты.Свойство = &Рекв изменить на И СчетНаОплатуДополнительныеРеквизиты.Свойство.Наименование = &Рекв
D_e_X_T_e_R; +1 Ответить
9. D_e_X_T_e_R 573 26.07.17 08:58 Сейчас в теме
(7)А как все-таки правильно на будущее. ПланВидовХарактеристик использовать?
11. D_e_X_T_e_R 573 26.07.17 09:06 Сейчас в теме
(7)С наименованием сработало.
19. user970589 10 27.01.20 12:47 Сейчас в теме
(7)
аналогичное все. Нужно связать ссылку Заказа клиента и заказа поставщику. И ЗаказПоставщику.ДокументОснование = &ДокументОснование"; - меняю по разному, но результат один.
СуммаДопРасходов = Новый Массив(ПроектОплаты.Количество());             
	лТекст = "ВЫБРАТЬ
	         |	ЗаказПоставщику.Ссылка КАК Ссылка,
	         |	ЗаказПоставщику.СуммаДокумента КАК СуммаДокумента
	         |ИЗ
	         |	Документ.ЗаказПоставщику КАК ЗаказПоставщику
	         |ГДЕ
	         |	ЗаказПоставщику.Товары.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры
	         |	И ЗаказПоставщику.Проведен
	         |	И ЗаказПоставщику.ДокументОснование = &ДокументОснование";

	лЗапрос = Новый Запрос(лТекст);

	// Присвоение значений переменным параметров.
	ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Услуги"); // Услуги ()
	лЗапрос.УстановитьПараметр("ВидНоменклатуры", ВидНоменклатуры);
	
	Проведен = Истина;
	
	Для Номер = 0 По ПроектОплаты.Количество() - 1
		Цикл
	ДокументОснование = ПроектОплаты[Номер]; // передаем в параметр заказ клиента
	
	// Установка параметров.
	лЗапрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
	
	лВыборка = лЗапрос.Выполнить().Выбрать();

	Пока лВыборка.Следующий() Цикл
		СуммаДопРасходов[Номер] = лВыборка.СуммаДокумента;
	КонецЦикла;
	КонецЦикла;

Показать
8. D_e_X_T_e_R 573 26.07.17 08:57 Сейчас в теме
Просто в счете на оплату есть табличная часть "Дополнительные реквизиты". Я консоль запросов по ней использовал.
10. maks_20 164 26.07.17 09:03 Сейчас в теме
Если в функцию в качестве параметра строка с наименованием приходит, то можно например Запрос.УстановитьПараметр("Рекв",ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(Рекв, Истина));
D_e_X_T_e_R; +1 Ответить
12. D_e_X_T_e_R 573 26.07.17 09:06 Сейчас в теме
14. Артано 762 26.07.17 09:37 Сейчас в теме
(10)
Если в функцию в качестве параметра строка с наименованием приходит, то можно например Запрос.УстановитьПараметр("Рекв",ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(Рекв, Истина));



УстановитьРежимЗанудства();

//В данном случае будет два обращения к БД.
//1. Получение ссылки на ПВХ
//2. Основной запрос.

//С точки зрения быстродействия ссылку рекомендуется получать:
//  - или хорошо заранее (если запрос используется несколько раз)
//  - или в самом запросе по тому же наименованию.

//Не могу представить сценарий работы, где известно наименование ПВХ, но нет ссылки на него.

ОтключитьРежимЗанудства();


Показать
16. maks_20 164 26.07.17 09:45 Сейчас в теме
(14) понятное дело, что по хорошему логику надо переделать так, чтобы в функцию уже прилетала ссылка, но это уже совсем другая история. автор пусть сам решает. вопрос был не о переделке, а о причине неработоспособности кода
13. Infector 201 26.07.17 09:10 Сейчас в теме
Если Результат.Следующий() Тогда
Возврат Результат.Значение;
Иначе
Возврат неопределено;
КонецЕсли;
15. Артано 762 26.07.17 09:40 Сейчас в теме
(13) Как сказал кто-то из древних: "программа, утыканная конструкциями типа try catch с целью исключить возможность появления исключения, похожа на труп, который не падает, потому что прибит гвоздями к стене".
17. Infector 201 26.07.17 10:33 Сейчас в теме
(15) Ну если дальше копать, то прочтение одного единственного доп. реквизита для одной единственной ссылки изначально далеко не всегда верный подход, а чаще наоборот. Ну а вероятность пустого результата в запросе, особенно в контексте прочтения доп. реквизитов никто не отменял.
18. Артано 762 26.07.17 10:46 Сейчас в теме
(17) никто кроме ТС не знает контекст задачи и сценарий вызова этой функции. Поэтому, при текущих вводных никто из нас не может сказать как должен обрабатываться пустой запрос. Ваш ответ дал прямое указание на безусловное исключение исключения (простите за каламбур), следовательно он полностью соответствует приведенной в (15) цитате
Оставьте свое сообщение

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