Как выбрать данные в зависимости от приоритета?

Новая тема
Показывать по 10 20 40 сообщений
Вообще-то в параметрах указывается ссылка на документ, а таблица уже в запросе написана:
Выбрать СписокНом.*
Из Документ.ЗаказПокупателя.Товары Как СписокНом
Где СписокНом.Ссылка = &СсылкаНаЗаказ

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

Кстати, у вас была ошибка "лСтр.Номенклатура=лРодитель;"

По предудущим сообщениям:
1. Колонки.Добавить(<Имя>, <Тип>, <Заголовок>, <Ширина>). Если Тип не будет указан, то в запрос вы такую таблицу не вставите.
2. Ну да, привык в запросе писать Справочник.Номенклатура, а тип называется СправочникСсылка.Номенклатура:
ТаблНом.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов ("СправочникСсылка.Номенклатура"));
ТаблНом.Колонки.Добавить("Родитель",  Новый ОписаниеТипов ("СправочникСсылка.Номенклатура"));

3. После запроса выполнил:
Запрос1.Текст = "Выбрать * Из ВТТаблНом";
Запрос1.Выполнить().Выгрузить().ВыбратьСтроку();

И получил нормальную таблицу."
С описанием типов и таблицей вроде разобралась.
"Спасибо Вам большое за помощь!Можно только я ещё ке-что спрошу,уже по поводу отладки.В запросея дописала:
                               ВЫБРАТЬ *
                              |Поместить ВТаблНом
                              |Из &ТаблНом КАК ТаблНом
                              |;
Теперь,когда я хочу открыть конструктор,выдаётся сообщение:"Поле не найдено "ВТаблНом.Номенклатура" ПО (ВТаблНом.Номенклатура=Этапы.Продукция),ошибок в названии таблиц я не нашла.Из-за чего может быть эта ошибка?"
Читают тему
(гостей: 1)

Быстрый переход