Имя: Пароль:
1C
 
Остатки номенклатуры на разные даты в запросе
,
0 mastodont
 
23.09.20
14:49
В запросе есть ВТ
Номенклатура Дата
надо для каждой строки получить остатки этой номенклатуры на эту дату...
я правильно понимаю, что "хорошего" способа это сделать нет?

нашел тему: Остатки на разные даты в запросе.
но там ничего особо не предложили...
разброс дат большой (несколько лет), так что собирать таблицу на все даты не вариант.

Кто что может посоветовать?

Пока есть вариант выгрузить ВТ в ТЗ, получить остатки в цикле по строкам, и потом обратно в запрос передать получившуюся таблицу...
Или попробовать воспользоваться функцией общего модуля для получения остатков. Может заодно кто подскажет в УТ11 есть какая-нибудь стандартная функция получения свободного остатка?
1 azernot
 
23.09.20
14:54
В СКД через несколько связанных наборов данных.
2 mastodont
 
23.09.20
15:18
(1) а можно поподробнее?
3 Делопроизводитель
 
23.09.20
15:56
Что значит "хорошего"?
4 Делопроизводитель
 
23.09.20
16:07
(0) Как-то так

ВЫБРАТЬ
    АвансовыйОтчетТовары.Номенклатура,
    НАЧАЛОПЕРИОДА(АвансовыйОтчетТовары.Ссылка.Дата, ДЕНЬ) КАК Дата
ПОМЕСТИТЬ втНомДата
ИЗ
    Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчетТовары
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    взРезультат.Номенклатура,
    взРезультат.КоличествоОстаток
ИЗ
    (ВЫБРАТЬ
        втНомДата.Номенклатура КАК Номенклатура,
        СУММА(ЕСТЬNULL(втОбороты.КоличествоОборот, 0)) КАК КоличествоОстаток
    ИЗ
        втНомДата КАК втНомДата
            ЛЕВОЕ СОЕДИНЕНИЕ втОбороты КАК втОбороты
            ПО втНомДата.Номенклатура = втОбороты.Номенклатура
                И втНомДата.Дата >= втОбороты.Период
    
    СГРУППИРОВАТЬ ПО
        втНомДата.Номенклатура) КАК взРезультат
5 Eiffil123
 
23.09.20
16:10
(0) получить остатки по номенклатуре на самую раннюю дату "объединить все" с приходом/расходом по датам в разрезе номенклатур. Далее твою табличку (Номенклатура,Дата) соединить с тем, что получилось по условию, что Т1.Дата <= Т2.Дата, полученное сгруппировать, если надо.
6 sqr4
 
23.09.20
16:21
(0) По факту остатки уже есть в таблице ОстаткиИОбороты, нужно только взять необходимые даты
7 azernot
 
23.09.20
16:43
(6) Остатки и обороты не содержит строк с остатками на даты, не являющиеся границами, за которые не было движений.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn