Имя: Пароль:
1C
1С v8
СКД Запрос к Регистру сведений Цены номенклатуры
0 КакБыНеТак
 
22.12.19
11:51
Доброго всем утра!
Который день бьюсь над проблемой:
СКД
Запрос к Регистру сведений Цены номенклатуры
Выводятся:
Номенклатура - группировка по строкам
Период - группировка по колонкам
Цена - ресурс
Вообщем кросс-таблица.

Периодичность    -  месяц

в поле Период добавление месяц сделано.периоды где не было изменений добавлены.
Цены только в периоде где были изменения. Не заполняются значениями!

Весь инет перетряхнул -  внятного решения нет!
Хелп ми плиз, коллеги!
2 Chameleon1980
 
22.12.19
15:05
3 КакБыНеТак
 
22.12.19
20:03
Вот хотелось бы получить такой результат как с остатками  регистра накопления только в регистре сведений допустим Цены номенклатуры. Если есть новая цена то она ставится , если нет, текущая продолжается даже в те дни когда нет движения по регистру.
4 КакБыНеТак
 
22.12.19
20:04
реально вообще это на регистре сведений?
5 Радим1987
 
22.12.19
20:32
(4) без проблем 2 набора (второй срез последних) соединяешь между собой по периоду и все.
6 КакБыНеТак
 
22.12.19
20:37
(5) А первая таблица тогда какая? ВСе что мне надо есть в одном регистре сведений к чему присоединять?
7 Радим1987
 
22.12.19
21:01
В первом

ВЫБРАТЬ
    0 КАК Цифра
ПОМЕСТИТЬ ВТЦифры

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    3

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    4

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    5

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    6

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    7

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    8

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    9
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КОНЕЦПЕРИОДА(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаНачала, МЕСЯЦ), МЕСЯЦ, Цифры.Цифра + ЕСТЬNULL(Цифры10.Цифра, 0) * 10 + ЕСТЬNULL(Цифры100.Цифра, 0) * 100 + ЕСТЬNULL(Цифры1000.Цифра, 0) * 1000 + ЕСТЬNULL(Цифры10000.Цифра, 0) * 10000 + ЕСТЬNULL(Цифры100000.Цифра, 0) * 100000), МЕСЯЦ), МЕСЯЦ) КАК Период
ИЗ
    ВТЦифры КАК Цифры
        ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры100
        ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&ДатаНачала, МЕСЯЦ), НАЧАЛОПЕРИОДА(&ДатаОкончания, МЕСЯЦ), МЕСЯЦ) > 99)
        ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры1000
        ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&ДатаНачала, МЕСЯЦ), НАЧАЛОПЕРИОДА(&ДатаОкончания, МЕСЯЦ), МЕСЯЦ) > 999)
        ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры10000
        ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&ДатаНачала, МЕСЯЦ), НАЧАЛОПЕРИОДА(&ДатаОкончания, МЕСЯЦ), МЕСЯЦ) > 9999)
        ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры100000
        ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&ДатаНачала, МЕСЯЦ), НАЧАЛОПЕРИОДА(&ДатаОкончания, МЕСЯЦ), МЕСЯЦ) > 99999)
        ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры10
        ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&ДатаНачала, МЕСЯЦ), НАЧАЛОПЕРИОДА(&ДатаОкончания, МЕСЯЦ), МЕСЯЦ) > 9)
ГДЕ
    КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаНачала, МЕСЯЦ), МЕСЯЦ, Цифры.Цифра + ЕСТЬNULL(Цифры10.Цифра, 0) * 10 + ЕСТЬNULL(Цифры100.Цифра, 0) * 100 + ЕСТЬNULL(Цифры1000.Цифра, 0) * 1000 + ЕСТЬNULL(Цифры10000.Цифра, 0) * 10000 + ЕСТЬNULL(Цифры100000.Цифра, 0) * 100000), МЕСЯЦ) МЕЖДУ &ДатаНачала И &ДатаОкончания

УПОРЯДОЧИТЬ ПО
    Период
/

Во втром

ВЫБРАТЬ
    &ПериодКАК Период,
    ЦеныНоменклатурыСрезПоследних.Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
            &Период,
            ) КАК ЦеныНоменклатурыСрезПоследних
8 КакБыНеТак
 
22.12.19
21:06
(7) Спасибо! Я честно говоря думал средствами СКД можно решить вопрос. ну нет так нет всмотрюсь в твой запрос
9 Радим1987
 
22.12.19
21:09
(8) Ну в связи наборов сделай соединение указав параметр (добавляется во вкладке параметры) не "Период" а что нибудь другое например "ДатаСреза"
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший