Имя: Пароль:
1C
1С v8
Использование ссылки из запроса
0 4007
 
01.10.21
09:01
Имею фрагмент программы
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| Справочник.Номенклатура.Ссылка как ССЫЛКА
| из Справочник.Номенклатура
| ГДЕ (КОДМАТ = &КодМат) ";
Запрос.УстановитьПараметр("КодМат","111");

Выб=Запрос.Выполнить().Выбрать().Следующий();
Если Выб = Ложь тогда
  Сообщить("КодМат="+КодМат+" "+Наим+" в 1С НОМЕНКЛАТУРА не найден");
  ФлагОШИБКА = Истина ;
  Продолжить;
Конецесли;

// при попытке выполнить эту строку сообщение "Значение не является значением объектного типа (Ссылка)"
Мат = Выб.Ссылка ;

Где грабли?
1 DimVad
 
01.10.21
09:04
(0) А Вы не пробовали открыть этот запрос конструктором ?
2 ДенисЧ
 
01.10.21
09:05
Если Выб = Ложь тогда
сообщить()
иначе
  ном = выб.Ссылка;
КонецЕсли;

И проверь русские-английские буквы в ссылке.

ЗЫ, и да, не НАДО КРИЧАТЬ НА 1с. Она этого не любит.
3 pechkin
 
01.10.21
09:06
Выб это булево.
Не надо все в 1 строку писать
4 Kassern
 
01.10.21
09:09
(0) кто же вас так учил результат запроса обходить?
Выборка=Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Материал=Выборка.Ссылка;
КонецЕсли;
5 Малыш Джон
 
01.10.21
09:50
(0)>>Где грабли?

так в (0) же :)
6 Ненавижу 1С
 
гуру
01.10.21
10:20
Если Выб = Ложь тогда //здесь вы предполагаете, что значение логического типа

Мат = Выб.Ссылка ; //а здесь, что это выборка

//так работать не будет!!!
7 lubitelxml
 
01.10.21
10:25
Первый раз такую жесть вижу при составление запроса "Справочник.Номенклатура.Ссылка как ССЫЛКА"
8 fisher
 
01.10.21
10:27
(7) Почему жесть? Синоним как синоним. ЕМНИП, без этого дефолтный синоним будет НоменклатураСсылка
9 VladZ
 
01.10.21
10:28
(0) Городить какую-то жесть, только для того, чтобы найти элемент по коду?

Ты хотя бы сюда заглядывай: https://helpme1c.ru/spravochniki-v-yazyke-1s-8-v-primerax
Половина вопросов сразу отпадет.
10 lubitelxml
 
01.10.21
10:29
(8) почему не написать просто "Ссылка" без алиаса? Все норм будет. Меня смутило вот это - "Справочник.Номенклатура"
11 fisher
 
01.10.21
10:30
Ну а по сабжу - в (6) ответ. В переменную "Выб" записали булево, а потом пытаетесь работать как с выборкой. К вопросу о корректных именах переменных.
12 fisher
 
01.10.21
10:32
(10) А! Ну, видно же что новичок и бест-практисес не впитал еще.
13 djsns
 
01.10.21
15:52
Запрос.Текст="ВЫБРАТЬ
| СпрНом.Ссылка как ССЫЛКА
| из Справочник.Номенклатура КАК Спрном
...
14 Rovan
 
гуру
01.10.21
16:20
Выб=Запрос.Выполнить().Выбрать();
Если Выб.Следующий() = Ложь тогда

...
Иначе
  Вот ваша ссылка, сударь = Выб.Ссылка
КонецЕсли
15 Kassern
 
01.10.21
16:21
(14) я для кого в (4)  старался?)
16 1Сергей
 
01.10.21
16:24
Правильный ответ (4)
17 Мультук
 
гуру
01.10.21
16:26
(15)

У тебя "иначе" не было :-)

P.S.
Интересно крики "фу-фу то же сравнивает булево с булевым и пишет ЕСЛИ НекаяФункция() = Ложь ТОГДА " будут ?