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

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

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