Имя: Пароль:
1C
 
Непонятка с отчетом СКД
,
0 Zombi
 
07.05.20
21:16
Составляю запрос в консоли запросов, получаю такой результат:

https://yadi.sk/i/1UzVsUnayzMCuw

Стоимость получается соединением с РС "Цены номенклатуры", умножением количества на цену.

В СКД результат получается такой:

https://yadi.sk/i/DqTsC1lJXxVzmA

Вкладка с ресурсами:

https://yadi.sk/i/yygrdbn5PJkAwQ

Вкладка с полями:

https://yadi.sk/i/JlADFJ0mLZMvsQ

Что не так?
1 Ненавижу 1С
 
гуру
08.05.20
00:07
(0) права одни и те же в обоих случаях?
смотреть надо на запрос конечно, а не на эти поля
2 Zombi
 
08.05.20
06:56
(1) Это запрос из конструктора в конфигураторе:

ВЫБРАТЬ
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток КАК ВНаличииНачальныйОстаток,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток КАК ВНаличииКонечныйОстаток,
    ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Регистратор,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход КАК ВНаличииПриход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход КАК ВНаличииРасход
ПОМЕСТИТЬ вт_Остатки
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Регистратор, Движения, Склад = &Склад) КАК ТоварыНаСкладахОстаткиИОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ПОМЕСТИТЬ вт_ЦеныНаНачало
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
            &ДатаНачала,
            Номенклатура В
                    (ВЫБРАТЬ
                        вт_Остатки.Номенклатура КАК Номенклатура
                    ИЗ
                        вт_Остатки КАК вт_Остатки)
                И ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ПОМЕСТИТЬ вт_ЦеныНаКонец
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
            &ДатаОкончания,
            Номенклатура В
                    (ВЫБРАТЬ
                        вт_Остатки.Номенклатура КАК Номенклатура
                    ИЗ
                        вт_Остатки КАК вт_Остатки)
                И ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    вт_Остатки.ВНаличииНачальныйОстаток КАК ОстатокНаНачало,
    вт_Остатки.ВНаличииНачальныйОстаток * вт_ЦеныНаНачало.Цена КАК СтоимостьНаНачало,
    вт_Остатки.ВНаличииПриход КАК КоличествоПриход,
    вт_Остатки.ВНаличииПриход * вт_ЦеныНаКонец.Цена КАК СтоимостьПриход,
    вт_Остатки.ВНаличииРасход КАК КоличествоРасход,
    вт_Остатки.ВНаличииРасход * вт_ЦеныНаКонец.Цена КАК СтоимсотьРасход,
    вт_Остатки.Регистратор КАК Регистратор,
    вт_Остатки.Номенклатура КАК Номенклатура,
    вт_Остатки.ВНаличииКонечныйОстаток КАК ОстатокНаКонец,
    вт_Остатки.ВНаличииКонечныйОстаток * вт_ЦеныНаКонец.Цена КАК СтоимостьНаКонец,
    вт_ЦеныНаКонец.Цена КАК ЦенаКонец,
    вт_ЦеныНаНачало.Цена КАК ЦенаНачало
ПОМЕСТИТЬ вт_ОстаткиСтоимость
ИЗ
    вт_Остатки КАК вт_Остатки
        ЛЕВОЕ СОЕДИНЕНИЕ вт_ЦеныНаНачало КАК вт_ЦеныНаНачало
        ПО вт_Остатки.Номенклатура = вт_ЦеныНаНачало.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ вт_ЦеныНаКонец КАК вт_ЦеныНаКонец
        ПО вт_Остатки.Номенклатура = вт_ЦеныНаКонец.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СУММА(вт_ОстаткиСтоимость.ОстатокНаНачало) КАК ОстатокНаНачало,
    СУММА(вт_ОстаткиСтоимость.СтоимостьНаНачало) КАК СтоимостьНаНачало,
    СУММА(вт_ОстаткиСтоимость.КоличествоПриход) КАК КоличествоПриход,
    СУММА(вт_ОстаткиСтоимость.СтоимостьПриход) КАК СтоимостьПриход,
    СУММА(вт_ОстаткиСтоимость.КоличествоРасход) КАК КоличествоРасход,
    СУММА(вт_ОстаткиСтоимость.СтоимсотьРасход) КАК СтоимсотьРасход,
    вт_ОстаткиСтоимость.Регистратор КАК Регистратор,
    СУММА(вт_ОстаткиСтоимость.ОстатокНаКонец) КАК ОстатокНаКонец,
    СУММА(вт_ОстаткиСтоимость.СтоимостьНаКонец) КАК СтоимостьНаКонец,
    СРЕДНЕЕ(вт_ОстаткиСтоимость.ЦенаКонец) КАК ЦенаКонец,
    СРЕДНЕЕ(вт_ОстаткиСтоимость.ЦенаНачало) КАК ЦенаНачало
ИЗ
    вт_ОстаткиСтоимость КАК вт_ОстаткиСтоимость

СГРУППИРОВАТЬ ПО
    вт_ОстаткиСтоимость.Регистратор
3 Мимохожий Однако
 
08.05.20
07:01
Попробуй воспользоваться консолью СКД, в которой есть возможность смотреть запрос, который по факту собирается в СКД.
4 Ненавижу 1С
 
гуру
08.05.20
07:17
ставлю на неправильно заполненные параметры, в СКД параметры дат по другому оформляются
5 vicof
 
