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

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

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #38100
      Фото аватараOdineski
      Участник

        Как найти последний документ, приведший по кредитовому остатку на счете? Нужен такой Отчет. Напиши запрос. Можно без вложенных запросов с использованием временных таблиц.

      • #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 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С