|
Вложенный запрос | ☑ | ||
---|---|---|---|---|
0
AntonyFO
01.10.13
✎
04:20
|
Добрый день есть запрос и в неё вложенный:
"ВЫБРАТЬ | ПоступлениеТоваровУслуг.Ссылка, | ВложенныйЗапрос.Номенклатура, |ИЗ | Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, | ПоступлениеТоваровУслугТовары.КоличествоМест КАК КоличествоМест, | ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка | ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары) КАК ВложенныйЗапрос | ПО ПоступлениеТоваровУслуг.Ссылка = ВложенныйЗапрос.Ссылка |ГДЕ | ПоступлениеТоваровУслуг.Ссылка В(&СписокДокументов)"; Смысл в том чтобы порлучить все нужные поля прямым способом обхода результата |
|||
1
AntonyFO
01.10.13
✎
04:23
|
В тексте запрос к документам "Поступление товаров и услуг" и их табличной части "Товары".
Мне надо чтобы выбиралась только первая строка табличной части "Товары" для каждого документа, подскажите как лучше? |
|||
2
AntonyFO
01.10.13
✎
04:29
|
Пробовал ВЫБРАТЬ ПЕРВЫЕ 1 во вложенном не то
|
|||
3
AntonyFO
01.10.13
✎
04:32
|
Может не ясно спросил, схематически так...
Документ1 ТоварИзПервойСтрокиДокумента1 Документ2 ТоварИЗПервойСтрокиДокумента2 Документ3 ТоварИзПервойСтрокиДокумента3 |
|||
4
kosts
01.10.13
✎
06:12
|
У ТЧ есть предопределенный реквизит НомерСтроки, если что...
Ну и отбор нужно как можно ранее применять, а то вложенный запрос вернет миллион строк и повесит сервер на 10 минут... В данном случае возможно можно обойтись одним запросом, благо 1С-ка сама таблицы соединяет. |
|||
5
AntonyFO
01.10.13
✎
06:36
|
(4) Ясно, спасибо. Да, конечно можно СГРУППИРОВАТЬ ПО если
|
|||
6
AntonyFO
01.10.13
✎
06:42
|
А если так:
"ВЫБРАТЬ | ПоступлениеТоваровУслуг.Ссылка, | ВложенныйЗапрос.Номенклатура КАК Номенклатура |ИЗ | Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1 | Остатки.Номенклатура КАК Номенклатура, | Остатки.ДокументПоступления | ИЗ | РегистрНакопления.Остатки КАК Остатки) КАК ВложенныйЗапрос | ПО ПоступлениеТоваровУслуг.Ссылка = ВложенныйЗапрос.ДокументПоступления | |ГДЕ | ПоступлениеТоваровУслуг.Ссылка В(&СписокДокументов)"; |
|||
7
AntonyFO
01.10.13
✎
06:43
|
Мне надо выбрать только одну запись регистра накопления, с более поздним периодом?
|
|||
8
AntonyFO
01.10.13
✎
06:43
|
ВЫБРАТЬ ПЕРВЫЕ во вложенном лишнее, просто ВЫБРАТЬ
|
|||
9
SeraFim
01.10.13
✎
06:48
|
(1) >> Мне надо чтобы выбиралась только первая строка табличной части "Товары" для каждого документа, подскажите как лучше?
|
|||
10
kosts
01.10.13
✎
06:51
|
(7) >Мне надо выбрать только одну запись регистра накопления, с более поздним периодом?
Нам ли знать, что тебе нужно... |
|||
11
dextermorgan777
01.10.13
✎
06:51
|
Может подтупливаю, но зачем вложенныЙ?
Что если так? ВЫБРАТЬ Первые 1 ПоступлениеТоваровУслугТовары.Ссылка, ПоступлениеТоваровУслугТовары.Номенклатура ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ГДЕ ПоступлениеТоваровУслугТовары.Ссылка В(&СписокДокументов) |
|||
12
MiniMuk
01.10.13
✎
06:52
|
(1) Как определить что строка первая?
|
|||
13
dextermorgan777
01.10.13
✎
06:53
|
ПоступлениеТоваровУслугТовары.НомерСтроки
|
|||
14
MiniMuk
01.10.13
✎
06:55
|
(13) не подсказывая, пусть поймет как узнать что строка перавая потом этот признак будем сдувать в запрос
|
|||
15
MiniMuk
01.10.13
✎
06:55
|
вон (9) уж все написал
|
|||
16
AntonyFO
01.10.13
✎
07:08
|
Я понял про номер строки, спасибо. Я ещё хотел спросить. Есть запрос:
ВЫБРАТЬ | ПоступлениеТоваровУслуг.Ссылка, | ВложенныйЗапрос.Период |ИЗ | Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ВзаиморасчетыСКонтрагентами.Период КАК Период, | ВзаиморасчетыСКонтрагентами.Регистратор КАК Регистратор | ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами) КАК ВложенныйЗапрос | ПО ПоступлениеТоваровУслуг.Ссылка = ВложенныйЗапрос.Регистратор |ГДЕ | ПоступлениеТоваровУслуг.Ссылка В(&СписокДокументов) |
|||
17
AntonyFO
01.10.13
✎
07:10
|
Запрос упрощённый сильно в сравнении с реальным. Мне надо выбрать только одну запись регистра накопления, с более поздним периодом. Так сработает МАКСИМУМ(ВложенныйЗапрос.Период) ?
|
|||
18
kosts
01.10.13
✎
07:20
|
(17) Есть виртуальные таблицы остатков и оборотов. Может это нужно? Или конкретно именно последние записи нужны?
|
|||
19
AntonyFO
01.10.13
✎
07:54
|
(18) не виртуальные или реальные таблицы не причём, я думаю. Конкретно именно последняя запись по периоду нужна
|
|||
20
kosts
01.10.13
✎
08:13
|
(19) Во внутреннем запросе сделай МАКС по периоду) во внешнем сделай внутреннее соединение по периоду и нужным полям.
(Внутренний ничего лишнего не должен возвращать, иначе не то что надо получишь). Возможно вместо периода нужно "момент времени", а то получишь несколько последних записей вместо одной... |
|||
21
AntonyFO
01.10.13
✎
09:09
|
(20)Ясно. Спасибо большое, попробую
|
|||
22
AntonyFO
01.10.13
✎
09:10
|
(20) время появится сегодня зарегистрируюсь в Dropbox
|
|||
23
kosts
01.10.13
✎
09:31
|
(20) +
Что-то в этом роде
|
|||
24
kosts
01.10.13
✎
09:32
|
(23)+
В последней строке период
|
|||
25
AntonyFO
01.10.13
✎
14:36
|
Спасибо, я зарегистрировался в Dropbox)
|
|||
26
Serginio1
01.10.13
✎
14:42
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |