Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Объединение запроса без ОБЪЕДИНИТЬ

Объединение запроса без ОБЪЕДИНИТЬ
Я
   NordMad
 
05.10.17 - 15:25
как в запросе можно объединить данные из разных источников без команды ОБЪЕДИНИТЬ ВСЕ (она не может использоваться в динамическом списке)?
 
 
   Волшебник
 
Модератор
1 - 05.10.17 - 15:26
сделай отчёт
   Фортовый
 
2 - 05.10.17 - 15:29
в отчете все можно
   NordMad
 
3 - 05.10.17 - 15:30
(1) мне нужно заполнить список на форме выбора через произвольный динамический запрос
   NordMad
 
4 - 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

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

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

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

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

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

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

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

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

(
запрос1

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

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

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует