powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Отбор в запросе по набору разрезов
9 сообщений из 9, страница 1 из 1
Отбор в запросе по набору разрезов
    #36896383
ComOK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Есть документ, структура табличной части которого:

Разрез - ссылка на ПВХ
Значение - характеристика

Вопрос:
Нужно с помощью запроса выполнить отбор документов. В качестве параметра отбора передается таблица аналогичная табличной части документа. Проблема в одновременном отборе по нескольким комбинациям "Разрез - Значение".

Заранее спасибо!
...
Рейтинг: 0 / 0
Отбор в запросе по набору разрезов
    #36896439
rigus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну в чем проблема?
1. Создаем временную таблицу в запросе (Выбирая данные из таблицы значений)
2. через внутренне соединение делаем свзязь этой временной таблицы с табличной частью интересующего документа по 2 реквизитам
3 группируем полученные данные по ссылке.
...
Рейтинг: 0 / 0
Отбор в запросе по набору разрезов
    #36896448
ComOK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это да! Для случая, когда в таблице отбора 1 строка. Когда более - если по одному из разрезов есть совпадение, то документ попадает в результат.
...
Рейтинг: 0 / 0
Отбор в запросе по набору разрезов
    #36896510
rigus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы наверно меня не поняли или я я Вас. Попробую разжевать Нужно написать что типо этого
(ТЗ - таблица значений содержащий необходимые Вам данные)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Запрос=новый запрос;
Запрос.УстановитьПараметр("ТЗ",ТЗ);
Запрос.Текст="ВЫБРАТЬ
            |	ВрТЗ.Разрез КАК Разрез,
            |	ВрТЗ.Значен как значен
            |ПОМЕСТИТЬ ТЗ
             |ИЗ
             |	&ТЗ КАК ВрТЗ
             |;
             |
             |////////////////////////////////////////////////////////////////////////////////
             |ВЫБРАТЬ
             |	ВашДокументТовары.Ссылка
	|ИЗ
	|	Документ.ВашДокумент.Товары КАК ВашДокументТовары
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ
	|		ПО ВашДокументТовары.Разрез = ТЗ.Разрез
	|			И ВашДокументТовары.значен = ТЗ.Значен
	|
	|СГРУППИРОВАТЬ ПО
	|	ВашДокументТовары.Ссылка";
...
Рейтинг: 0 / 0
Отбор в запросе по набору разрезов
    #36896558
ComOK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я такой вариант пробовал. Если есть совпадение по одной скроке из таблицы отборов, но нет по остальным - документ все равно попадает.
...
Рейтинг: 0 / 0
Отбор в запросе по набору разрезов
    #36896594
rigus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда чуть модифицируйте запрос. Добавьте счетчик количества строк
А именно,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Запрос=новый запрос;
Запрос.УстановитьПараметр("ТЗ",ТЗ);
Запрос.УстановитьПараметр("кол",ТЗ.Количество());

Запрос.Текст="ВЫБРАТЬ
            |	ВрТЗ.Разрез КАК Разрез,
            |	ВрТЗ.Значен как значен
            |ПОМЕСТИТЬ ТЗ
             |ИЗ
             |	&ТЗ КАК ВрТЗ
             |;
             |
             |////////////////////////////////////////////////////////////////////////////////
             |ВЫБРАТЬ
             |	ВашДокументТовары.Ссылка,
	|	СУММА(1) КАК Кол
             |ПОМЕСТИТЬ вр2
	|ИЗ
	|	Документ.ВашДокумент.Товары КАК ВашДокументТовары
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ
	|		ПО ВашДокументТовары.Разрез = ТЗ.Разрез
	|			И ВашДокументТовары.значен = ТЗ.Значен
	|
	|СГРУППИРОВАТЬ ПО
	|	ВашДокументТовары.Ссылка
             |;
	             |
	             |////////////////////////////////////////////////////////////////////////////////
	             |ВЫБРАТЬ
	             |	вр2.Ссылка
	             |ИЗ
	             |	вр2 КАК вр2
	             |ГДЕ
	             |	вр2.Кол = &Кол";


...
Рейтинг: 0 / 0
Отбор в запросе по набору разрезов
    #36896617
rigus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правда мой вариант будет работать при уникальности данных в табличной части и таблице значений. Но если еще немного модифицировать запрос, а именно вначале свернуть таблицу значений (чтобы она была уникальной), а также в самом запросе вначале получиить разрез значение из документов с группировкой по ним и документу, выгрузив это во временную таблицу а лишь потом установить количество 1, то будет универсально работать.
...
Рейтинг: 0 / 0
Отбор в запросе по набору разрезов
    #36896655
ComOK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо! за решение! Я сделал чуть по дуругому:

Индекс = Индекс + 1; МассивСтрок = Новый Массив(); МассивСтрок.Добавить(Строка); ТаблицаОтбора = РазрезыПланирования.Скопировать(МассивСтрок); Запрос.УстановитьПараметр("ТаблицаОтбора" ТаблицаОтбора); Запрос.Текст = "ВЫБРАТЬ | ТаблицаОтбора.РазрезПланирования | ТаблицаОтбора.Значение |ПОМЕСТИТЬ ТаблицаОтбора"+Индекс+" |ИЗ | &ТаблицаОтбора КАК ТаблицаОтбора"; Запрос.Выполнить(); КонецЦикла; КонецЕсли; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | мтоЛимитыЗаявочнойКомпании.Ссылка КАК Лимит | мтоЛимитыЗаявочнойКомпании.ДатаНачала | ЕСТЬNULL(мтоОборотыПоЛимитамОбороты.СуммаОборот 0) КАК Сумма |ИЗ | Документ.мтоЛимитыЗаявочнойКомпании КАК мтоЛимитыЗаявочнойКомпании | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.мтоОборотыПоЛимитам.Обороты КАК мтоОборотыПоЛимитамОбороты | ПО мтоЛимитыЗаявочнойКомпании.Ссылка = мтоОборотыПоЛимитамОбороты.Лимит"; Для Сч = 1 по Индекс Цикл Запрос.Текст = Запрос.Текст +" | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаОтбора"+Сч+" КАК ТаблицаОтбора"+Сч+" | ПО мтоЛимитыЗаявочнойКомпании.РазрезыПланирования.Значение = ТаблицаОтбора"+Сч+".Значение | И мтоЛимитыЗаявочнойКомпании.РазрезыПланирования.РазрезПланирования = ТаблицаОтбора"+Сч+".РазрезПланирования |"; КонецЦикла;
...
Рейтинг: 0 / 0
Отбор в запросе по набору разрезов
    #36896658
ComOK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ужас) Вообщем получилось) я на каждую строку отбора сделал свою таблицу отбора и по внутреннему соединил, как вы предложили в первом варианте
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Отбор в запросе по набору разрезов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]