Имя: Пароль:
1C
1С v8
Задваивается поле КоличествоКонечныйОстаток
, ,
0 skuma
 
22.10.19
17:49
Доброго времени суток! Не могу понять, почему так происходит, в консоли запросов делаю нижеприведенный запрос и на записи с двумя и более движениями по полю КоличествоКонечныйОстаток выходит общая сумма по движениям(например, всего ед. товара 6, в трех строчках по +2, у меня выводит три раза по 6). Соответственно в скд у меня из-за этого происходят чудеса с вычисляемыми полями. Сильно тапками не бейте, я только учусь)

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

УПОРЯДОЧИТЬ ПО
    Остатки.Номенклатура.Наименование,
    Период
1 Ёпрст
 
22.10.19
17:52
(0) посмотри, сколько измерений имеет регистр сведений .Цены и по скольким полям ты делаешь соединение. Сделай выводы.
2 skuma
 
22.10.19
17:54
(1) я заметил, что какое количество движений, такое у меня и количество строк. Я явно что-то натворил в первом соединении
3 GROOVY
 
22.10.19
17:57
А это зачем?

    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ТипыЦен КАК ТипыЦен
            ПО ЦеныСрезПоследних.ТипЦен = ТипыЦен.Ссылка

И нет тут у тебя движений, ты тут остатки получаешь.
4 skuma
 
22.10.19
17:58
(3) Это для того, чтобы ограничить выдачу по типу цен
5 skuma
 
22.10.19
18:25
(3) ну тут да, я имею ввиду регистр
6 skuma
 
22.10.19
20:30
(1) получается, я делаю соединение по этому регистру в двух соединениях. Но по одному я цепляюсь к предопределенному элементу
7 skuma
 
22.10.19
20:31
https://cdn1.radikalno.ru/uploads/2019/10/22/7fae416d09a1f1ccbb440edf371ab00c-full.png

вот так выглядит сам косяк. По регистру количество три(расхода не было) по запросу в итоге 6 - два раза по два и два раза по одному
8 GROOVY
 
22.10.19
20:44
У тебя там цена поменялась. Какую брать?

Вот так не пиши  ПО Остатки.Номенклатура.Ссылка = ЦеныСрезПоследних.Номенклатура.Ссылка , убери "ссылка", Номенклатура уже ссылка.

Отбор по типу цены запихни в параметры виртуальной таблицы.

Убери нафиг соединение со справочником.
9 skuma
 
22.10.19
20:55
(8) https://cdn1.radikalno.ru/uploads/2019/10/22/b756174a8f340b0ae4ede6926056fc98-full.jpg

Сделал, как Вы рекомендовали. Все равно такие же чудеса.
10 GROOVY
 
22.10.19
20:58
Отбор по типу цены в параметры вирт таблицы...
11 skuma
 
22.10.19
21:40
(10) https://cdn1.radikalno.ru/uploads/2019/10/22/bd543efc4a666de17ceb40ed5474432c-full.jpg

Сделал отбор по типу цены в параметры виртуальной таблицы - все равно все так же...
12 GROOVY
 
22.10.19
21:54
Ты по наименованию отбор накладываешь? 8-)
13 GROOVY
 
22.10.19
21:58
Коллега из (1) видать прав, что-то у тебя еще интересное измерение есть в РС.
14 skuma
 
22.10.19
22:06
(12) Ну да, движет мною то, что мне нужен конкретный тип цен


(13) https://cdn1.radikalno.ru/uploads/2019/10/22/1dfb724ee7968b6a1dff72246d0bad57-full.jpg

я по измерению соединился с другим регистром. Больше там не могу увидеть ничего интересного. Погромист из меня так себе
15 GROOVY
 
22.10.19
22:10
Добавь строку ЦеныСрезПоследних.* и увидишь в чем дубли в измерениях.
16 skuma
 
22.10.19
23:20
(15) ВЫБРАТЬ РАЗЛИЧНЫЕ
    Остатки.СкладКомпании КАК СкладКомпании,
    Остатки.Номенклатура КАК Номенклатура,
    Остатки.КоличествоОстаток КАК КоличествоКонечныйОстаток,
    Остатки.СуммаРознОстаток КАК СуммаРознКонечныйОстаток,
    ЦеныСрезПоследних.Цена КАК СуммаЗакуп,
    ЦеныСрезПоследних.ТипЦен КАК ТипЦен
    ИЗ
    РегистрНакопления.ОстаткиТоваровКомпании.Остатки(&Конец, ) КАК Остатки
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(, ТипЦен.Наименование = &ТипЦен) КАК ЦеныСрезПоследних
        ПО Остатки.Номенклатура = ЦеныСрезПоследних.Номенклатура
ГДЕ
    ЦеныСрезПоследних.Период МЕЖДУ &Начало И &Конец

УПОРЯДОЧИТЬ ПО
    Остатки.Номенклатура.Наименование


В таком виде остатки выводятся по одной строчке. Так получилось после того, как выкинул период и ХарактеристикаНоменклатуры
Основная теорема систематики: Новые системы плодят новые проблемы.