Автоматизация бизнеса

Установка, настройка, внедрение и сопровождение любых конфигураций на платформе 1С:Предприятие.

Тел: 8(985)141-74-63 Дмитрий.   
ICQ:     552-608-881
e-mail: info@programmist1c.ru

Оплата после выполнения работы.

  •   Удаленный админ
  •   Карта сайта
  •   Контакты


  • Поиск
     

    v8: Полные остатки по периоду во вложенном запросе

    Полные остатки по периоду во вложенном запросеАвтор статьи: IronDemon
    Последняя редакция №1 от 15.08.07

    Ключевые слова: запрос,остатки,полные,день,период


    Как получить остатки по периоду когда не было движения?

    Многие знают что остатки по периоду с дополнением можно получить таким запросом
    ВЫБРАТЬ
       ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.Владелец КАК Контрагент,
       ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
       ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток,
       ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период КАК Период
    ИЗ
       РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&ДатаНач, &ДатаКон, День, , ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
    ИТОГИ ПО
       ОБЩИЕ,
       Период ПЕРИОДАМИ(ДЕНЬ, &ДатаНач, &ДатаКон),
       Контрагент,
       ДоговорКонтрагента

    Но что делать когда необходимо их получить во вложенном запросе, или посчитать количество дней с отрицательными остатками?
    Предлагаю следующий вариант. Регистр сведений КурсыВалют должен быть заполнен всеми днями.

    ВЫБРАТЬ
       Дебиторка.СуммаВзаиморасчетовКонечныйОстаток КАК Долг,
       КурсыВалют.Период КАК Период,
       Дебиторка.ДоговорКонтрагента КАК ДоговорКонтрагента,
       Дебиторка.ДоговорКонтрагента.Владелец КАК Контрагент,
       ВЫБОР
           КОГДА Дебиторка.СуммаВзаиморасчетовКонечныйОстаток < 0
               ТОГДА 1
           ИНАЧЕ 0
       КОНЕЦ КАК КвоОтрицательных
    ИЗ
       РегистрСведений.КурсыВалют КАК КурсыВалют
           ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               Оборот1.Дата КАК ДатаС,
               МИНИМУМ(ВЫБОР
                       КОГДА Оборот2.Дата ЕСТЬ NULL
                           ТОГДА КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
                       ИНАЧЕ КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(Оборот2.Дата, ДЕНЬ, -1), ДЕНЬ)
                   КОНЕЦ) КАК ДатаПо,
               Оборот1.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовКонечныйОстаток,
               Оборот1.ДоговорКонтрагента КАК ДоговорКонтрагента
           ИЗ
               (ВЫБРАТЬ
                   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период КАК Дата,
                   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовКонечныйОстаток,
                   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента
               ИЗ
                   РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачалоПериода,
    &КонецПериода, День, , {(ДоговорКонтрагента.Организация).* КАК Организация, (ДоговорКонтрагента.Владелец).* КАК Контрагент, (ДоговорКонтрагента).*})
    КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты) КАК Оборот1
                   ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                       ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период КАК Дата,
                       ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента
                   ИЗ
                       РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , {(ДоговорКонтрагента.Организация).* КАК Организация, (ДоговорКонтрагента.Владелец).* КАК Контрагент, (ДоговорКонтрагента).*}) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты) КАК Оборот2
                   ПО Оборот1.Дата < Оборот2.Дата
                       И Оборот1.ДоговорКонтрагента = Оборот2.ДоговорКонтрагента
           
           СГРУППИРОВАТЬ ПО
               Оборот1.Дата,
               Оборот1.СуммаВзаиморасчетовКонечныйОстаток,
               Оборот1.ДоговорКонтрагента) КАК Дебиторка
           ПО (КурсыВалют.Период МЕЖДУ Дебиторка.ДатаС И Дебиторка.ДатаПо)
    ГДЕ
       КурсыВалют.Период МЕЖДУ &НачалоПериода И &КонецПериода
       И КурсыВалют.Валюта = &Валюта
    ИТОГИ
       СУММА(Долг),
       СУММА(КвоОтрицательных)
    ПО
       ОБЩИЕ,
       Контрагент,
       ДоговорКонтрагента,
       Период
    АВТОУПОРЯДОЧИВАНИЕ


    Заметьте, что в итогах для слова Период нет дополнения.
    21.02.18 | 10:31


    30.11.16 | 20:25


    28.11.16 | 09:22


    26.11.16 | 08:19


    22.11.16 | 20:17


    19.11.16 | 10:14


    18.11.16 | 20:09




    Внедрение 1С Автоматизация 1С Доработка 1С Сопровождение 1С Обслуживание 1С Программирование 1С 8 Hастройка 1С Карта сайта Контакты