Имя: Пароль:
1C
 
Остаток на не константную дату (из реквизита справочника, значение РС и т.п.)
Ø (piter3 10.09.2019 10:02)
0 Bro2
 
10.09.19
09:41
Продолжаю изучать 1С, смотрю виртуальные таблицы остатков, пытаюсь сделать запрос:

Запрос = Новый Запрос;
Запрос.Текст =
        "ВЫБРАТЬ
        |    Товар.МояДата КАК МояДата,
        |    Товар.Цена КАК Цена,
        |    ДвиженияОстатков.ЧислоОстаток КАК Число
        |ИЗ
        |    Справочник.Товар КАК Тов
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДвиженияОстатков.Остатки(Тов.МояДата) КАК ДвиженияОстатков
        |        ПО ДвиженияОстатков.Товар = Тов.Ссылка"
        ;
        
РезультатЗапроса = Запрос.Выполнить();

Говорит Неверные параметры (с константой все ОК). В принципе ожидаемо в table-inlined функциях в SQL та же ситуация (можно только константы передавать). Но в SQL есть workaround'ы вместо JOIN (СОЕДИНЕНИЕ) можно использовать APPLY, и тогда там можно использовать колонки таблиц (с оговорками, но все же, собственно в этом все отличие APPLY от JOIN).

Понятно что 1С важно именно константное значение чтобы использовать промежуточные итоги (со значениями колонок непонятно как это делать). Но вопрос какой workaround в такой ситуации?

PS: пожалуйста без холиваров, интересует именно конкретный вопрос.
1 ДенисЧ
 
10.09.19
09:46
Потому что apply есть только в МС. В оракле, дби и посгрессе - это выглядит по-другому.
2 sqr4
 
10.09.19
09:47
Получаешь таблицу дат грузишь в ВТ, Затем получаешь остатки по датам через виртуальную таблицу остатки и обороты с периодичностью день. Соединяешь со своей таблицей товар
3 Bro2
 
10.09.19
09:47
(1) И в Oracle и в PostgreSQL есть LATERAL JOIN'ы, что тоже самое что APPLY. Плюс оракл поддерживает и APPLY синтаксис. DB2 уверен тоже.
4 sqr4
 
10.09.19
09:48
Хотя тебе можно сразу связаться с таблицей остатков и оборотов с переодичностью день. Т.к в 1с ты профан
5 ДенисЧ
 
10.09.19
09:51
(3) Они _разные_ в каждом случае. Такое слово понятно?
6 Bro2
 
10.09.19
09:53
(2) Затем получаешь остатки по датам через виртуальную таблицу остатки и обороты с периодичностью день.

А вот тут можно подробнее? Какое начало и окончание периода брать? И она же на все даты в этом диапазоне рассчитает. И что делать если остатки на время надо?
7 sqr4
 
10.09.19
09:53
(5) нет ему не понятно, ему нужно почитать статью, что такое регистры накопления.
8 Bro2
 
10.09.19
09:55
(5) Так в этом же и смысл APPLY. Что они разные. Понятно что если остатки нужны на одну дату, то и проблем нет.
9 sqr4
 
10.09.19
09:56
(6) ты и сам понял, что дальше делать.
МОжешь также вот с этим ознакомиться, я в тебя верю
http://catalog.mista.ru/public/201526/
10 sqr4
 
10.09.19
09:57
(6) В любом случае просто, это не делается как в Фузине, можешь смело ляпать в следующую статейку.
11 sqr4
 
10.09.19
10:01
и призываю H A D G E H O G s чтобы он заблочил еще одни вброс
12 Bro2
 
10.09.19
10:01
(9) Это тут причем. То что вы кинули оконными функциями гораздо быстрее и проще делается. А я сейчас про APPLY спрашивал.
В любом случае, ок, спасибо. Тему можно закрывать.