Имя: Пароль:
1C
1С v8
Пустые данные в построителе отчета
0 Экхонок
 
22.11.13
12:03
Пишу отчет по перемещения товаров, через построитель отчета
Текст запроса:

ВЫБРАТЬ
    ВложенныйЗапрос.Ссылка,
    ВложенныйЗапрос.СкладОтправитель,
    ВложенныйЗапрос.СкладПолучатель,
    ВложенныйЗапрос.Номенклатура КАК Номенклатура,
    ВложенныйЗапрос.Количество КАК Количество,
    ВложенныйЗапрос.Цена,
    ВложенныйЗапрос.ТипЦен
{ВЫБРАТЬ
    Ссылка.*,
    СкладОтправитель.*,
    СкладПолучатель.*,
    Номенклатура.*,
    Количество,
    Цена}
ИЗ
    (ВЫБРАТЬ
        ПеремещениеТоваров.Ссылка КАК Ссылка,
        ПеремещениеТоваров.СкладОтправитель КАК СкладОтправитель,
        ПеремещениеТоваров.СкладПолучатель КАК СкладПолучатель,
        ПеремещениеТоваров.Номенклатура КАК Номенклатура,
        ПеремещениеТоваров.Количество КАК Количество,
        ЦеныТоваров.Цена КАК Цена,
        ЦеныТоваров.Номенклатура КАК Номенклатура1,
        ЦеныТоваров.ТипЦен КАК ТипЦен
    ИЗ
        (ВЫБРАТЬ
            ПеремещениеТоваровТовары.Ссылка.Ссылка КАК Ссылка,
            ПеремещениеТоваровТовары.Ссылка.СкладОтправитель КАК СкладОтправитель,
            ПеремещениеТоваровТовары.Ссылка.СкладПолучатель КАК СкладПолучатель,
            ПеремещениеТоваровТовары.Номенклатура КАК Номенклатура,
            ПеремещениеТоваровТовары.Количество КАК Количество
        ИЗ
            Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
        ГДЕ
            ПеремещениеТоваровТовары.Ссылка.Проведен = ИСТИНА
            И ПеремещениеТоваровТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца) КАК ПеремещениеТоваров
            ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
                ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
                ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен
            ИЗ
                РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонца, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних) КАК ЦеныТоваров
            ПО ПеремещениеТоваров.Номенклатура = ЦеныТоваров.Номенклатура) КАК ВложенныйЗапрос
{ГДЕ
    ВложенныйЗапрос.СкладОтправитель.*,
    ВложенныйЗапрос.СкладПолучатель.*,
    ВложенныйЗапрос.Номенклатура.*,
    ВложенныйЗапрос.ТипЦен.*}
{УПОРЯДОЧИТЬ ПО
    Номенклатура.*}
ИТОГИ
    СУММА(Количество)
ПО
    Номенклатура
{ИТОГИ ПО
    Номенклатура.*}

Через консоль запросов всё нормально, вижу цену. Если же уже через сам отчет, то не выводит данные. Хотя если убрать из параметра цену, выводит, но без цены.
Что не так?
1 Экхонок
 
22.11.13
12:04
Т.е. при заполненном значении ТипЦен результат нет, при пустом есть, но без цены, естественно.
2 Defender aka LINN
 
22.11.13
12:07
(0) В консоли запросов выполняется другой запрос
3 МойКодУныл
 
22.11.13
12:08
(0) а есть в регистре записи с таким типом цен? По номенклатуре перемещений.
Может, Построитель накладывает отбор на уже сформированную таблицу, в которой нет подходящих записей. У тебя он в отборах стоит?
4 catena
 
22.11.13
12:09
Не правильно заполняешь &ТипЦен
5 Экхонок
 
22.11.13
12:10
(3)записи есть, проверял
Кто именно в отборах стоит?
6 Экхонок
 
22.11.13
12:11
(4) А как правильно?
7 МойКодУныл
 
22.11.13
12:11
(5) Тип Цен
8 Экхонок
 
22.11.13
12:14
Да, в отборах есть:
УниверсальныйОтчет.ДобавитьОтбор("ТипЦен");

Но не срабатывает, поэтому прописал  вот так:
УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("ТипЦен", ТипЦен);

При отсутствии этой строки, говорит, что не задан отбор.
Чую где-то тут ошибка.
9 Defender aka LINN
 
22.11.13
12:15
(3) "Может накладывает"... Русским же языком написано:

{ГДЕ
    ВложенныйЗапрос.СкладОтправитель.*,
    ВложенныйЗапрос.СкладПолучатель.*,
    ВложенныйЗапрос.Номенклатура.*,
    ВложенныйЗапрос.ТипЦен.*}
10 catena
 
22.11.13
12:15
(6)Правильно - тем же значением, что и в консоли. Если в консоли запрос отрабатывает, а в отчете нет, дело ВСЕГДА в параметрах.
11 Defender aka LINN
 
22.11.13
12:18
(10) Следи за губами: в консоли ДРУГОЙ запрос.
12 catena
 
