Имя: Пароль:
1C
1С v8
Объединение запроса без ОБЪЕДИНИТЬ
,
0 NordMad
 
05.10.17
15:25
как в запросе можно объединить данные из разных источников без команды ОБЪЕДИНИТЬ ВСЕ (она не может использоваться в динамическом списке)?
1 Волшебник
 
модератор
05.10.17
15:26
сделай отчёт
2 Фортовый
 
05.10.17
15:29
в отчете все можно
3 NordMad
 
05.10.17
15:30
(1) мне нужно заполнить список на форме выбора через произвольный динамический запрос
4 NordMad
 
05.10.17
15:32
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    СправочникНоменклатура.Ссылка КАК Ссылка,
    СправочникНоменклатура.Родитель КАК ProductGroup,
    СправочникНоменклатура.Код КАК Код,
    СправочникНоменклатура.Наименование КАК Наименование,
    СправочникНоменклатура.Наименование2 КАК Наименование2,
    СправочникНоменклатура.КодПродукции КАК КодПродукции,
    СправочникНоменклатура.Name КАК Name,
    СправочникНоменклатура.Category КАК Category,
    СправочникНоменклатура.Status КАК Status
ПОМЕСТИТЬ Запрос1
ИЗ
    Справочник.Номенклатура КАК СправочникНоменклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            Цены.Номенклатура КАК Номенклатура
        ИЗ
            РегистрСведений.ЦеныПоставкиНоменклатуры.СрезПоследних(
                    ,
                    УсловиеПоставки = &УсловиеПоставки
                        И Валюта = &Валюта) КАК Цены
        ГДЕ
            НЕ Цены.ТипЗаписи = ЗНАЧЕНИЕ(Перечисление.ТипыЗаписей.Удаление)
        
        СГРУППИРОВАТЬ ПО
            Цены.Номенклатура) КАК ВложенныйЗапрос
        ПО СправочникНоменклатура.Ссылка = ВложенныйЗапрос.Номенклатура
ГДЕ
    НЕ СправочникНоменклатура.Использование = ЗНАЧЕНИЕ(Перечисление.ИспользованиеНоменклатуры.Заблокирован)
    И ВЫБОР
            КОГДА НЕ &CommercialStatus = ЗНАЧЕНИЕ(Справочник.Статусы.Nonstandard)
                ТОГДА НЕ СправочникНоменклатура.Status = ЗНАЧЕНИЕ(Справочник.Статусы.Trial)
            ИНАЧЕ ИСТИНА
        КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка,
    Номенклатура.Родитель КАК ProductGroup,
    Номенклатура.Код КАК Код,
    Номенклатура.Наименование КАК Наименование,
    Номенклатура.Наименование2 КАК Наименование2,
    Номенклатура.КодПродукции КАК КодПродукции,
    Номенклатура.Name КАК Name,
    Номенклатура.Category КАК Category,
    Номенклатура.Status КАК Status
ПОМЕСТИТЬ Запрос2
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Category = &Category
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Запрос2.Ссылка КАК Ссылка,
    Запрос2.ProductGroup КАК ProductGroup,
    Запрос2.Код КАК Код,
    Запрос2.Наименование КАК Наименование,
    Запрос2.Наименование2 КАК Наименование2,
    Запрос2.КодПродукции КАК КодПродукции,
    Запрос2.Name КАК Name,
    Запрос2.Category КАК Category,
    Запрос2.Status КАК Status,
    Запрос1.Ссылка КАК Ссылка1,
    Запрос1.ProductGroup КАК ProductGroup1,
    Запрос1.Код КАК Код1,
    Запрос1.Наименование КАК Наименование1,
    Запрос1.Наименование2 КАК Наименование21,
    Запрос1.КодПродукции КАК КодПродукции1,
    Запрос1.Name КАК Name1,
    Запрос1.Category КАК Category1,
    Запрос1.Status КАК Status1
ИЗ
    Запрос1 КАК Запрос1,
    Запрос2 КАК Запрос2

вот такой запрос наваял.. но так не пойдет, потому что результат я тяну всё таки из разных источников, а мне нужно объединиьт
5 NordMad
 
05.10.17
15:33
то есть тут бы идеально подошел:
запрос1
Объединить все
Запрос2
и результат получается тот что надо, НО не берет динамический список ОБЪЕДИНИТЬ ВСЕ
чем бы можно было бы заменить его?
6 Ненавижу 1С
 
гуру
05.10.17
15:34
а почему я попробовал динамический список такого вида:

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

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ПоступлениеТоваровУслуг.Ссылка,
    ПоступлениеТоваровУслуг.Номер,
    ПоступлениеТоваровУслуг.Дата
