Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
05 авг 2021, 13:10

Сравнение запросов

Автор anna_m, 22 июн 2021, 11:04

0 Пользователей и 1 гость просматривают эту тему.

anna_m

Добрый день!
История такая - в форме по кнопке заполняется табличная часть по двум процедурам из модуля документа. В этих процедурах огромные запросы, но т.к. они используются для других целей в том числе, менять их нельзя.

Мне же надо создать новую кнопку, аналогичную первой, но со своими параметрами запроса (это я сделала), а дальше затык - мне нужно вывести определенное количество строк, где суммы построчно будут больше, чем суммы из еще одного запроса. Понятно ,что для этого нужны циклы, теоретически я знаю (наверное), как это надо оформить, а вот практики не хватает, прошу помощи.

neek666

1. Кидаешь результаты обоих запросов во временные таблицы
2. ВНУТРЕННЕЕ СОЕДИНЕНИЕ тебе в помощь. В уже третьем запросе две временных таблицы (см пункт 1) объединяешь внутренним соединением (с условием - суммы из "первой" таблицы больше чем суммы из "второй" таблицы. Как то так:


ВЫБРАТЬ
   Табл.Номенклатура КАК Номенкл,
   Табл.Сумма КАК Сумма
ПОМЕСТИТЬ втТабл1
ИЗ
   РегистрНакопления.Регистр1 КАК Табл
;
ВЫБРАТЬ
   Табл.Номенклатура КАК Номенкл,
   Табл.Сумма КАК Сумма
ПОМЕСТИТЬ втТабл2
ИЗ
   РегистрНакопления.Регистр2 КАК Табл
;
ВЫБРАТЬ
   Табл2.Номенкл КАК Номенкл,
   Табл2.Сумма КАК Сумма
ИЗ
   Табл2 КАК Табл2
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ Табл1 КАК Табл1
   ПО (Табл2.Номенкл = Табл1.Номенкл)
   И (Табл2.Сумма > Табл1.Сумма)


Как то примерно так.

anna_m

Цитата: neek666 от 22 июн 2021, 13:051. Кидаешь результаты обоих запросов во временные таблицы
2. ВНУТРЕННЕЕ СОЕДИНЕНИЕ тебе в помощь. В уже третьем запросе две временных таблицы (см пункт 1) объединяешь внутренним соединением (с условием - суммы из "первой" таблицы больше чем суммы из "второй" таблицы. Как то так:


ВЫБРАТЬ
   Табл.Номенклатура КАК Номенкл,
   Табл.Сумма КАК Сумма
ПОМЕСТИТЬ втТабл1
ИЗ
   РегистрНакопления.Регистр1 КАК Табл
;
ВЫБРАТЬ
   Табл.Номенклатура КАК Номенкл,
   Табл.Сумма КАК Сумма
ПОМЕСТИТЬ втТабл2
ИЗ
   РегистрНакопления.Регистр2 КАК Табл
;
ВЫБРАТЬ
   Табл2.Номенкл КАК Номенкл,
   Табл2.Сумма КАК Сумма
ИЗ
   Табл2 КАК Табл2
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ Табл1 КАК Табл1
   ПО (Табл2.Номенкл = Табл1.Номенкл)
   И (Табл2.Сумма > Табл1.Сумма)


Как то примерно так.

спасибо, но запрос, заполняющий в итоге табличную часть выглядит как

Запрос.Текст =    "ВЫБРАТЬ
|    *
|ПОМЕСТИТЬ ВТ
|ИЗ
|    &ТЗ КАК ТабЗнач
|;
|ВЫБРАТЬ
|    *
|ИЗ
|    ВТ КАК Таблица";

а в исходный я залезть не могу

DmitriyF

Цитата: anna_m от 22 июн 2021, 14:13е
а в исходный я залезть не могу


А в чем проблема посмотреть итоговый запрос?

Запрос.Текст =    "ВЫБРАТЬ
            |    *
            |ПОМЕСТИТЬ ВТ
            |ИЗ
            |    &ТЗ КАК ТабЗнач
            |;
            |ВЫБРАТЬ
            |    *
            |ИЗ
            |    ВТ КАК Таблица";

Это сказать шаблон, в который передается ТаблицаЗначений и из которой выбираются все поля. Точку останова после запроса и смотри что там будет находится. Если я конечно правильно понял, что вам нужно.

anna_m

Цитата: DmitriyF от 22 июн 2021, 14:57
Цитата: anna_m от 22 июн 2021, 14:13е
а в исходный я залезть не могу


А в чем проблема посмотреть итоговый запрос?

Запрос.Текст =    "ВЫБРАТЬ
            |    *
            |ПОМЕСТИТЬ ВТ
            |ИЗ
            |    &ТЗ КАК ТабЗнач
            |;
            |ВЫБРАТЬ
            |    *
            |ИЗ
            |    ВТ КАК Таблица";

Это сказать шаблон, в который передается ТаблицаЗначений и из которой выбираются все поля. Точку останова после запроса и смотри что там будет находится. Если я конечно правильно понял, что вам нужно.

еще нюанс - у меня нет поля номенклатуры для связки, мне надо выбрать первую попавшуюся строку, где сумма будет больше суммы  моего нового запроса и прописать сумму из этого запроса

DmitriyF

Цитата: anna_m от 22 июн 2021, 15:24еще нюанс - у меня нет поля номенклатуры для связки, мне надо выбрать первую попавшуюся строку, где сумма будет больше суммы  моего нового запроса и прописать сумму из этого запроса
Может проще свой запрос написать? Вы там, что то совсем непонятное делаете.

anna_m

Цитата: DmitriyF от 22 июн 2021, 15:41
Цитата: anna_m от 22 июн 2021, 15:24еще нюанс - у меня нет поля номенклатуры для связки, мне надо выбрать первую попавшуюся строку, где сумма будет больше суммы  моего нового запроса и прописать сумму из этого запроса
Может проще свой запрос написать? Вы там, что то совсем непонятное делаете.

если б это было возможно,давно бы так и сделала, но там слишком много, к сожалению, переделывать  :wacko:

DmitriyF

Цитата: anna_m от 22 июн 2021, 16:25
Цитата: DmitriyF от 22 июн 2021, 15:41
Цитата: anna_m от 22 июн 2021, 15:24еще нюанс - у меня нет поля номенклатуры для связки, мне надо выбрать первую попавшуюся строку, где сумма будет больше суммы  моего нового запроса и прописать сумму из этого запроса
Может проще свой запрос написать? Вы там, что то совсем непонятное делаете.

если б это было возможно,давно бы так и сделала, но там слишком много, к сожалению, переделывать  :wacko:
Возможно все  :D было бы желание))))

Теги: запросы циклы 

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск