Имя: Пароль:
1C
1С v8
Не получается сделать запрос
,
0 begem0t
 
02.12.16
15:22
Товарищи, я че-то уже много часов туплю, не могу простую задачку решить. Суть в том, что мне надо из Мероприятия (Справочник.Мероприятия) вытащить значение Табличной части (Программа). Казалось бы.

в функцию (&Сервер) я передаю Объект (ДанныеФормыСтруктура), в котором есть Ссылка на нужный мне элемент Справочник.Мероприятия

делаю запрос:

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

(в консоли запросов это все прекрасно работает)

а тут получаю:

{Справочник.Мероприятия.Форма.ФормаЭлемента.Форма(6814)}: Недостаточно фактических параметров
    Пока ВыборкаПункты.НайтиСледующий() Цикл

Подозреваю, что решение простое, но я честно уже много что перепробовал. Хелп пожалуйста!
1 Любопытная
 
02.12.16
15:24
Недостаточно фактических параметров - какое слово непонятно?
Почему не просто ВыборкаПункты.Следующий()?
2 vicof
 
02.12.16
15:36
И зачем там внутреннее соединение?
3 Cool_Profi
 
02.12.16
15:48
ВыборкаИзРезультатаЗапроса.НайтиСледующий (QueryResultSelection.FindNext)
ВыборкаИзРезультатаЗапроса (QueryResultSelection)
НайтиСледующий (FindNext)
Вариант синтаксиса: По структуре

Синтаксис:

НайтиСледующий(<СтруктураПоиска>)
Параметры:

<СтруктураПоиска> (обязательный)

Тип: Структура.
Структура, в ключе которой находятся имена полей, в значениях - значения полей.
Вариант синтаксиса: По значению в колонке

Синтаксис:

НайтиСледующий(<Значение>, <Колонки>)
Параметры:

<Значение> (обязательный)

Тип: Произвольный.
Искомое значение.
<Колонки> (необязательный)

Тип: Строка.
Названия колонок, в которых будет осуществляться поиск значений. Если "Пустая строка" - поиск во всех колонках.
Значение по умолчанию: Пустая строка
Возвращаемое значение:

Тип: Булево.
Истина - запись найдена; Ложь - в противном случае.
Описание:

Осуществляет поиск записи по указанным условиям и установку указателя выборки на нее.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Текущая запись не рассматривается.
Пример:

СтуктураПоиска = Новый Структура("Товар, Контрагент");
СтуктураПоиска.Товар = НужныйТовар;
СтуктураПоиска.Контрагент = НужныйКонтрагент;
Пока Выборка.НайтиСледующий(СтуктураПоиска) Цикл
    ...
КонецЦикла;
4 Cool_Profi
 
02.12.16
15:49
(2) Чтобы вмерупринятия без программы отсечь
5 ELEA26
 
02.12.16
15:50
Фигасе запрос! Берем со стола ложку двумя руками?
6 ELEA26
 
02.12.16
15:52
(0) |ВЫБРАТЬ
    |    Программа.Ссылка Как ПрограммаСсылка,
    |    Программа.Содержание
    |ИЗ
    |    Справочник.Мероприятия.Программа КАК Программа
    |ГДЕ
    |    Программы.Ссылка = &Мероприятие";

А почему не так?
7 vicof
 
02.12.16
16:03
(6) Не взлетит
8 ELEA26
 
02.12.16
16:04
(7) ну ок, еще одну "ы" на "а" :)
9 newbling
 
02.12.16
16:18
ух ты, НайтиСледующий().
Это что-то типа пост-отбора в выборке?
10 newbling
 
02.12.16
16:19
честно говоря, ни разу не встречал до этого
11 newbling
 
02.12.16
16:20
Хотя, в ут11, вон, есть много где. Как-то обходила меня стороной чаша сия.
12 newbling
 
02.12.16
16:21
в любом случае, в данном случае подразумевается не НайтиСледующий(), а просто Следующий().

Ну и запрос можно упростить. Лесом внутренние соединения ненужные.
13 begem0t
 
02.12.16
16:37
Всем спасибо большое, я разобрался. Действительно я лишку наворотил с этим "НайтиСледующий". Опыта не хватает видеть очевидное.
14 LeReve
 
02.12.16
16:38
(0) >>я честно уже много что перепробовал
Попробуй отдохнуть и завтра с новыми силами в бой!
15 KnightAlone
 
02.12.16
18:14
(13) вот так надо было Выборка.БоротьсяИскатьНайтиИПерепрятать()