ИЗ
    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг

и все получилось?
7 NordMad
 
05.10.17
15:37
(6) а почему у меня так получается?
https://prnt.sc/gtl637
8 DrShad
 
05.10.17
15:38
платформы разные
9 NordMad
 
05.10.17
15:40
8.3.9.2170
ну в общем надо на этой. если бы получилось бы через объединения - вопроса бы не было.
так есть способ как нибудь обойти этот момент?
(6) например этот же результат получиьт без ОБЪЕДИНИТЬ ВСЕ. у меня такой же по структуре пример
10 SSSSS_AAAAA
 
05.10.17
15:44
(9) Боже мой, ну неужели так трудно догадаться обернуть свои запросы с объединить все еще в один общий?

выбрать * из
(
запрос1

объединить все

запрос2
)
11 NordMad
 
05.10.17
15:49
(10) ты меня троллишь?
выбрать * из

(
запрос1

объединить все

запрос2
)
?????
читаешь в чем мой вопрос???
12 SSSSS_AAAAA
 
05.10.17
15:52
(11) Ни разу. Сей метод давно придуман и используется именно для динамических списков.
13 NordMad
 
05.10.17
15:55
(12) ну я же скрин показал уже... какие ещё нужны доказательства что у меня не получается через ОБЪЕДИНИТЬ ВСЁ. я так то и сам догадался что это самый простой вариант.. нужен способ без этой команды сделать единый список из разных источников
14 SSSSS_AAAAA
 
05.10.17
16:00
(13) Да хоть два покажи. Но в моем варианте он про это забывает НЕ ругается.
15 SSSSS_AAAAA
 
05.10.17
16:01
(13) Или ты что-то не так делаешь.
16 elCust
 
05.10.17
16:06
...Другими словами, динамический список с указанной основной таблицей будет работать корректно в том случае, если в результате выполнения запроса,
указанного в качестве источника данных, не увеличивается количество строк, получаемых из основной таблицы (с учетом наложенного отбора)

Очисти реквизит "Основная таблица" и будет тебе счастье.
17 NordMad
 
05.10.17
16:07
(16) пробовал, тогла ругается что недоступна группировка без выбора основной таблицы
18 NordMad
 
05.10.17
16:08
(15) так а что я не так делаю то? если у меня в консоле отрабатывает этот запрос и я получаю именно то что я хочу увидеть, но при переносе в динамический список вываливается ошибка. что при копировании изменяется текст запроса?
19 DrShad
 
05.10.17
16:32
(18) тоже попробовал работает ДС с Объединить
20 NordMad
 
05.10.17
16:34
(19) с выбранной основной таблицей? или без? без основной у меня тоже работает если ещё убрать группировку в настройках... но группировка нужна
21 DrShad
 
05.10.17
16:38
(20) а вот группировка может и поломать все
22 NordMad
 
05.10.17
16:41
(21) похоже что решения нету в такой ситуации. придется видимо криво делать - формировать 2 независимых списка... с разных кнопок или с одной, но с разным положением переключателя. Идеи закончились как объединить списки не меняя структуры и группировок
23 тарам пам пам
 
05.10.17
17:18
(22) руки у тебя кривые, а не "решения нету". У тебя в (4) данные тянутся из одного справочника "Номенклатура" - поэтому решение 1 - вместо объединения сделать один запрос с условием через ИЛИ. Такое решение наиболее корректное, ИМХО.

решение 2 в лоб - как писали в (10) - обернуть запрос во вложенный. Если нужно указать основную таблицу - то можно добавить соединение со спр. Номенклатура и будут тебе и группировки и прочие извращения. Как-то так:

ВЫБРАТЬ
Номенклатура.Ссылка,
ВложенныйЗапрос.*
ИЗ
Справочник.Номенклатура КАК Номенклатура
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
(Запрос1
  ОБЪЕДИНИТЬ ВСЕ
  Запрос2) КАК ВложенныйЗапрос
  ПО Номенклатура.Ссылка = ВложенныйЗапрос.Ссылка
24 NordMad
 
06.10.17
11:04
(23) это у тебя видимо что то кривое если ты снова предлагаешь мне использовать команду ОБЪЕДИНИТЬ ВСЕ. я уже писал что оно не работает с выбранной основной таблицей и при наличии группировок. данные выбираются из регистра! и по найденным записям мы тянем соответствующие данные из номенклатуры, а ещё один набор данных который нужно тянуть - отсутствует в этом регистре! по этому как ты вотнешь там в условие ИЛИ я не знаю