Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Получение последнего документа по контрагенту

Получение последнего документа по контрагенту
Я
   MAPATNK2
 
22.11.17 - 13:46
Всем доброго дня. Мне необходимо получить в отчете долг контрагента и последний акт сверки, который был выполнен по данному контрагенту. Не подскажете, как получить этот самый, последний, документ?

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

СГРУППИРОВАТЬ ПО
    РасчетыСКонтрагентамиОстатки.Контрагент,
    РасчетыСКонтрагентамиОстатки.ДоговорКонтрагента,
    РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток,
    РасчетыСКонтрагентамиОстатки.СуммаУпрОстаток,
    АктСверкиВзаиморасчетов.СверкаСогласована,
    АктСверкиВзаиморасчетов.Ссылка
 
 
   Зуекщмшср
 
1 - 22.11.17 - 13:52
Поиск по темам этого форума тебе поможет. Было уже n-цать раз.
   MAPATNK2
 
2 - 22.11.17 - 13:57
(1) В итоге ничего стоящего
   Ёпрст
 
3 - 22.11.17 - 14:00
максимум(АктСверкиВзаиморасчетов.Ссылка)
   Ёпрст
 
4 - 22.11.17 - 14:01
ну или максимум по дате дока искать
   MAPATNK2
 
5 - 22.11.17 - 14:11
(4) Не то
   Numerus Mikhail
 
6 - 22.11.17 - 14:14
(5) почему?
   MAPATNK2
 
7 - 22.11.17 - 14:15
(6) По ссылке выводит не максимум
   MAPATNK2
 
8 - 22.11.17 - 14:15
(6) По дате ничего не выводит
   Numerus Mikhail
 
9 - 22.11.17 - 14:17
Отдельным запросом получай документ, а потом уже получай остатки и присоединяй документ
   wondkind
 
10 - 22.11.17 - 14:19
(9) поддерживаю. Так же бы сделал
 
 Рекламное место пустует
   MAPATNK2
 
11 - 22.11.17 - 14:20
(9) ВЫБРАТЬ
    РасчетыСКонтрагентамиОстатки.Контрагент,
    РасчетыСКонтрагентамиОстатки.ДоговорКонтрагента,
    РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток,
    РасчетыСКонтрагентамиОстатки.СуммаУпрОстаток,
    ВложенныйЗапрос.Ссылка,
    ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Ссылка)
ИЗ
    РегистрНакопления.РасчетыСКонтрагентами.Остатки КАК РасчетыСКонтрагентамиОстатки
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            АктСверкиВзаиморасчетов.ДоговорКонтрагента КАК ДоговорКонтрагента,
            АктСверкиВзаиморасчетов.Контрагент КАК Контрагент,
            МАКСИМУМ(АктСверкиВзаиморасчетов.Ссылка) КАК Ссылка
        ИЗ
            Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
        
        СГРУППИРОВАТЬ ПО
            АктСверкиВзаиморасчетов.ДоговорКонтрагента,
            АктСверкиВзаиморасчетов.Контрагент) КАК ВложенныйЗапрос
        ПО РасчетыСКонтрагентамиОстатки.ДоговорКонтрагента = ВложенныйЗапрос.ДоговорКонтрагента
            И РасчетыСКонтрагентамиОстатки.Контрагент = ВложенныйЗапрос.Контрагент
   wondkind
 
12 - 22.11.17 - 14:23
(11) какой вывод из этого сообщения мы должны сделать?
   MAPATNK2
 
13 - 22.11.17 - 14:36
(12) не выходит до запросом.
   DexterMorgan
 
14 - 22.11.17 - 14:37
   DexterMorgan
 
15 - 22.11.17 - 14:38
(7), (8) Ну логично, получи сначала последние даты документов сверок, а потом получи последнюю ссылку
   MAPATNK2
 
16 - 22.11.17 - 14:42
(15) не особо понятно как это работает
   MAPATNK2
 
17 - 22.11.17 - 14:45
(15) Я понимаю как это сделать со справочником и документом, но с регистром и документом так не выходит
   wondkind
 
18 - 22.11.17 - 14:45
(16)
ВЫБРАТЬ
    АктСверкиВзаиморасчетов.Ссылка КАК Ссылка,
    АктСверкиВзаиморасчетов.Контрагент КАК Контрагент,
    АктСверкиВзаиморасчетов.ДоговорКонтрагента КАК ДоговорКонтрагента
ПОМЕСТИТЬ ВТ_АктыСверки
ИЗ
    Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ
            (ВЫБРАТЬ
                АктСверкиВзаиморасчетов.Контрагент КАК Контрагент,
                АктСверкиВзаиморасчетов.ДоговорКонтрагента,
                МАКСИМУМ(АктСверкиВзаиморасчетов.Дата) КАК Дата
            ИЗ
                Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
            ГДЕ
                НЕ АктСверкиВзаиморасчетов.ПометкаУдаления
            СГРУППИРОВАТЬ ПО
                АктСверкиВзаиморасчетов.Контрагент,
                АктСверкиВзаиморасчетов.ДоговорКонтрагента) КАК ВложенныйЗапрос
        ПО
            АктСверкиВзаиморасчетов.ДоговорКонтрагента =  ВложенныйЗапрос.ДоговорКонтрагента
            И АктСверкиВзаиморасчетов.Контрагент =    ВложенныйЗапрос.Контрагент 
            И АктСверкиВзаиморасчетов.Дата = ВложенныйЗапрос.Дата
