Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
11 дек 2024, 21:27

Проблема с отбром в запросе

Автор Geenko, 05 фев 2011, 09:05

0 Пользователей и 1 гость просматривают эту тему.

Geenko

Мне необходимо сформировать запрос из виртуальной таблицы регистра накопления. Нужно выудить данные только по одному виду номенклатуры, попытался сделать следующим образом:

-----------------------------------------------------
ЗапросПоставок = Новый Запрос;
   ЗапросПоставок.Текст="
   |Выбрать
   |КоличествоОстаток Как ОстатокПериода,
   |Партия
   |ИЗ
   |РегистрНакопления.ОстаткиНоменклатура.Остатки(&ДатаДок,&ПарОтбор)
   |
   |Упорядочить По Партия Возр
   |";
   Отбор = Новый структура;
   Отбор.Вставить("Номенклатура",ВыборкаТоваров.Номенклатура);
   ЗапросПоставок.УстановитьПараметр("ДатаДок",Дата);
   ЗапросПоставок.УстановитьПараметр("ПарОтбор",Отбор);
   РезультатПоПартиям = ЗапросПоставок.Выполнить();
----------------------------------------------------------
Параметры для РегистрНакопления.ОстаткиНоменклатура.Остатки() подсмотрел в синтаксис-помощнике, но при исполнении кода 1с ругается следующим образом :

Ошибка при выполнении обработчика - '{Документ.Расходная(52)}: Ошибка при вызове метода контекста (Выполнить): {(6, 56)}: Неверные параметры "РегистрНакопления.ОстаткиНоменклатура.Остатки, 1"
РегистрНакопления.ОстаткиНоменклатура.Остатки(&ДатаДок,<<?>>&ПарОтбор)'
по причине:
{Документ.Расходная(52)}: Ошибка при вызове метода контекста (Выполнить): {(6, 56)}: Неверные параметры "РегистрНакопления.ОстаткиНоменклатура.Остатки, 1"
РегистрНакопления.ОстаткиНоменклатура.Остатки(&ДатаДок,<<?>>&ПарОтбор)

по причине:
{(6, 56)}: Неверные параметры "РегистрНакопления.ОстаткиНоменклатура.Остатки, 1"
РегистрНакопления.ОстаткиНоменклатура.Остатки(&ДатаДок,<<?>>&ПарОтбор)
---------------------------------------------------------------------------------

Как так то?? что же тут не правильно, никак понять не могу!

Geenko

Люди добрые, помогите, пожалуйста, весь мозг сломал уже.

progmikon

Цитата: Geenko от 05 фев 2011, 09:05
Мне необходимо сформировать запрос из виртуальной таблицы регистра накопления. Нужно выудить данные только по одному виду номенклатуры, попытался сделать следующим образом:

-----------------------------------------------------
ЗапросПоставок = Новый Запрос;
   ЗапросПоставок.Текст="
   |Выбрать
   |КоличествоОстаток Как ОстатокПериода,
   |Партия
   |ИЗ
   |РегистрНакопления.ОстаткиНоменклатура.Остатки(&ДатаДок,&ПарОтбор)
   |
   |Упорядочить По Партия Возр
   |";
   Отбор = Новый структура;
   Отбор.Вставить("Номенклатура",ВыборкаТоваров.Номенклатура);
   ЗапросПоставок.УстановитьПараметр("ДатаДок",Дата);
   ЗапросПоставок.УстановитьПараметр("ПарОтбор",Отбор);
   РезультатПоПартиям = ЗапросПоставок.Выполнить();
----------------------------------------------------------
Параметры для РегистрНакопления.ОстаткиНоменклатура.Остатки() подсмотрел в синтаксис-помощнике, но при исполнении кода 1с ругается следующим образом :

Ошибка при выполнении обработчика - '{Документ.Расходная(52)}: Ошибка при вызове метода контекста (Выполнить): {(6, 56)}: Неверные параметры "РегистрНакопления.ОстаткиНоменклатура.Остатки, 1"
РегистрНакопления.ОстаткиНоменклатура.Остатки(&ДатаДок,<<?>>&ПарОтбор)'
по причине:
{Документ.Расходная(52)}: Ошибка при вызове метода контекста (Выполнить): {(6, 56)}: Неверные параметры "РегистрНакопления.ОстаткиНоменклатура.Остатки, 1"
РегистрНакопления.ОстаткиНоменклатура.Остатки(&ДатаДок,<<?>>&ПарОтбор)

по причине:
{(6, 56)}: Неверные параметры "РегистрНакопления.ОстаткиНоменклатура.Остатки, 1"
РегистрНакопления.ОстаткиНоменклатура.Остатки(&ДатаДок,<<?>>&ПарОтбор)
---------------------------------------------------------------------------------

Как так то?? что же тут не правильно, никак понять не могу!

А если запрос написать так:

ЗапросПоставок.Текст="
   |Выбрать
   |КоличествоОстаток Как ОстатокПериода,
   |Партия
   |ИЗ
   |РегистрНакопления.ОстаткиНоменклатура.Остатки(&ДатаДок, Номенклатура В (&МассивНоменклатуры))
   |
   |Упорядочить По Партия Возр
   |";
...
Запрос.УстановитьПараметр("МассивНоменклатуры", ВыборкаТоваров.ВыгрузитьКолонку("Номенклатура")); //если номенклатура не одна - можно передать массив, например из ТЗ

Geenko

progmikon, спасибо, но не помогло. Выборка из запроса не имеет функцию ВыгрузитьКолонку(). Решил проблему проще. Добавил в запрос условие ГДЕ.

progmikon

Цитата: Geenko от 06 фев 2011, 17:31
progmikon, спасибо, но не помогло. Выборка из запроса не имеет функцию ВыгрузитьКолонку(). Решил проблему проще. Добавил в запрос условие ГДЕ.

МассивНоменклатуры = Запрос.Выполнить.Выгрузить().ВыгрузитьКолонку("номенклатура");

cska-fanat-kz

Цитата: Geenko от 06 фев 2011, 17:31
progmikon, спасибо, но не помогло. Выборка из запроса не имеет функцию ВыгрузитьКолонку(). Решил проблему проще. Добавил в запрос условие ГДЕ.

Если запрос к виртуальной таблице, то надо задавать параметры виртуальной таблицы вместо конструкции ГДЕ. Результат не спорю один и тот же, но в первом случае - быстрее работает.

|ИЗ
|РегистрНакопления.ОстаткиНоменклатура.Остатки(&ДатаДок, Номенклатура В (&МассивНоменклатуры))

вместо

|ИЗ
|РегистрНакопления.ОстаткиНоменклатура.Остатки(&ДатаДок) КАК Остатки
|ГДЕ Остатки.Номенклатура В (&МассивНоменклатуры)
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

progmikon

Цитата: cska-fanat-kz от 07 фев 2011, 12:31
Цитата: Geenko от 06 фев 2011, 17:31
progmikon, спасибо, но не помогло. Выборка из запроса не имеет функцию ВыгрузитьКолонку(). Решил проблему проще. Добавил в запрос условие ГДЕ.



Если запрос к виртуальной таблице, то надо задавать параметры виртуальной таблицы вместо конструкции ГДЕ. Результат не спорю один и тот же, но в первом случае - быстрее работает.

|ИЗ
|РегистрНакопления.ОстаткиНоменклатура.Остатки(&ДатаДок, Номенклатура В (&МассивНоменклатуры))

вместо

|ИЗ
|РегистрНакопления.ОстаткиНоменклатура.Остатки(&ДатаДок) КАК Остатки
|ГДЕ Остатки.Номенклатура В (&МассивНоменклатуры)

Абсолютно верное дополнение. Именно так я и рекомендовал написать запрос во втором ответе.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск