Имя: Пароль:
1C
1С v8
Запрос в поле запроса - нужны примеры.
0 Trance_1C
 
27.01.15
05:40
Всем привет!, у кого есть примеры запросов в поле запроса, помню что там можно получать одиночное значение выборкой, нужны примеры синтаксиса в запросе...
порылся в типовой УПП, УТ не нашел...
1 hawksib
 
27.01.15
05:50
фиг знает че ты имеешь в виду, может это?
ВЫБРАТЬ
    СебестоимостьНоменклатурыСрезПоследних.Цена КАК Цена
ИЗ
    РегистрСведений.СебестоимостьНоменклатуры.СрезПоследних(
            &Дата,
            Номенклатура = &Номенклатура
                И ХарактеристикаНоменклатуры В
                    (ВЫБРАТЬ
                        ХарактеристикиНоменклатуры.Ссылка
                    ИЗ
                        Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
                    ГДЕ
                        ХарактеристикиНоменклатуры.Наименование ПОДОБНО "Новый")) КАК СебестоимостьНоменклатурыСрезПоследних
2 Trance_1C
 
27.01.15
05:53
Это но здесь запрос применяется в параметрах РСВ, а в поле так не получается...
может в поле и нельзя так?!?!
3 hawksib
 
27.01.15
06:00
в поле, наверно, нужно "выбор" писать
4 Trance_1C
 
27.01.15
06:44
Выбор Когда <Условие выполняется> Тогда
<выражение>
Конец

Это не подходит когда надо вытащить значение перечисления например, или список значений из справочника как в примере с характеристиками

знаю что это работает в условиях и в параметрах, где то видел в полях, но там было что-то с фигурными скобками {}
5 Trance_1C
 
27.01.15
06:44
В документации не описано и редко встречается
6 Trance_1C
 
27.01.15
06:57
я такое где-то встречал, в диком коде собираемых программно запросов в УПП, но сейчас не могу найти :((
7 Галахад
 
гуру
27.01.15
06:58
Чего надо-то?
8 Trance_1C
 
27.01.15
06:59
(7) У запросов есть поля, например в (1) запрос с полем "Цена" - Нужен пример где в поле запроса - ЗАПРОС
9 kosts
 
27.01.15
07:00
(8) Запрос это в основном текст. Тебе текст из базы надо получить?
10 Trance_1C
 
27.01.15
07:02
(9) нет, спасибо тексты все есть :)
11 Cube
 
27.01.15
07:04
(8) Ты ответишь ЗАЧЕМ или тебя уговаривать придется?
12 Trance_1C
 
27.01.15
07:11
Хочу в основном запросе получить набор среза последних из периодического РСВ не заморачиваясь с пакетами в запросе.
Знаю что можно по-другому, но помню где-то видел подзапрос в поле запроса
13 Cube
 
27.01.15
07:13
(12) "помню где-то видел подзапрос в поле запроса"
Во сне.

"Хочу в основном запросе получить набор среза последних из периодического РСВ не заморачиваясь с пакетами в запросе."
Хотеть не запрещаем, но кактус всё-равно придется жрать.
14 Trance_1C
 
27.01.15
07:17
перенесите тему в раздел утопия, если такой есть конечно... :)
15 kosts
 
27.01.15
07:23
(14) Отчасти поставленную задачу может сделать группировка итогов.
16 ИС-2
 
naïve
27.01.15
07:37
(14) не понимаю, что надо...

таблицу в поле?

           ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка,
    РеализацияТоваровУслуг.Товары.(
        Номенклатура,
        ПереданныеПринятыеБУ,
        ПереданныеПринятыеНУ,
        ПереданныеСобственныеБУ,
        ПереданныеСобственныеНУ,
        ПринятыеСчетУчетаБУ,
        ПринятыеСчетУчетаНУ,
        ПроцентАвтоматическихСкидок,
        ПроцентСкидкиНаценки,
        СерияНоменклатуры,
        Склад,
        СпособСписанияОстаткаТоваров,
        СтавкаНДС,
        СубконтоБУ,
        СубконтоНУ,
        Сумма,
        СуммаНДС,
        СчетДоходовБУ,
        СчетДоходовНУ,
        СчетРасходовБУ,
        СчетРасходовНУ,
        СчетУчетаБУ,
        СчетУчетаНУ,
        УсловиеАвтоматическойСкидки,
        ХарактеристикаНоменклатуры,
        Цена,
        ЗаказПокупателя,
        КлючСвязи,
        КлючСтроки,
        ПринадлежностьНоменклатуры
    )
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
17 ИС-2
 
naïve
27.01.15
07:42
еще полезно будет почитать справку "Функции языка запросов"
18 Sashokk
 
27.01.15
07:48
Для конкретного поля условие можно написать в секции ГДЕ.

ВЫБРАТЬ
    ЦеныНоменклатуры.Номенклатура,
    ЦеныНоменклатуры.Цена
ИЗ
    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
    ЦеныНоменклатуры.Номенклатура В
            (ВЫБРАТЬ
                Номенклатура.Ссылка
            ИЗ
                Справочник.Номенклатура КАК Номенклатура
            ГДЕ
                Номенклатура.Ссылка = &Ссылка)
19 GenAcid
 
27.01.15
08:12
Я так понимаю ТС думает что хочет вот это:

ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка,
    РеализацияТоваровУслуг.Товары.(
        Номенклатура,
        Количество
    )
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

А на самом деле ему нужно ЛЕВОЕ СОЕДИНЕНИЕ
20 ИС-2
 
naïve
27.01.15
08:20
(19) а может это

ВЫБРАТЬ
    ВнешниеОбработки.Ссылка КАК Ссылка,
    ВЫБОР
        КОГДА ВнешниеОбработки.ВидОбработки = ЗНАЧЕНИЕ(перечисление.ВидыДополнительныхВнешнихОбработок.Отчет)
            ТОГДА "erf"
        ИНАЧЕ "epf"
    КОНЕЦ КАК Расширение
ИЗ
    Справочник.ВнешниеОбработки КАК ВнешниеОбработки
ГДЕ
    НЕ ВнешниеОбработки.ЭтоГруппа
21 dk
 
27.01.15
08:44
Видимо хочется

ВЫБРАТЬ
    Контрагенты.Код,
    Контрагенты.Наименование,
    (ВЫБРАТЬ ПЕРВЫЕ 1 Наименование ИЗ Справочник.Номенклатура) Товар
ИЗ
    Справочник.Контрагенты КАК Контрагенты

Можно решить через

ВЫБРАТЬ
    Контрагенты.Код,
    Контрагенты.Наименование,
    _1.Наименование Товар
ИЗ
    Справочник.Контрагенты КАК Контрагенты,
    (ВЫБРАТЬ ПЕРВЫЕ 1 Наименование ИЗ Справочник.Номенклатура) _1
22 ам794123
 
27.01.15
08:46
Почитал. Заболела голова. Что за день такой(
23 IVT_2009
 
27.01.15
08:50
Просто если вам нужен запрос с условием по значению другого запроса - примеры выше.
24 Trance_1C
 
27.01.15
08:57
есть вот такой запрос, это примерно то что мне нужно
|ВЫБРАТЬ
|       РеализацияТоваровУслугТовары.Ссылка КАК Документ,
|   РеализацияТоваровУслугТовары.Номенклатура,
|   МАКСИМУМ(ЦеныНоменклатуры.Период) КАК МаксимальнаяДатаРегистра
|ПОМЕСТИТЬ Выборка
|ИЗ
|   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|       ПО РеализацияТоваровУслугТовары.Номенклатура = ЦеныНоменклатуры.Номенклатура
|           И РеализацияТоваровУслугТовары.Ссылка.ТипЦен = ЦеныНоменклатуры.ТипЦен
|           И РеализацияТоваровУслугТовары.Ссылка.Дата >= ЦеныНоменклатуры.Период
|ГДЕ
|   РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|
|СГРУППИРОВАТЬ ПО
|   РеализацияТоваровУслугТовары.Ссылка,
|   РеализацияТоваровУслугТовары.Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|   Выборка.Документ,
|   Выборка.Номенклатура,
|   ЦеныНоменклатуры.Цена,
|   Выборка.МаксимальнаяДатаРегистра
|ИЗ
|   Выборка КАК Выборка
|       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|       ПО Выборка.Документ.ТипЦен = ЦеныНоменклатуры.ТипЦен
|           И Выборка.Номенклатура = ЦеныНоменклатуры.Номенклатура
|           И Выборка.МаксимальнаяДатаРегистра = ЦеныНоменклатуры.Период


Но здесь это реализовано очень громоздко, етсь же таблица СрезПоследних, в идеале хотелось бы подключить ее непосредственно в поле цена и не есть кактус :)
25 Cube
 
27.01.15
09:01
(24) "это реализовано очень громоздко"
Я как-то написал запросик на 1000 строк... А то что у тебя - детский лепет.
26 anaed
 
27.01.15
09:01
(24) это получение цены на дату документа, а не банальный срез последних.
27 Trance_1C
 
27.01.15
09:03
(25) у меня тоже большой запрос, в том то и дело, и тот кусочек что я привел размещен в одном из первых, нижних пакетов большого запроса и сейчас мне предстоит переделать нижние пакеты таким образом чтобы не нарушить связи с верхними дочерними...
28 anaed
 
27.01.15
09:15
(27) и в чем проблема? иногда приходиться работать даже программисту :)
29 Бертыш
 
27.01.15
09:39
(27) Я конечно не телепат, да и другие тут не телепаты. Очень уж вы куце и косноязычно формулируете что Вы имеете в наличие и что Вам на самом то деле надо.
Если Вам надо одно, то имеет смысл использовать временные таблицы в пакетных запросах, а если надо другое, то смотрите как корректно получать состояние периодических регистров на любую дату или по состоянию на момент любого документа.
http://1cniku.ru/Articles/regqery.html
30 SeraFim
 
27.01.15
09:45
Ничего не понял =) что надо-то?
В (24) все верно, это единственный способ получения значений на разные даты.
Единственное - можно попридираться с точки зрения оптимальности.
31 Бертыш
 
27.01.15
09:46
(27) То есть нет такого понятия как запрос в роли поля другого запроса. Есть ситуация когда Вы обращаетесь к объекту и адресуетесь к его табличной части. Ну тогда табличная часть возвращается как результат запроса. Этот вариант Вам уже приводили. Но это единственный случай.
Что бы прояснить что Вы имеете ввиду лучше приведите развёрнутое определение что должно быть в поле запроса который в запросе.
Так же для самостоятельного навыка по решению данных проблем можете обратиться к http://курсы-по-1с.рф/разработка-и-оптимизация-запросов-в-1с-8/

или к
http://www.1c-uc3.ru/web-zaprosy.html
32 Chameleon1980
 
27.01.15
09:53
да догадаться не?
33 ssh2QQ6
 
27.01.15
10:17
(25) > Я как-то написал запросик на 1000 строк

И у меня такой есть) 1020 строк
34 Ёпрст
 
27.01.15
10:19
(0) ну не реализованы подзапросы в селект листе в снеговике, селяви..
35 kosts
 
27.01.15
13:09
(25) Не это ли имел ввиду?


Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|       РеализацияТоваровУслугТовары.Ссылка КАК Документ,
|   РеализацияТоваровУслугТовары.Номенклатура,
|   МАКСИМУМ(ЦеныНоменклатуры.Период) КАК МаксимальнаяДатаРегистра
|ПОМЕСТИТЬ Выборка
|ИЗ
|   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|       ПО РеализацияТоваровУслугТовары.Номенклатура = ЦеныНоменклатуры.Номенклатура
|           И РеализацияТоваровУслугТовары.Ссылка.ТипЦен = ЦеныНоменклатуры.ТипЦен
|           И РеализацияТоваровУслугТовары.Ссылка.Дата >= ЦеныНоменклатуры.Период
|ГДЕ
|   РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|
|СГРУППИРОВАТЬ ПО
|   РеализацияТоваровУслугТовары.Ссылка,
|   РеализацияТоваровУслугТовары.Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////

|ВЫБРАТЬ
|   Выборка.Документ,
|   Выборка.Номенклатура,
|   ЦеныНоменклатуры.Цена,
|   Выборка.МаксимальнаяДатаРегистра
|ИЗ
|   Выборка КАК Выборка
|       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|       ПО Выборка.Документ.ТипЦен = ЦеныНоменклатуры.ТипЦен
|           И Выборка.Номенклатура = ЦеныНоменклатуры.Номенклатура
|           И Выборка.МаксимальнаяДатаРегистра = ЦеныНоменклатуры.Период
|
|ИТОГИ ПО
|    Номенклатура"
;

Результат = Запрос.Выполнить();
ВыборкаНоменклатура = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаНоменклатура.Следующий() Цикл
    
    Выборка = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    Пока Выборка.Следующий() Цикл
        // Тут обработка вложенной выборки другими словами подзапроса
    КонецЦикла;
    
КонецЦикла;