;

/////////////

ВЫБРАТЬ
    РасчетыСКонтрагентамиОстатки.Контрагент КАК Контрагент,
    РасчетыСКонтрагентамиОстатки.ДоговорКонтрагента КАК ДоговорКонтрагента,
    ЕСТЬNULL(ВТ_АктыСверки.Ссылка, ЗНАЧЕНИЕ(Документ.АктСверкиВзаиморасчетов.ПустаяСсылка)) КАК АктСверкиСсылка,
    ЕСТЬNULL(ВТ_АктыСверки.СверкаСогласована, Ложь) КАК СверкаСогласована,
    РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетовОстаток,
    РасчетыСКонтрагентамиОстатки.СуммаУпрОстаток КАК СуммаУпрОстаток
ИЗ
    РегистрНакопления.РасчетыСКонтрагентами.Остатки КАК РасчетыСКонтрагентамиОстатки
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_АктыСверки КАК ВТ_АктыСверки
        ПО РасчетыСКонтрагентамиОстатки.Контрагент = ВТ_АктыСверки.Контрагент
            И РасчетыСКонтрагентамиОстатки.ДоговорКонтрагента = ВТ_АктыСверки.ДоговорКонтрагента
   wondkind
 
19 - 22.11.17 - 14:50
(17) хоть отпишись как попробуешь
   wondkind
 
20 - 22.11.17 - 14:55
(19) и забыл ИТОГИ. Сам добавишь и должно работать лучше. Уверен на 98,6%. Хоть что-то тебе останется сделать)
   MAPATNK2
 
21 - 22.11.17 - 15:00
(20) Забили АктСверкиВзаиморасчетов.СверкаСогласована КАК СверкаСогласована, после этого пошло, итоги добавлю. Только все равно не могу разобраться в этом. Берем акт сверки взаиморасчетов без пометки удаления и группируем по макисмальной дате. Потом снова берем акт сверки связываем с полученным подзапросом в разрезе договора, контрагента и даты.... и как я понимаю, получаем последний документ(по дате) по данному контрагенту.Дальше запихиваем это счастье во временную таблицу, потом связываем эту таблицу с регистром и получаем необходимые данные. СЛОЖНА, не могу проверить на правильность. Но спасибо большое.
   wondkind
 
22 - 22.11.17 - 15:08
(21) а, да, забыл в первом запросе добавить данный реквизит документа.

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

Что именно сложно?
Почему проверить не можете? Консоль запросов в этом вам поможет.

Вот по шагам:
1. Вначале находим максимальную дату акта сверки у контрагента;
2. Далее находим сам документ с максимальной датой;
3. Помещаем это во временную таблицу для удобства работы;
4. Уже смотрим остатки и присоединяем к ним последний документ.
   MAPATNK2
 
23 - 22.11.17 - 15:13
(22) а почему в пункте 1 нельзя сразу получить ссылку?
   MAPATNK2
 
24 - 22.11.17 - 15:15
(23) Или это по тому , что группировка в 1 пункте не удастся если добавить ссылку?
   wondkind
 
25 - 22.11.17 - 15:21
(24) группировка не удастся. А искать по МАКСИМУМ(Ссылка) некорректно вообще. Вот пример: как будет определяться максимум ссылки? А если дату у документа изменили? Ссылка то останется прежней.

Правильный вариант узнать последний документ - искать по дате.

Единственная, как я думаю, возможная проблема - несколько документов с одинаковыми датой и временем.
   wondkind
 
26 - 22.11.17 - 15:23
(25) в таком случае просто задублируется запись по контрагенту/договору
   DexterMorgan
 
27 - 22.11.17 - 15:26
да ну нах, если ты не можешь понять (14) то вообще нах работать, найди че получше
   DexterMorgan
 
28 - 22.11.17 - 15:27
в (14) просто написан код, нужно только свои вт подставить
   DexterMorgan
 
29 - 22.11.17 - 15:28
(25) Ну может именно тогда максимум по ссылке подойдет?
   иубиповец
 
30 - 22.11.17 - 15:29
(21) В разрезе договора, контрагента и даты
А если сделали акт по всем договорам контрагента (не указали договор) в выборку не попадет же.
(22) Также будет проблема, если акты сверок по одному контрагенту/договору будут с одинаковой датой и временем. Подумайте над решением/обработкой таких ситуаций.
Сначала максимум по дате, получить эти документы, (1,2,10) из множества, затем максимум по ссылке:).
Какой вообще смысл разных актов сверки, на один период, вы их оба с контрагентом что ли подписали, один же акт (если уж вы к договору прицепились). т.е. или один общий в момент времени, либо много по каждому договору.
   wondkind
 
31 - 22.11.17 - 15:34
(29) именно тогда по бизнес-процессу такое не подойдёт, если только у них не всё через попу
   DexterMorgan
 
32 - 22.11.17 - 15:45
(31) В смысле? не может быть документов в одну секунду? или что? мля что за бред


Список тем форума
Рекламное место пустует  Рекламное место пустует
Прочитай, хотя бы, Митичкина "Разработка в системе 1С:Предприятие 8". Волшебник
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует