![]() |
![]() |
![]() |
|
запрос. найти посл. поступление! | ☑ | ||
---|---|---|---|---|
0
zippygrill
22.11.12
✎
14:44
|
в продолжение этой темы v8: v8: как передать при левом соединении параметр &Номенклатура во временные таблицы? которую можно закрыть.
окончательный запрос, а результат выводит более одной поступлении -> https://dl.dropbox.com/u/9627383/Screens/результатПослПрихода.jpg вроде по дате запрос выбрал последние 2 документы. а вот по моментуВремени нет. ВЫБРАТЬ ТоварыВНТТОстаткиИОбороты.Номенклатура, ТоварыВНТТОстаткиИОбороты.КоличествоПриход ПОМЕСТИТЬ втОборот ИЗ РегистрНакопления.ТоварыВНТТ.ОстаткиИОбороты( НАЧАЛОПЕРИОДА(&НачПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонПериода, ДЕНЬ), Авто, , ВЫБОР КОГДА &Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ТОГДА Номенклатура В ИЕРАРХИИ (&Номенклатура) ИНАЧЕ ИСТИНА КОНЕЦ) КАК ТоварыВНТТОстаткиИОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПоступлениеТоваровУслугВНТТТовары.Ссылка, ПоступлениеТоваровУслугВНТТТовары.Ссылка.Дата КАК Дата, ПоступлениеТоваровУслугВНТТТовары.Ссылка.МоментВремени, ПоступлениеТоваровУслугВНТТТовары.Номенклатура, ПоступлениеТоваровУслугВНТТТовары.СерияНоменклатуры ПОМЕСТИТЬ втПТУВНТТ ИЗ Документ.ПоступлениеТоваровУслугВНТТ.Товары КАК ПоступлениеТоваровУслугВНТТТовары ГДЕ ПоступлениеТоваровУслугВНТТТовары.Номенклатура В (ВЫБРАТЬ втОборот.Номенклатура ИЗ втОборот КАК втОборот) И ПоступлениеТоваровУслугВНТТТовары.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НачПериода, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонПериода, ДЕНЬ) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МАКСИМУМ(втПТУВНТТ.Дата) КАК Дата, втПТУВНТТ.Номенклатура ПОМЕСТИТЬ втПослПриходДата ИЗ втПТУВНТТ КАК втПТУВНТТ СГРУППИРОВАТЬ ПО втПТУВНТТ.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втПТУВНТТ.МоментВремени, втПТУВНТТ.Дата ПОМЕСТИТЬ втМоментВремени ИЗ втПослПриходДата КАК втПослПриходДата ЛЕВОЕ СОЕДИНЕНИЕ втПТУВНТТ КАК втПТУВНТТ ПО втПослПриходДата.Дата = втПТУВНТТ.Дата И втПослПриходДата.Номенклатура = втПТУВНТТ.Номенклатура СГРУППИРОВАТЬ ПО втПТУВНТТ.Дата, втПТУВНТТ.МоментВремени ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втПТУВНТТ.Номенклатура, втМоментВремени.МоментВремени, втПТУВНТТ.Ссылка ПОМЕСТИТЬ втПослПриход ИЗ втМоментВремени КАК втМоментВремени ЛЕВОЕ СОЕДИНЕНИЕ втПТУВНТТ КАК втПТУВНТТ ПО втМоментВремени.МоментВремени = втПТУВНТТ.МоментВремени СГРУППИРОВАТЬ ПО втМоментВремени.МоментВремени, втПТУВНТТ.Номенклатура, втПТУВНТТ.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втОборот.Номенклатура, втПослПриход.Ссылка, втОборот.КоличествоПриход ИЗ втОборот КАК втОборот ЛЕВОЕ СОЕДИНЕНИЕ втПослПриход КАК втПослПриход ПО втОборот.Номенклатура = втПослПриход.Номенклатура |
|||
1
zippygrill
22.11.12
✎
14:50
|
последние 2 документа имею ввиду док 633 и 634 на скрине.
|
|||
2
zippygrill
22.11.12
✎
15:00
|
и groovy тоже мимо прошел.
|
|||
3
zippygrill
22.11.12
✎
15:09
|
на первую ссылку можно время не терять и не кликать.
|
|||
4
zippygrill
22.11.12
✎
15:25
|
какие-нибудь подсказки?
|
|||
5
zippygrill
22.11.12
✎
15:55
|
,
|
|||
6
palpetrovich
22.11.12
✎
15:56
|
сразу как-то напрашивается "выбрать первые 1, упорядочить по дата убыв" :)
|
|||
7
zippygrill
22.11.12
✎
15:58
|
(6) где имено? в какой вт?
|
|||
8
palpetrovich
22.11.12
✎
16:03
|
я запрос не смотрел, ответ на сабж в теме:
ВЫБРАТЬ ПЕРВЫЕ 1 ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ГДЕ ПоступлениеТоваровУслугТовары.Номенклатура = &Номенклатура УПОРЯДОЧИТЬ ПО Ссылка УБЫВ |
|||
9
palpetrovich
22.11.12
✎
16:04
|
"Ссылка УБЫВ" читать как
"ПоступлениеТоваровУслугТовары.Ссылка.Дата УБЫВ" :) |
|||
10
Serginio1
22.11.12
✎
16:05
|
Еще раз
смотри v8: Подзапросы с Выбрать Первые 40 пост. Сначала во временную таблицу помещаешь все документы с максимальной датой и индексируешь так таблицу что бы сортировка в выбрать первые была например по моменту времени с убыванием |
|||
11
zippygrill
22.11.12
✎
16:07
|
(8)(9) все это в первом классе прошел :) не проблема получить У ОДНОЙ номенклатуры посл.приход. тут их много :)
|
|||
12
zippygrill
22.11.12
✎
16:11
|
(10) ну я вот это делаю в 3 таблицы(втПослПриходДата), группировка по номенклатуры и макс по дате. только без индексов
|
|||
13
zippygrill
22.11.12
✎
16:12
|
(10) немножко не понял "индексируешь так таблицу что бы сортировка в выбрать первые была например по моменту времени с убыванием" это как? просто индексировать поля, вырать 1 и сортировка по увыб?
|
|||
14
palpetrovich
22.11.12
✎
16:13
|
(11) ну дык, наверное тогда надо как-то точнее тему обзывать?
зы: может-же такое случиться, что не все следят за твоими темами... ;) |
|||
15
zippygrill
22.11.12
✎
16:15
|
(14) а в заголовок темы не написано что одна номенклатура :)
|
|||
16
Serginio1
22.11.12
✎
16:16
|
Сдлай одну временную таблцу после соединения с макс датой
поля ссылка,Номенклатура,МоментВремени С индексом по этим полям Обзовем эту таблицу ВЫБРАТЬ РеализацияТоваровУслугТовары.Ссылка КАК Ссылка, РеализацияТоваровУслугТовары.Номенлатура КАК Номенлатура ИЗ РеализацияТоваровУслугТовары КАК РеализацияТоваровУслугТовары ГДЕ (РеализацияТоваровУслугТовары.Ссылка, РеализацияТоваровУслугТовары.Номенлатура) В (ВЫБРАТЬ ПЕРВЫЕ 1 док.Ссылка, док.НоменлатураКАК НомерСтроки ИЗ РеализацияТоваровУслугТовары КАК Док ГДЕ Док.Ссылка =РеализацияТоваровУслугТовары.Ссылка и Док.Номенклатура=РеализацияТоваровУслугТовары.Номенлатура УПОРЯДОЧИТЬ ПО Док.МоментВремени УБЫВ) УПОРЯДОЧИТЬ ПО МоментВремени |
|||
17
Serginio1
22.11.12
✎
16:17
|
Обзовем эту временную таблицу РеализацияТоваровУслугТовары
|
|||
18
palpetrovich
22.11.12
✎
16:19
|
(15) если быть уж сосвем занудой, то запрос по заголовку темы еще больше упростится :)
И еще, может пересмотреть видинее решения задачи (я ее не знаю). К примеру для решения задачи "найти цену последненго прихда" - (8) вполне подходит (в приполученииданных) |
|||
19
Serginio1
22.11.12
✎
16:23
|
Вот эту таблицу
ВЫБРАТЬ втПТУВНТТ.Ссылка, втПТУВНТТ.Номенклатура, втПТУВНТТ.МоментВремени ПОМЕСТИТЬ РеализацияТоваровУслугТовары ИЗ втПослПриходДата КАК втПослПриходДата ЛЕВОЕ СОЕДИНЕНИЕ втПТУВНТТ КАК втПТУВНТТ ПО втПослПриходДата.Дата = втПТУВНТТ.Дата И втПослПриходДата.Номенклатура = втПТУВНТТ.Номенклатура ИНДЕКСИРОВАТЬ ПО Ссылка, Номенклатура, МоментВремени Для упрощения. На самом деле ты ее можешь сделать сразу объединением поступления с поступление, номенклатурой с максимальным временем прихода |
|||
20
zippygrill
22.11.12
✎
16:34
|
ВЫБРАТЬ
втПТУВНТТ.Ссылка, втПТУВНТТ.Номенклатура, втПТУВНТТ.МоментВремени ПОМЕСТИТЬ РеализацияТоваровУслугТовары ИЗ втПослПриходДата КАК втПослПриходДата ЛЕВОЕ СОЕДИНЕНИЕ втПТУВНТТ КАК втПТУВНТТ ПО втПослПриходДата.Дата = втПТУВНТТ.Дата И втПослПриходДата.Номенклатура = втПТУВНТТ.Номенклатура ИНДЕКСИРОВАТЬ ПО Ссылка, Номенклатура, МоментВремени //////////////////// ВЫБРАТЬ РеализацияТоваровУслугТовары.Ссылка КАК Ссылка, РеализацияТоваровУслугТовары.Номенлатура КАК Номенлатура ИЗ РеализацияТоваровУслугТовары КАК РеализацияТоваровУслугТовары ГДЕ (РеализацияТоваровУслугТовары.Ссылка, РеализацияТоваровУслугТовары.Номенлатура) В (ВЫБРАТЬ ПЕРВЫЕ 1 док.Ссылка, док.НоменлатураКАК НомерСтроки ИЗ РеализацияТоваровУслугТовары КАК Док ГДЕ Док.Ссылка =РеализацияТоваровУслугТовары.Ссылка и Док.Номенклатура=РеализацияТоваровУслугТовары.Номенлатура УПОРЯДОЧИТЬ ПО Док.МоментВремени УБЫВ) УПОРЯДОЧИТЬ ПО МоментВремени |
|||
21
Serginio1
22.11.12
✎
16:36
|
Ну вместо док.НоменлатураКАК НомерСтроки
док.Номенлатура КАК Номенлатура или без как |
|||
22
zippygrill
22.11.12
✎
16:37
|
сейчас я склею и остальное.
|
|||
23
samozvanec
22.11.12
✎
16:44
|
(0) выбираешь номенклатуру, выбираешь документы реализации с этой номенклатурой, группируешь по номенклатуре и максимуму Документ.Ссылка
|
|||
24
Serginio1
22.11.12
✎
16:45
|
(20) Я из 19 Группировать убрал, а нужно, т.к. в документе может быть несколько номенлатур.
Добаввь группировать СГРУППИРОВАТЬ ПО втМоментВремени.МоментВремени, втПТУВНТТ.Номенклатура, втПТУВНТТ.Ссылка |
|||
25
samozvanec
22.11.12
✎
16:46
|
(23) а еще прикольней с виртуальных таблиц регистров выбирать регистратора вместо документов
|
|||
26
zippygrill
22.11.12
✎
16:50
|
(23) а не слишком просто это?
|
|||
27
zippygrill
22.11.12
✎
16:53
|
(25) у меня номенклатура собирается как из оборотов так из остатков. все знаем что Регистратор у остатков нет.
|
|||
28
zippygrill
22.11.12
✎
16:55
|
как-то не получается наложить это условие
ГДЕ (РеализацияТоваровУслугТовары.Ссылка, РеализацияТоваровУслугТовары.Номенлатура) В (ВЫБРАТЬ ПЕРВЫЕ 1 док.Ссылка, док.НоменлатураКАК НомерСтроки ИЗ РеализацияТоваровУслугТовары КАК Док ГДЕ Док.Ссылка =РеализацияТоваровУслугТовары.Ссылка и Док.Номенклатура=РеализацияТоваровУслугТовары.Номенлатура УПОРЯДОЧИТЬ ПО Док.МоментВремени УБЫВ) нельзя использовать Упорядочивание ...... |
|||
29
Serginio1
22.11.12
✎
16:57
|
Тогда Упорядочить по Док.ссылка
|
|||
30
zippygrill
22.11.12
✎
16:59
|
(29) да еще ругается что МоментВремени имеет составной тип и нельзя индексировать
|
|||
31
Serginio1
22.11.12
✎
16:59
|
Должно быть все . Покажи полностью запрос
|
|||
32
Serginio1
22.11.12
✎
17:00
|
Тогда без момента времени а сортируй по Ссылке.
|
|||
33
samozvanec
22.11.12
✎
17:02
|
(27) ну возьми регистратор из оборотов, а номенклатуру - откуда хочешь
|
|||
34
Serginio1
22.11.12
✎
17:06
|
А вообще упорядочивать по моментуВремени должна
|
|||
35
zippygrill
22.11.12
✎
17:08
|
ВЫБРАТЬ
ТоварыВНТТОстаткиИОбороты.Номенклатура, ТоварыВНТТОстаткиИОбороты.КоличествоПриход ПОМЕСТИТЬ втОборот ИЗ РегистрНакопления.ТоварыВНТТ.ОстаткиИОбороты( НАЧАЛОПЕРИОДА(&НачПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонПериода, ДЕНЬ), Авто, , ВЫБОР КОГДА &Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ТОГДА Номенклатура В ИЕРАРХИИ (&Номенклатура) ИНАЧЕ ИСТИНА КОНЕЦ) КАК ТоварыВНТТОстаткиИОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПоступлениеТоваровУслугВНТТТовары.Ссылка, ПоступлениеТоваровУслугВНТТТовары.Ссылка.Дата КАК Дата, ПоступлениеТоваровУслугВНТТТовары.Ссылка.МоментВремени, ПоступлениеТоваровУслугВНТТТовары.Номенклатура, ПоступлениеТоваровУслугВНТТТовары.СерияНоменклатуры ПОМЕСТИТЬ втПТУВНТТ ИЗ Документ.ПоступлениеТоваровУслугВНТТ.Товары КАК ПоступлениеТоваровУслугВНТТТовары ГДЕ ПоступлениеТоваровУслугВНТТТовары.Номенклатура В (ВЫБРАТЬ втОборот.Номенклатура ИЗ втОборот КАК втОборот) И ПоступлениеТоваровУслугВНТТТовары.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НачПериода, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонПериода, ДЕНЬ) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МАКСИМУМ(втПТУВНТТ.Дата) КАК Дата, втПТУВНТТ.Номенклатура, втПТУВНТТ.Ссылка, втПТУВНТТ.МоментВремени ПОМЕСТИТЬ втМаксДатаПТУ ИЗ втПТУВНТТ КАК втПТУВНТТ СГРУППИРОВАТЬ ПО втПТУВНТТ.Номенклатура, втПТУВНТТ.Ссылка, втПТУВНТТ.МоментВремени ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втМаксДатаПТУ.Ссылка КАК Ссылка, втМаксДатаПТУ.Номенклатура КАК Номенклатура, втМаксДатаПТУ.МоментВремени ПОМЕСТИТЬ втИндекс ИЗ втМаксДатаПТУ КАК втМаксДатаПТУ ИНДЕКСИРОВАТЬ ПО Номенклатура, Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втИндекс.Ссылка, втИндекс.Номенклатура ИЗ втИндекс КАК втИндекс УПОРЯДОЧИТЬ ПО втИндекс.МоментВремени |
|||
36
Serginio1
22.11.12
✎
17:11
|
Да я тебя не тот запрос просил
ВЫБРАТЬ втМаксДатаПТУ.Ссылка КАК Ссылка, втМаксДатаПТУ.Номенлатура КАК Номенлатура ИЗ втМаксДатаПТУ КАК втМаксДатаПТУ ГДЕ (втМаксДатаПТУ.Ссылка, втМаксДатаПТУ.Номенлатура) В (ВЫБРАТЬ ПЕРВЫЕ 1 док.Ссылка, док.НоменлатураКАК НомерСтроки ИЗ втМаксДатаПТУ КАК Док ГДЕ Док.Ссылка =РеализацияТоваровУслугТовары.Ссылка и Док.Номенклатура=РеализацияТоваровУслугТовары.Номенлатура УПОРЯДОЧИТЬ ПО Док.МоментВремени УБЫВ) УПОРЯДОЧИТЬ ПО МоментВремени |
|||
37
Serginio1
22.11.12
✎
17:13
|
Веренее вместо втМаксДатаПТУ втИндекс
ВЫБРАТЬ втИндекс.Ссылка КАК Ссылка, втИндекс.Номенлатура КАК Номенлатура ИЗ втИндекс КАК втИндекс ГДЕ (втИндекс.Ссылка, втИндекс.Номенлатура) В (ВЫБРАТЬ ПЕРВЫЕ 1 док.Ссылка, док.Номенлатура КАК НомерСтроки ИЗ втИндексКАК Док ГДЕ Док.Ссылка =втИндекс.Ссылка и Док.Номенклатура=втИндекс.Номенлатура УПОРЯДОЧИТЬ ПО Док.МоментВремени УБЫВ) УПОРЯДОЧИТЬ ПО МоментВремени |
|||
38
zippygrill
22.11.12
✎
17:18
|
(37) ничего не понял. как это вместо?
|
|||
39
Serginio1
22.11.12
✎
17:21
|
Вместо
ВЫБРАТЬ втИндекс.Ссылка, втИндекс.Номенклатура ИЗ втИндекс КАК втИндекс УПОРЯДОЧИТЬ ПО втИндекс.МоментВремени вставь ВЫБРАТЬ втИндекс.Ссылка КАК Ссылка, втИндекс.Номенлатура КАК Номенлатура ИЗ втИндекс КАК втИндекс ГДЕ (втИндекс.Ссылка, втИндекс.Номенлатура) В (ВЫБРАТЬ ПЕРВЫЕ 1 док.Ссылка, док.Номенлатура КАК НомерСтроки ИЗ втИндексКАК Док ГДЕ Док.Ссылка =втИндекс.Ссылка и Док.Номенклатура=втИндекс.Номенлатура УПОРЯДОЧИТЬ ПО Док.МоментВремени УБЫВ) УПОРЯДОЧИТЬ ПО МоментВремени |
|||
40
Serginio1
22.11.12
✎
17:23
|
Если будет ругаться на
УПОРЯДОЧИТЬ ПО Док.МоментВремени УБЫВ поставь УПОРЯДОЧИТЬ ПО Док.Ссылка УБЫВ либо можешь убрать упорядочивание или вставить свое |
|||
41
zippygrill
22.11.12
✎
17:27
|
||||
42
Serginio1
22.11.12
✎
17:32
|
Вместо Док.ссылка, напиши Док.ссылка как ссылка
Попробуй обойтись без Упорядочить. Я тебе давал ссылки на рабочий код. |
|||
43
Serginio1
22.11.12
✎
17:34
|
Интересно а такой код у тебя проходит?
ВЫБРАТЬ РеализацияТоваровУслугТовары.Ссылка КАК Ссылка, РеализацияТоваровУслугТовары.НомерСтроки КАК НомерСтроки, РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата, РеализацияТоваровУслугТовары.Сумма КАК Сумма, РеализацияТоваровУслугТовары.Количество КАК Количество ПОМЕСТИТЬ РеализацияТоваровУслугТовары ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ ДАТАВРЕМЯ(2011, 1, 1) И ДАТАВРЕМЯ(2011, 8, 16) + Code ИНДЕКСИРОВАТЬ ПО Ссылка, Сумма, Количество ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РеализацияТоваровУслугТовары.Ссылка КАК Ссылка, РеализацияТоваровУслугТовары.НомерСтроки КАК НомерСтроки, РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата ИЗ РеализацияТоваровУслугТовары КАК РеализацияТоваровУслугТовары ГДЕ (РеализацияТоваровУслугТовары.Ссылка, РеализацияТоваровУслугТовары.НомерСтроки) В (ВЫБРАТЬ ПЕРВЫЕ 1 Док.Ссылка, Док.НомерСтроки КАК НомерСтроки ИЗ РеализацияТоваровУслугТовары КАК Док ГДЕ Док.Ссылка = РеализацияТоваровУслугТовары.Ссылка УПОРЯДОЧИТЬ ПО Док.Сумма УБЫВ, Док.Количество УБЫВ) УПОРЯДОЧИТЬ ПО Дата |
|||
44
zippygrill
22.11.12
✎
17:35
|
(43) посл. раз не проходил по причине что нельзя индексировать МоментВРемени
|
|||
45
zippygrill
22.11.12
✎
17:37
|
а также по той ж ошибки из скрина
|
|||
46
Serginio1
22.11.12
✎
17:39
|
Я тебя спросил про то проходит у тебя запрос в 43?
Кстати достаточно одного условия ГДЕ Док.Номенклатура=втИндекс.Номенлатура |
|||
47
Serginio1
22.11.12
✎
17:41
|
И у тебя упорядочивание по чему? Неполная картинка
|
|||
48
Serginio1
22.11.12
✎
17:43
|
Так должен выглядеть запрос
ВЫБРАТЬ втИндекс.Ссылка КАК Ссылка, втИндекс.Номенлатура КАК Номенлатура ИЗ втИндекс КАК втИндекс ГДЕ (втИндекс.Ссылка, втИндекс.Номенлатура) В (ВЫБРАТЬ ПЕРВЫЕ 1 док.Ссылка, док.Номенлатура КАК НомерСтроки ИЗ втИндексКАК Док ГДЕ Док.Номенклатура=втИндекс.Номенлатура УПОРЯДОЧИТЬ ПО Док.МоментВремени УБЫВ) УПОРЯДОЧИТЬ ПО МоментВремени |
|||
49
zippygrill
22.11.12
✎
17:46
|
||||
50
Serginio1
22.11.12
✎
17:48
|
Убери
УПОРЯДОЧИТЬ ПО Док.МоментВремени УБЫВ на УПОРЯДОЧИТЬ ПО Док.Ссылка УБЫВ |
|||
51
Serginio1
22.11.12
✎
17:49
|
Еще раз 43 у тебя проходит?
|
|||
52
zippygrill
22.11.12
✎
17:49
|
(50) тоже самое. уже пробовал
|
|||
53
zippygrill
22.11.12
✎
17:49
|
(51) нет не проходит. по той ж ошибки
|
|||
54
Serginio1
22.11.12
✎
17:51
|
А вез конструктора?
|
|||
55
zippygrill
22.11.12
✎
17:52
|
(54) и без тоже :)
|
|||
56
Serginio1
22.11.12
✎
17:55
|
А у тебя локальная база?
|
|||
57
Serginio1
22.11.12
✎
17:55
|
Убери упорядочивание
|
|||
58
zippygrill
22.11.12
✎
18:00
|
sql на другом сервере а вот сервер да локальный.
|
|||
59
zippygrill
22.11.12
✎
18:01
|
короче результат х*йня полная.
|
|||
60
Serginio1
22.11.12
✎
18:08
|
Да на локальной базе не проходит.
Тогда делай через итоги по номнклатуре с сортировкой по моменту времени и уже из результата отбирай первый. На SQL у меня такой запрос идет на ура |
|||
61
zippygrill
22.11.12
✎
18:34
|
сейчас я в другой базе(sql-ная) попробую
|
|||
62
zippygrill
22.11.12
✎
18:41
|
(61) + нет не проходит
|
|||
63
zippygrill
22.11.12
✎
18:42
|
(60) а разве в временной таблицы можно упорядочить?
|
|||
64
Serginio1
22.11.12
✎
18:53
|
А ты не во временной таблице а в подзапросе с Выбрать Первые 1
|
|||
65
Serginio1
22.11.12
✎
18:54
|
А версия 1С какая?
|
|||
66
Serginio1
22.11.12
✎
18:55
|
Временные таблицы могут индексироваться. А вот выбрать первые требует упорядочивания
|
|||
67
Serginio1
22.11.12
✎
18:57
|
ВЫБРАТЬ
втИндекс.Ссылка КАК Ссылка, втИндекс.Номенлатура КАК Номенлатура втИндекс.МоментВремени ИЗ втИндекс КАК втИндекс Итоги по Номенлатура УПОРЯДОЧИТЬ ПО Номенлатура,МоментВремени |
|||
68
Serginio1
22.11.12
✎
19:09
|
Ну судя по v8: Передача параметров в СрезПоследних
убрали они эту реализацию. Пробуй тогда так ВЫБРАТЬ втИндекс.Ссылка КАК Ссылка, втИндекс.Номенлатура КАК Номенлатура втИндекс.МоментВремени ИЗ втИндекс КАК втИндекс Соединение (ВЫБРАТЬ Док.Номенлатура КАК Номенлатура Max(Док.Ссылка) КАК Ссылка ИЗ втИндекс КАК дог Группировать ПоДок.Номенлатура) Как Подзапрос По втИндекс.Номенлатура=Подзапрос.Номенлатура и втИндекс.Ссылка =Подзапрос.Ссылка |
|||
69
Serginio1
22.11.12
✎
19:10
|
Тьфу достаточно просто группировки по Номенклатуре c max(Ссылка)
|
|||
70
zippygrill
23.11.12
✎
09:42
|
(68) а разве макс по ссылке всегда правильный подход? :)
|
|||
71
zippygrill
23.11.12
✎
09:49
|
или тут уже можно макс(ссылка) так как уже есть макс дата?
|
|||
72
zippygrill
23.11.12
✎
09:53
|
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ втОборот.Номенклатура, МАКСИМУМ(втИндекс.Ссылка) КАК Ссылка, втОборот.КоличествоПриход ИЗ втОборот КАК втОборот ЛЕВОЕ СОЕДИНЕНИЕ втИндекс КАК втИндекс ПО втОборот.Номенклатура = втИндекс.Номенклатура ГДЕ (втИндекс.Ссылка, втИндекс.Номенклатура) В (ВЫБРАТЬ ПЕРВЫЕ 1 док.Ссылка КАК Ссылка, док.Номенклатура КАК Номенклатура ИЗ втИндекс КАК док ГДЕ док.Номенклатура = втИндекс.Номенклатура) СГРУППИРОВАТЬ ПО втОборот.Номенклатура, втОборот.КоличествоПриход а правильно что конструктор группирует и числовое поле втОборот.КоличествоПриход? |
|||
73
zippygrill
23.11.12
✎
10:00
|
кстать а что мешает в запросе из (0) сгруппировать по номенклатуре и макс(ссылка)?
|
|||
74
zippygrill
23.11.12
✎
10:14
|
*кстати
|
|||
75
Serginio1
23.11.12
✎
10:23
|
Никто не мешает. Только сначала нужно Сгруппировать по МАКСИМУМ(Дате),
А вот второе соединение по номенклатуре и дате сгруппировать по МАКСИМУМ(Ссылка) Так как максимальная ссылка может быть не максимальной по дате |
|||
76
zippygrill
23.11.12
✎
10:27
|
ясно.
|
|||
77
zippygrill
23.11.12
✎
10:38
|
а то что у поля втОборот.КоличествоПриход нету агрегатной функции Сумма?
|
|||
78
zippygrill
23.11.12
✎
10:38
|
в (72)
|
|||
79
zippygrill
23.11.12
✎
10:46
|
в соседней ветке: "Если "без шуток", то в запросе "скрытая" ошибка. Желая получить дату и ссылку на последний документ - нельзя использовать максимум по дате и максимум по ссылке. Вы можете получить дату из одного документа и ссылку на другой документ."
|
|||
80
Serginio1
23.11.12
✎
11:13
|
(79) Ты читать умеешь? Или за тебя все разжевывать нужно.
Сначала делаешь соединенин с группировкой Номенклатура,МАКСИМУМ(Дате) Получил таблицу Номенлатура,Ссылка,Дата Потом эту таблицу уже группируешь по Номенклатура,МАКСИМУМ(Ссылка) |
|||
81
zippygrill
23.11.12
✎
11:16
|
да я давно понял.
|
|||
82
Serginio1
23.11.12
✎
11:21
|
Выбрать
втПТУВНТТ.Номенклатура Максимум(втПТУВНТТ.Ссылка) Соединение втПослПриходДата как втПослПриходДата по втПТУВНТТ.Номенклатура=втПослПриходДата.Номенклатура и втПТУВНТТ.Дата=втПослПриходДата.Дата СГРУППИРОВАТЬ ПО Номенклатура |
|||
83
Serginio1
23.11.12
✎
11:24
|
Это упрощенно. У тебя слишком большие данные во временных таблицах. Их сразу нужно сокращать через внутренние запросы.
Просто на первых порах временные таблицы нагляднее |
|||
84
zippygrill
23.11.12
✎
11:38
|
(82) ты меня сбил с посл. запросом
|
|||
85
Serginio1
23.11.12
✎
11:43
|
У тебя в 0
втПТУВНТТ и втПослПриходДата Соединяешь их по Номенклатуре и дате И группируешь их по Номенлатуре с Максимум(ссылка) В чем проблема? |
|||
86
Serginio1
23.11.12
✎
11:46
|
Тебе нужен аналог срез последних. Но в срезе последних на одну дату одно значение. С документами это не прокатывает, так как у многих документов может быть одна дата.
|
|||
87
zippygrill
23.11.12
✎
11:46
|
мне тяжело ориетироватся в запросе.
|
|||
88
Serginio1
23.11.12
✎
11:50
|
Хорошо напишем по другому
Выбрать втПТУВНТТ.Номенклатура Максимум(втПТУВНТТ.Ссылка) Из втПТУВНТТ как втПТУВНТТ где (втПТУВНТТ.Номенклатура,втПТУВНТТ.Дате) в (Выбрать втПослПриходДата.Номенклатура,втПослПриходДата.Дата из втПослПриходДата как втПослПриходДата) сгруппировать по Номенклатура |
|||
89
zippygrill
23.11.12
✎
11:58
|
в целом так получилось
ВЫБРАТЬ ТоварыВНТТОстаткиИОбороты.Номенклатура, ТоварыВНТТОстаткиИОбороты.КоличествоПриход ПОМЕСТИТЬ втОборот ИЗ РегистрНакопления.ТоварыВНТТ.ОстаткиИОбороты( НАЧАЛОПЕРИОДА(&НачПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонПериода, ДЕНЬ), Авто, , ВЫБОР КОГДА &Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ТОГДА Номенклатура В ИЕРАРХИИ (&Номенклатура) ИНАЧЕ ИСТИНА КОНЕЦ) КАК ТоварыВНТТОстаткиИОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПоступлениеТоваровУслугВНТТТовары.Ссылка, ПоступлениеТоваровУслугВНТТТовары.Ссылка.Дата КАК Дата, ПоступлениеТоваровУслугВНТТТовары.Ссылка.МоментВремени, ПоступлениеТоваровУслугВНТТТовары.Номенклатура, ПоступлениеТоваровУслугВНТТТовары.СерияНоменклатуры ПОМЕСТИТЬ втПТУВНТТ ИЗ Документ.ПоступлениеТоваровУслугВНТТ.Товары КАК ПоступлениеТоваровУслугВНТТТовары ГДЕ ПоступлениеТоваровУслугВНТТТовары.Номенклатура В (ВЫБРАТЬ втОборот.Номенклатура ИЗ втОборот КАК втОборот) И ПоступлениеТоваровУслугВНТТТовары.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НачПериода, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонПериода, ДЕНЬ) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МАКСИМУМ(втПТУВНТТ.Дата) КАК Дата, втПТУВНТТ.Номенклатура ПОМЕСТИТЬ втПослПриходДата ИЗ втПТУВНТТ КАК втПТУВНТТ СГРУППИРОВАТЬ ПО втПТУВНТТ.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втПТУВНТТ.Номенклатура, МАКСИМУМ(втПТУВНТТ.Ссылка) КАК Ссылка ПОМЕСТИТЬ втМаксСсылка ИЗ втПТУВНТТ КАК втПТУВНТТ ГДЕ (втПТУВНТТ.Номенклатура, втПТУВНТТ.Дата) В (ВЫБРАТЬ втПослПриходДата.Номенклатура, втПослПриходДата.Дата ИЗ втПослПриходДата КАК втПослПриходДата) СГРУППИРОВАТЬ ПО втПТУВНТТ.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втОборот.Номенклатура, втМаксСсылка.Ссылка ИЗ втОборот КАК втОборот ЛЕВОЕ СОЕДИНЕНИЕ втМаксСсылка КАК втМаксСсылка ПО втОборот.Номенклатура = втМаксСсылка.Номенклатура СГРУППИРОВАТЬ ПО втОборот.Номенклатура, втМаксСсылка.Ссылка |
|||
90
Serginio1
23.11.12
✎
12:43
|
А вообще то 1С явно неправильно сделали, что перестали поддерживать упорядочивание в выбрать первые во внешних подзапросах
"Недопустимо использовать упорядочивание внутри запроса, вложенного в операцию В с множественными операндами, если есть обращения к полям внешнего запроса" Где пресловутая совместимость. Хотя например у меня и стоит совместимость с 8.1 Я с прошлой работы ушел, а там куча таких запросов. Вот почему и приходится переходить на прямые запросы. |
|||
91
Serginio1
03.12.12
✎
12:46
|
Непонятно почему но вот такой код вместо 43.
То есть можно использовать Выбрать первые но в условии на вхождение должен быть только один элемент. ВЫБРАТЬ ПЕРВЫЕ 1000 РеализацияТоваровУслуг.Ссылка, ВложенныйЗапрос.НомерСтроки ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РеализацияТоваровУслугТовары.Ссылка КАК Ссылка, РеализацияТоваровУслугТовары.НомерСтроки КАК НомерСтроки ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.НомерСтроки В (ВЫБРАТЬ ПЕРВЫЕ 1 Док.Ссылка ИЗ Документ.РеализацияТоваровУслуг.Товары КАК Док ГДЕ Док.Ссылка = РеализацияТоваровУслугТовары.Ссылка УПОРЯДОЧИТЬ ПО Док.НомерСтроки УБЫВ, Док.Количество УБЫВ)) КАК ВложенныйЗапрос ПО РеализацияТоваровУслуг.Ссылка = ВложенныйЗапрос.Ссылка УПОРЯДОЧИТЬ ПО РеализацияТоваровУслуг.Дата Для твоей задачи это будет выглядеть как ВЫБРАТЬ втИндекс.Ссылка КАК Ссылка, втИндекс.Номенлатура КАК Номенлатура ИЗ втИндекс КАК втИндекс ГДЕ (втИндекс.Ссылка) В (ВЫБРАТЬ ПЕРВЫЕ 1 док.Ссылка ИЗ втИндексКАК Док ГДЕ Док.Номенклатура=втИндекс.Номенлатура УПОРЯДОЧИТЬ ПО Док.Дата УБЫВ ,Док.Ссылка) УПОРЯДОЧИТЬ ПО МоментВремени |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |