Имя: Пароль:
1C
1С v8
Запрос по остаткам в УТ 10.3
,
0 kobzon
 
20.06.14
21:19
Народ подскажите как сделать маханький отчет с запросом. Которые перебирал бы весь справочник номенклатуры, выводил все даже нулевые элементы с ценой и остатком. Или где такой запрос можно посмотреть?
Тупо как в 7.7 из регистра места хранения взять не получится данные?
1 Wobland
 
20.06.14
21:23
из справочник левое остатки левое цены...
2 kobzon
 
20.06.14
21:27
А если вид склада розничный остатки берутся ведь не из РегистраНакопления.ТоварыНаСкладах?
3 Wobland
 
20.06.14
21:29
не помню, как там в десятке.. из РегистраНакопления.ТоварыНеНаРозничныхСкладах, наверное
4 Arh01
 
20.06.14
21:52
В упп/КА есть отчет  "суммовая оценка склада". Он и с ценами и с остатками. В ут может тоже есть?
5 Mikhail Volkov
 
21.06.14
00:46
(0) >  выводил все даже нулевые элементы с ценой и остатком
Может прайс-лист?
6 kobzon
 
21.06.14
11:25
Друзья подскажите что не так?

Нахожу остаток:

Функция ПолучитьОстатокНоменклатурыМоя(Номенклатура)

Запрос2 = Новый Запрос;
Запрос2.Текст =
"ВЫБРАТЬ
|ОстатокНоменклатуры.КоличествоОстаток
|ИЗ
|РегистрНакопления.ТоварыВРознице (&Дата,Номенклатура = &Номенклатура и Склад = &Склад) КАК ОстатокНоменклатуры";
Склад = ВыбСклад;
//Параметры запроса
Запрос2.УстановитьПараметр("Дата",ТекущаяДата());// Дата
Запрос2.УстановитьПараметр("Номенклатура",Номенклатура);// Номенклатура
Запрос2.УстановитьПараметр("Склад",Склад);// Типы цен номенклатуры
ОстатокНоменклатуры = Запрос2.Выполнить().Выгрузить();
Если ОстатокНоменклатуры.Количество()<>0 Тогда
Возврат ОстатокНоменклатуры[0].КоличествоОстаток;
Иначе
Возврат 0;
КонецЕсли;

КонецФункции //ПолучитьОстатокНоменклатуры

Ошибка:

{Форма.Форма.Форма(38)}: Ошибка при вызове метода контекста (Выполнить)
ОстатокНоменклатуры = Запрос2.Выполнить().Выгрузить();
по причине:
{(4, 1)}: Нельзя задавать параметры для таблицы "РегистрНакопления.ТоварыВРознице"
<<?>>РегистрНакопления.ТоварыВРознице (&Дата,Номенклатура = &Номенклатура и Склад = &Склад) КАК ОстатокНоменклатуры
7 Wobland
 
21.06.14
11:36
(6) а задавать таблицы "РегистрНакопления.ТоварыВРознице" для параметры нельзя
8 kobzon
 
21.06.14
11:39
(7) И как быть? Нужно же указать склад и дату и номенклатуру.
9 Wobland
 
21.06.14
11:43
(8) запрашивать у .Остатков
10 kobzon
 
21.06.14
12:01
(9) Спасибо! Понял.
    "ВЫБРАТЬ
    |    ТоварыВРозницеОстатки.Склад,
    |    ТоварыВРозницеОстатки.Номенклатура,
    |    ТоварыВРозницеОстатки.КоличествоОстаток
    |ИЗ
    |    РегистрНакопления.ТоварыВРознице.Остатки КАК ТоварыВРозницеОстатки
    |ГДЕ
    |    ТоварыВРозницеОстатки.Склад = &Склад
    |    И ТоварыВРозницеОстатки.Номенклатура = &Номенклатура";

Конструктор запросов тоже помог))
11 Wobland
 
21.06.14
12:02
(10) найди в конструкторе кнопку про установку параметров виртуальных таблиц
12 kobzon
 
21.06.14
12:02
(11) Зачем? Так не прокатит?
13 Wobland
 
21.06.14
12:06
(12) на дату крайней записи в регистре прокатит. платформа начнёт тебе собирать таблицу остатков по всем-всем складам и номенклатурам, соберёт. потом уберёт лишнее в соответствии с ГДЕ. не проще сразу приказать собрать только из нужного?
14 kobzon
 
21.06.14
12:21
(13) Попробовал не разобрался чего там писать.
15 Wobland
 
21.06.14
12:23
двоечник
ИЗ
|РегистрНакопления.ТоварыВРознице.Остатки(&Дата,Номенклатура = &Номенклатура и Склад = &Склад)
16 kobzon
 
22.06.14
19:29
Делал 3 разных запроса по переборке номенклатуры, цены и остатка, но получилось очень медленно(
Решил делать одним запросом но чето запутался в этих соединениях

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

Ошибка:
{Форма.Форма.Форма(73)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить().Выбрать();
по причине:
{(4, 5)}: Неправильный псевдоним "ТоварыВРозницеОстатки.КоличествоОстаток"
<<?>>ТоварыВРозницеОстатки.КоличествоОстаток
17 GreatOne
 
22.06.14
19:40
ЦеныНоменклатурыСрезПоследних.Цена запятую потерял
18 kobzon
 
22.06.14
19:47
(17) Да, точно. Спасибо!

А как мне явно указать Номенклатуру: Номенклатура = &Номенклатура
А то ругается:
{(9, 90)}: Не задано значение параметра "Номенклатура"
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРознице.Остатки(&Период,Номенклатура = <<?>>&Номенклатура и Склад = &Склад) КАК ТоварыВРозницеОстатки
19 kobzon
 
22.06.14
19:53
Все понял, Номенклатуру: Номенклатура = &Номенклатура вообще лишнее.