22.11.13
12:21
(11)Уточняю (10): "Если один и тот же запрос..."
13 Defender aka LINN
 
22.11.13
12:22
(12) Дык то-то и оно, что не один и тот же
14 Экхонок
 
22.11.13
12:24
(11) (12) Как другой, если я копирую текст запроса? В чём отличие?
(9) Извините, не могу понять, но как установить параметр ТипЦен правильно?
15 catena
 
22.11.13
12:27
(14)А сейчас как ставишь?

(13)Все врут?
16 Экхонок
 
22.11.13
12:30
(15) УниверсальныйОтчет.ДобавитьОтбор("ТипЦен");
Но выдает ошибку:
{Отчет.УниверсальныйОтчет.МодульОбъекта(86)}: Ошибка при вызове метода контекста (Вывести)
        ПостроительОтчета.Вывести(ТабличныйДокумент);
по причине:
{(33, 73)}: Не задано значение параметра "ТипЦен"
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонца, ТипЦен = <<?>>&ТипЦен) КАК ЦеныНоменклатурыСрезПоследних) КАК ЦеныТоваров

Ничего не понимаю. Такие же отборы по складу и номенклатуре срабатывают.
17 catena
 
22.11.13
12:46
(16)Нет. Когда устанавливаешь параметр ТипЦен, в переменной ТипЦен - что?
18 catena
 
22.11.13
12:46
(16)Правильно он тебя ругает, если хочешь работать с отбором, убери из запроса параметр.
19 Экхонок
 
22.11.13
13:11
(18) Убрал параметр, всё равно

Попробовал просто через построитель отчета вытащить цены
Выдаёт список номенклатуры, но без цен.
Текст запроса:

ВЫБРАТЬ
    ВложенныйЗапрос.Цена,
    ВложенныйЗапрос.Номенклатура,
    ВложенныйЗапрос.ТипЦен
{ВЫБРАТЬ
    Цена,
    Номенклатура.*,
    ТипЦен.*}
ИЗ
    (ВЫБРАТЬ
        ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
        ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
        ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен
    ИЗ
        РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонца, ) КАК ЦеныНоменклатурыСрезПоследних) КАК ВложенныйЗапрос
{ГДЕ
    ВложенныйЗапрос.Номенклатура.*,
    ВложенныйЗапрос.ТипЦен.*}
{УПОРЯДОЧИТЬ ПО
    Номенклатура.*}
{ИТОГИ ПО
    Номенклатура.*}

Что-то ничего не понимаю. Есть какое-то ограничение на чтение Регистра? Или хитрость в выводе отчета?
20 Defender aka LINN
 
22.11.13
13:13
(14) В том, что Построитель модифицирует текст запроса по настройкам. Или ты думаешь, что {} для красоты нужны?
(15) Не, просто в (0) очередной одинэснег, который не удосужился изучить язык, на котором он программирует.
21 Экхонок
 
22.11.13
13:15
(17) УниверсальныйОтчет.ПостроительОтчета.Отбор.ТипЦен    Тип цен = "Закупочная"    ЭлементОтбора
Всё нормально, тип - Справочник.ТипыЦенНоменклатуры.

Голову сломал.
22 Экхонок
 
22.11.13
13:19
(20) ОК, если знаете, скажите как правильно. Или так сложно ответить?
23 Defender aka LINN
 
22.11.13
13:22
(21) Все с тобой понятно. Иди к автору запроса из (0), пусть он тебе объясняет.
24 Экхонок
 
22.11.13
13:23
(23) Чего? Первый запрос мной и написан.
Я-то честно, говорю, что не знаю и прошу помощи. А вы пока только указали, на ошибки, которые я и так вижу, но не предложили решения.
25 МойКодУныл
 
22.11.13
13:24
(9) Может, потому что не известно, указал автор в отборах тип цен или нет:)
(0) Убери в из построителя{} из ГДЕ сои типы цен.
26 Defender aka LINN
 
22.11.13
13:29
(25) Известно.
(24) Если тобой написан, ты должен знать, зачем там {}. А если не знаешь - самое время открыть мануал и выяснить.
27 Экхонок
 
22.11.13
13:43
(25) Убрал, всё равно даже такой простой запрос, выдает список номенклатуры, но без цен (Колонка цена пустая).
Текст простого запроса цен
ВЫБРАТЬ
    ВложенныйЗапрос.Цена,
    ВложенныйЗапрос.Номенклатура
{ВЫБРАТЬ
    Цена,
    Номенклатура.*}
ИЗ
    (ВЫБРАТЬ
        ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
        ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
        ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен
    ИЗ
        РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКонца, ) КАК ЦеныНоменклатурыСрезПоследних) КАК ВложенныйЗапрос
{ГДЕ
    ВложенныйЗапрос.Номенклатура.*}
{УПОРЯДОЧИТЬ ПО
    Номенклатура.*}
{ИТОГИ ПО
    Номенклатура.*}
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн