Ответ в теме: Как создать отчет для поиска последнего документа, давшего кредитовый остаток?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как создать отчет для поиска последнего документа, давшего кредитовый остаток? Ответ в теме: Как создать отчет для поиска последнего документа, давшего кредитовый остаток?

#38101
bot_avaOdin — Одинэсник
Участник

    Чтобы найти последний документ, который сформировал кредитовый остаток по счету, можно сделать так:

    1. Получить остатки по кредиту с аналитикой.
    2. Получить обороты по кредиту с регистраторами.
    3. Для каждой аналитики найти максимальную дату оборота (последний документ).
    4. Вывести итог с ссылкой на последний документ.

    Вот пример запроса с использованием временных таблиц (ПОМЕСТИТЬ после ВЫБРАТЬ), без вложенных подзапросов:

    |ВЫБРАТЬ
    | Остатки.Счет КАК Счет,
    | Остатки.Субконто1 КАК Субконто1,
    | Остатки.Субконто2 КАК Субконто2,
    | Остатки.СуммаОстаток КАК КредитовыйОстаток
    |ПОМЕСТИТЬ ВТ_КредитовыеОстатки
    |ИЗ
    | РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет = &Счет, , ) КАК Остатки
    |ГДЕ
    | Остатки.СуммаОстаток < 0
    |;
    |
    |ВЫБРАТЬ
    | Обороты.Счет КАК Счет,
    | Обороты.Период КАК Период,
    | Обороты.Регистратор КАК Документ,
    | Обороты.Субконто1 КАК Субконто1,
    | Обороты.Субконто2 КАК Субконто2
    |ПОМЕСТИТЬ ВТ_КредитовыеОбороты
    |ИЗ
    | РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНачала, &Дата, , Счет = &Счет, , , ) КАК Обороты
    |ГДЕ
    | Обороты.СуммаОборот < 0
    |;
    |
    |ВЫБРАТЬ
    | Остатки.Счет КАК Счет,
    | Остатки.Субконто1 КАК Субконто1,
    | Остатки.Субконто2 КАК Субконто2,
    | МАКСИМУМ(Обороты.Период) КАК ПоследнийПериод
    |ПОМЕСТИТЬ ВТ_ПоследнийПериод
    |ИЗ
    | ВТ_КредитовыеОстатки КАК Остатки
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_КредитовыеОбороты КАК Обороты
    | ПО Остатки.Счет = Обороты.Счет
    | И Остатки.Субконто1 = Обороты.Субконто1
    | И Остатки.Субконто2 = Обороты.Субконто2
    |ГРУППИРОВАТЬ ПО
    | Остатки.Счет,
    | Остатки.Субконто1,
    | Остатки.Субконто2
    |;
    |
    |ВЫБРАТЬ
    | Остатки.Счет КАК Счет,
    | Остатки.Субконто1 КАК Субконто1,
    | Остатки.Субконто2 КАК Субконто2,
    | Остатки.КредитовыйОстаток,
    | Обороты.Документ КАК ПоследнийДокумент,
    | Обороты.Период КАК ДатаПоследнегоДокумента
    |ИЗ
    | ВТ_КредитовыеОстатки КАК Остатки
    | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПоследнийПериод КАК ПоследнийПериод
    | ПО Остатки.Счет = ПоследнийПериод.Счет
    | И Остатки.Субконто1 = ПоследнийПериод.Субконто1
    | И Остатки.Субконто2 = ПоследнийПериод.Субконто2
    | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КредитовыеОбороты КАК Обороты
    | ПО Обороты.Счет = ПоследнийПериод.Счет
    | И Обороты.Субконто1 = ПоследнийПериод.Субконто1
    | И Обороты.Субконто2 = ПоследнийПериод.Субконто2
    | И Обороты.Период = ПоследнийПериод.ПоследнийПериод
    |
    |ГДЕ
    | Остатки.Счет = &Счет
    |
    |УПОРЯДОЧИТЬ ПО
    | Остатки.Субконто1,
    | Остатки.Субконто2
    ;

    Пояснения:

    — ВТ_КредитовыеОстатки — остатки по кредиту (отрицательные суммы).
    — ВТ_КредитовыеОбороты — обороты по кредиту (отрицательные суммы) с регистраторами.
    — ВТ_ПоследнийПериод — для каждой аналитики находим максимальный период оборота.
    — Итоговый запрос выводит остаток и последний документ, который сформировал этот остаток.

    Параметры:

    — &Дата — дата отчета (например, КонецДня(ТекущаяДата))
    — &ДатаНачала — дата начала периода оборотов (например, НачалоДня(ДатаНачалаПериода))
    — &Счет — счет для анализа

    Такой запрос легко отлаживать, он не содержит вложенных подзапросов, использует временные таблицы.

    Если нужна помощь с конкретными субконто или детализацией — уточните.

    База знаний 1С