08.05.20
07:58
И еще ЕСТЬNULL-ов нет
6 Zombi
 
08.05.20
08:13
(3) Вот из консоли СКД:

ВЫБРАТЬ
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток КАК ВНаличииНачальныйОстаток,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток КАК ВНаличииКонечныйОстаток,
    ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Регистратор,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход КАК ВНаличииПриход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход КАК ВНаличииРасход
ПОМЕСТИТЬ вт_Остатки
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&П, &П2, Регистратор, Движения, Склад = &Склад) КАК ТоварыНаСкладахОстаткиИОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ПОМЕСТИТЬ вт_ЦеныНаНачало
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
            &П,
            Номенклатура В
                    (ВЫБРАТЬ
                        вт_Остатки.Номенклатура КАК Номенклатура
                    ИЗ
                        вт_Остатки КАК вт_Остатки)
                И ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ПОМЕСТИТЬ вт_ЦеныНаКонец
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
            &П,
            Номенклатура В
                    (ВЫБРАТЬ
                        вт_Остатки.Номенклатура КАК Номенклатура
                    ИЗ
                        вт_Остатки КАК вт_Остатки)
                И ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    вт_Остатки.ВНаличииНачальныйОстаток КАК ОстатокНаНачало,
    вт_Остатки.ВНаличииНачальныйОстаток * вт_ЦеныНаНачало.Цена КАК СтоимостьНаНачало,
    вт_Остатки.ВНаличииПриход КАК КоличествоПриход,
    вт_Остатки.ВНаличииПриход * вт_ЦеныНаКонец.Цена КАК СтоимостьПриход,
    вт_Остатки.ВНаличииРасход КАК КоличествоРасход,
    вт_Остатки.ВНаличииРасход * вт_ЦеныНаКонец.Цена КАК СтоимсотьРасход,
    вт_Остатки.Регистратор КАК Регистратор,
    вт_Остатки.ВНаличииКонечныйОстаток КАК ОстатокНаКонец,
    вт_Остатки.ВНаличииКонечныйОстаток * вт_ЦеныНаКонец.Цена КАК СтоимостьНаКонец,
    вт_ЦеныНаКонец.Цена КАК ЦенаКонец,
    вт_ЦеныНаНачало.Цена КАК ЦенаНачало
ПОМЕСТИТЬ вт_ОстаткиСтоимость
ИЗ
    вт_Остатки КАК вт_Остатки
        ЛЕВОЕ СОЕДИНЕНИЕ вт_ЦеныНаНачало КАК вт_ЦеныНаНачало
        ПО вт_Остатки.Номенклатура = вт_ЦеныНаНачало.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ вт_ЦеныНаКонец КАК вт_ЦеныНаКонец
        ПО вт_Остатки.Номенклатура = вт_ЦеныНаКонец.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СУММА(вт_ОстаткиСтоимость.ОстатокНаНачало) КАК ОстатокНаНачало,
    СУММА(вт_ОстаткиСтоимость.СтоимостьНаНачало) КАК СтоимостьНаНачало,
    СУММА(вт_ОстаткиСтоимость.КоличествоПриход) КАК КоличествоПриход,
    СУММА(вт_ОстаткиСтоимость.СтоимостьПриход) КАК СтоимостьПриход,
    СУММА(вт_ОстаткиСтоимость.КоличествоРасход) КАК КоличествоРасход,
    СУММА(вт_ОстаткиСтоимость.СтоимсотьРасход) КАК СтоимсотьРасход,
    вт_ОстаткиСтоимость.Регистратор КАК Регистратор,
    СУММА(вт_ОстаткиСтоимость.ОстатокНаКонец) КАК ОстатокНаКонец,
    СУММА(вт_ОстаткиСтоимость.СтоимостьНаКонец) КАК СтоимостьНаКонец,
    СРЕДНЕЕ(вт_ОстаткиСтоимость.ЦенаКонец) КАК ЦенаКонец,
    СРЕДНЕЕ(вт_ОстаткиСтоимость.ЦенаНачало) КАК ЦенаНачало,
    ПРЕДСТАВЛЕНИЕССЫЛКИ(вт_ОстаткиСтоимость.Регистратор) КАК РегистраторПредставление,
    вт_ОстаткиСтоимость.Регистратор.Дата КАК РегистраторДата
ИЗ
    вт_ОстаткиСтоимость КАК вт_ОстаткиСтоимость

СГРУППИРОВАТЬ ПО
    вт_ОстаткиСтоимость.Регистратор
7 toypaul
 
гуру
08.05.20
08:36
(6) ну и какой результат выдает? в этом запросе видно только 1 косяк (хотя может так и надо) - цены на начало и на конец периода получаются на одну и ту же дату
8 Zombi
 
08.05.20
08:53
(7) Результат - стоимости в СКД нет.

https://yadi.sk/i/DqTsC1lJXxVzmA

Даты тоже видел что одинаковые. Странно, в начальном запросе разные даты. Но по сути, не должно влиять на наличие стоимости в результате.
9 toypaul
 
гуру
08.05.20
09:28
(8) ну и? ты не в соcтоянии проанализировать запрос что ли?
10 toypaul
 
гуру
08.05.20
09:31
сделай выборку в СКД из вт_ЦеныНаНачало

тебе уже дали намек, что косяк скорее всего в передаче параметров в срез последних
11 vicof
 
08.05.20
11:31
(8) См (5)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший