8.х Помощь с запросом

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Sol, 17 ноя 2008.

  1. TopicStarter Overlay
    Sol
    Offline

    Sol Опытный в 1С

    Регистрация:
    14 ноя 2008
    Сообщения:
    106
    Симпатии:
    0
    Баллы:
    26
    Всем доброго времени суток. Помогите разобраться с запросом.

    Код:
    "ВЫБРАТЬ
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент КАК Контрагент,
    МАКСИМУМ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток) КАК ДолгНаНачало,
    МАКСИМУМ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход) КАК Отгружено,
    СУММА(ВЫБОР
    КОГДА ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеВходящее
    ТОГДА ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов
    ИНАЧЕ 0
    КОНЕЦ) КАК ОплатаЧерезБанк,
    СУММА(ВЫБОР
    КОГДА ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.ПриходныйКассовыйОрдер
    ТОГДА ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов
    ИНАЧЕ 0
    КОНЕЦ) КАК ОплатаЧерезКассу,
    МАКСИМУМ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток) КАК ДолгНаКонец
    ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&;НачалоПериода, &;КонецПериода, , , Контрагент В ИЕРАРХИИ (&;Контрагент)) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами
    ПО ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент = ВзаиморасчетыСКонтрагентами.Контрагент
    ГДЕ
    ВзаиморасчетыСКонтрагентами.Период МЕЖДУ &;НачалоПериода И &;КонецПериода
    </span>
    СГРУППИРОВАТЬ ПО
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Контрагент,
    МАКСИМУМ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток),
    МАКСИМУМ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовПриход),
    СУММА(ВЫБОР
    КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеВходящее
    ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.СуммаВзаиморасчетов
    ИНАЧЕ 0
    КОНЕЦ),
    СУММА(ВЫБОР
    КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Регистратор ССЫЛКА Документ.ПриходныйКассовыйОрдер
    ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.СуммаВзаиморасчетов
    ИНАЧЕ 0
    КОНЕЦ),
    МАКСИМУМ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток)
    ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ОстаткиИОбороты(&;НачалоПериода, &;КонецПериода, , , Контрагент В ИЕРАРХИИ (&;Контрагент)) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов
    ПО ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Контрагент = ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Контрагент
    ГДЕ
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Период МЕЖДУ &;НачалоПериода И &;КонецПериода
    
    СГРУППИРОВАТЬ ПО
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Контрагент
    АВТОУПОРЯДОЧИВАНИЕ"
    </FONT></FONT></pre>
    Запрос должен выводить остаток долга на начало периода, сумовое выражение оказанных нами услуг,
    оплата контрагента через банк и через кассу, остаток долга на конец периода.
    Проблема в том, что когда нет оборотов в периоде, то не выводятся начальные и конечные остатки.
    Помогите, плиз!!!
  2. LordKim
    Offline

    LordKim Опытный в 1С

    Регистрация:
    11 мар 2008
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    Зачем тебе это условие?
    "ГДЕ ВзаиморасчетыСКонтрагентами.Период МЕЖДУ &;;НачалоПериода И &;;КонецПериода"


    у тебя виртуальная таблица уже ограничена этим:
    "РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&;;НачалоПериода, &;;КонецПериода, , , Контрагент В ИЕРАРХИИ (&;;Контрагент))"

    Попробуй убрать условие ГДЕ...
  3. TopicStarter Overlay
    Sol
    Offline

    Sol Опытный в 1С

    Регистрация:
    14 ноя 2008
    Сообщения:
    106
    Симпатии:
    0
    Баллы:
    26
    Поля Регистратор нет в витуальной таблице, и чтобы ограничить выборку документов-регистраторов, я накладываю условие. Возможно я что-то делаю не так, но без этого условия запрос тоже неправильно работает. Очень нужно, помогите, пожалуйста.
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    1. Поле регистратор появиться, если поставить режим дополнения.
    2. Остатки не выводься, потому что сам запрос неверный.
    Посмотри на свое условие:
    Код:
    ГДЕ
    ВзаиморасчетыСКонтрагентами.Период МЕЖДУ &НачалоПериода И &КонецПериода
    
    У тебя же отсекаются документы и если не было оборотов - остаки не покажутся! :)
    Нафига вообще это условие?

    Перепиши запрос в соответствии с указанными замечаниями - и будет тебе счастье.

    ЗЫ. Да, кстати, не очень понял, что у тебя за остатки будут выводиться, если суммы считаются только по ПКО и ППВ?
  5. LordKim
    Offline

    LordKim Опытный в 1С

    Регистрация:
    11 мар 2008
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    Регистратор появится если задать детализацию по регистратору...

    "РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&;;НачалоПериода, &;;КонецПериода, Регистратор, , Контрагент В ИЕРАРХИИ (&;;Контрагент))"

    И еще не совсем ясно зачем тебе функция Максимум...
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    На данный момент вообще непонятно, то посчитает этот запрос :)
  7. TopicStarter Overlay
    Sol
    Offline

    Sol Опытный в 1С

    Регистрация:
    14 ноя 2008
    Сообщения:
    106
    Симпатии:
    0
    Баллы:
    26
    Вообще результатом запроса должно быть следующее:
    ОстатокДолгаНаНачало | ОказаноНамиУслугИТоваровНаСумму | ОплаченоУслугИТоваровЧерезКассу | ОплаченоУслугИТоваровЧерезБанк | ОстатокДолгаНаКонец

    В общем должен быть тот же отчет "Ведомость по взаиморасчетам с контрагентами" только с разделением оплаты (банк/касса).
    Если возможно подругому, примеры приветствуются. Надо очень :unsure:

    P.S. Про режим дополнения можно поподробней.
  8. LordKim
    Offline

    LordKim Опытный в 1С

    Регистрация:
    11 мар 2008
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    Попробуй так:

    Код:
    ВЫБРАТЬ
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент КАК Контрагент,
    СУММА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток) КАК ДолгНаНачало,
    СУММА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход) КАК Отгружено,
    СУММА(ВЫБОР
    КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеВходящее
    ТОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход
    ИНАЧЕ 0
    КОНЕЦ) КАК ОплатаЧерезБанк,
    СУММА(ВЫБОР
    КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПриходныйКассовыйОрдер
    ТОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход
    ИНАЧЕ 0
    КОНЕЦ) КАК ОплатаЧерезКассу,
    СУММА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток) КАК ДолгНаКонец
    ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , Контрагент В ИЕРАРХИИ (&Контрагент)) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
    
    СГРУППИРОВАТЬ ПО
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент
    
    
  9. TopicStarter Overlay
    Sol
    Offline

    Sol Опытный в 1С

    Регистрация:
    14 ноя 2008
    Сообщения:
    106
    Симпатии:
    0
    Баллы:
    26
    Блин, не работает так :unsure:
    СУММА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток) КАК ДолгНаНачало - не должен суммировать значения, как сделать чтоб просто выводил значение не знаю.
  10. LordKim
    Offline

    LordKim Опытный в 1С

    Регистрация:
    11 мар 2008
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    А почему не должен суммировать? О_о
  11. TopicStarter Overlay
    Sol
    Offline

    Sol Опытный в 1С

    Регистрация:
    14 ноя 2008
    Сообщения:
    106
    Симпатии:
    0
    Баллы:
    26
    СуммаВзаиморасчетовНачальныйОстаток - это уже итоговое значение начального остатка.
    А если результатом запроса по одному контрагенту будет несколько строк, то это значение суммируется само с собой несколько раз. Может я и ошибаюсь в причине, но сверял с отчетом "Ведомость по взаиморасчетам" и результаты не совпадают. Ещё почему-то ошибочно выводит ДолгНаНачало и ДолгНаКонец, если в периоде были обороты, а на начало и конец остатков долга не было.
  12. LordKim
    Offline

    LordKim Опытный в 1С

    Регистрация:
    11 мар 2008
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    Не так.
    Это итог по набору измерений, строке то бишь.
    Хотя мож и неправильно считает...


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

Поделиться этой страницей