|
Найти первую неоплаченную накладную одним запросом УТ 10.3 | ☑ | ||
---|---|---|---|---|
0
Alexprimer
01.02.13
✎
08:49
|
Подскажите, можно ли одним запросом найти первую не оплаченную накладную(дату).
У меня пока идея: Взять остатки обороты и после обходом в цикле вычислить не оплаченную накладную. |
|||
1
Cube
01.02.13
✎
08:51
|
Можно
|
|||
2
Alexprimer
01.02.13
✎
09:47
|
Кто сделал по другому?
ВЫБРАТЬ НАЧАЛОПЕРИОДА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период, ДЕНЬ) КАК Дата, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента КАК Договор, СУММА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток) КАК Долг ПОМЕСТИТЬ Взаиморасчеты ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(, , Регистратор, , ДоговорКонтрагента = &Договор) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты СГРУППИРОВАТЬ ПО НАЧАЛОПЕРИОДА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период, ДЕНЬ), ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВложенныйЗапрос.Дата, ВложенныйЗапрос.Договор ПОМЕСТИТЬ Переплата ИЗ (ВЫБРАТЬ МАКСИМУМ(Взаиморасчеты.Дата) КАК Дата, Взаиморасчеты.Договор КАК Договор ИЗ Взаиморасчеты КАК Взаиморасчеты ГДЕ Взаиморасчеты.Долг <= 0 СГРУППИРОВАТЬ ПО Взаиморасчеты.Договор) КАК ВложенныйЗапрос ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МИНИМУМ(ВложенныйЗапрос.ДатаДолга) КАК ДатаДолга ИЗ ( ВЫБРАТЬ ВложенныйЗапрос.ДатаДолга КАК ДатаДолга ИЗ (ВЫБРАТЬ Долги.Дата КАК ДатаДолга, ЕСТЬNULL(Переплата.Дата, &ПустаяДата) КАК ДатаПереплаты ИЗ (ВЫБРАТЬ Взаиморасчеты.Дата КАК Дата, Взаиморасчеты.Договор КАК Договор ИЗ Взаиморасчеты КАК Взаиморасчеты ГДЕ Взаиморасчеты.Долг > 0) КАК Долги ЛЕВОЕ СОЕДИНЕНИЕ Переплата КАК Переплата ПО Долги.Договор = Переплата.Договор) КАК ВложенныйЗапрос ГДЕ ВложенныйЗапрос.ДатаПереплаты < ВложенныйЗапрос.ДатаДолга ) КАК ВложенныйЗапрос |
|||
3
Alexprimer
01.02.13
✎
09:51
|
Кто сделал красивей? Поделитесь плиз?
|
|||
4
teapot123
01.02.13
✎
09:53
|
остатки по РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов
|
|||
5
pessok
01.02.13
✎
10:09
|
+(4) притом ПЕРВЫЕ 1 и порядок по дате
|
|||
6
ВалераОшкин
01.02.13
✎
10:13
|
(0) Сравни СуммуДокумента с ОстаткомЗадолженности по документу. Если суммы равны - значит ни разу не платили
|
|||
7
Alexprimer
01.02.13
✎
10:21
|
Так?
ВЫБРАТЬ МИНИМУМ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Дата) КАК ДокументРасчетовСКонтрагентомДата ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(&Дата, ДоговорКонтрагента = &Договор) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки ГДЕ ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток > 0 |
|||
8
pessok
01.02.13
✎
10:23
|
(7) ВЫБРАТЬ ПЕРВЫЕ 1
УПОРЯДОЧИТЬ ПО ДокументРасчетовСКонтрагентомДата.Дата ВОЗР |
|||
9
pessok
01.02.13
✎
10:24
|
(7) с минимумом, скорее всего, работать будет дольше
|
|||
10
Alexprimer
01.02.13
✎
10:25
|
наоборот
|
|||
11
pessok
01.02.13
✎
10:29
|
(10) с минимумом 0.03 сек, с упорядочивание 0.02 сек. решай сам
|
|||
12
Alexprimer
01.02.13
✎
11:49
|
когда таблица не большая разницы нет, но когда она побольше быстрей отрабатывает группировка
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |