Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / Отбор в запросе по набору разрезов / 9 сообщений из 9, страница 1 из 1
13.10.2010, 10:42
    #36896383
ComOK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор в запросе по набору разрезов
Добрый день!

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

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

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

Заранее спасибо!
...
Рейтинг: 0 / 0
13.10.2010, 11:07
    #36896439
rigus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор в запросе по набору разрезов
Ну в чем проблема?
1. Создаем временную таблицу в запросе (Выбирая данные из таблицы значений)
2. через внутренне соединение делаем свзязь этой временной таблицы с табличной частью интересующего документа по 2 реквизитам
3 группируем полученные данные по ссылке.
...
Рейтинг: 0 / 0
13.10.2010, 11:10
    #36896448
ComOK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор в запросе по набору разрезов
Это да! Для случая, когда в таблице отбора 1 строка. Когда более - если по одному из разрезов есть совпадение, то документ попадает в результат.
...
Рейтинг: 0 / 0
13.10.2010, 11:33
    #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
13.10.2010, 11:45
    #36896558
ComOK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор в запросе по набору разрезов
Я такой вариант пробовал. Если есть совпадение по одной скроке из таблицы отборов, но нет по остальным - документ все равно попадает.
...
Рейтинг: 0 / 0
13.10.2010, 11:54
    #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
13.10.2010, 12:00
    #36896617
rigus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор в запросе по набору разрезов
Правда мой вариант будет работать при уникальности данных в табличной части и таблице значений. Но если еще немного модифицировать запрос, а именно вначале свернуть таблицу значений (чтобы она была уникальной), а также в самом запросе вначале получиить разрез значение из документов с группировкой по ним и документу, выгрузив это во временную таблицу а лишь потом установить количество 1, то будет универсально работать.
...
Рейтинг: 0 / 0
13.10.2010, 12:10
    #36896655
ComOK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отбор в запросе по набору разрезов
Спасибо! за решение! Я сделал чуть по дуругому:

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


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