Имя: Пароль:
1C
1С v8
установка отбора по значению таблицы документа
0 LivingStar
 
06.03.15
09:42
В табличной части документа есть поле числовое. Делая выборку запросом этих документов необходимо исключить документы у которых в тч присутствует число по которому исключается отбор.
|
ВЫБРАТЬ
    вгтЗаказТрансфера.Ссылка,
    вгтЗаказТрансфера.ДатаВремяПодачиТранспорта КАК ДатаВремяПодачиТранспорта,
    вгтЗаказТрансфераОтправленныеСМСПассажиру.Ссылка КАК Ссылка1,
    вгтЗаказТрансфераОтправленныеСМСПассажиру.Пользователь,
    вгтЗаказТрансфераОтправленныеСМСПассажиру.ДатаОтправки КАК ДатаОтправки,
    вгтЗаказТрансфераОтправленныеСМСПассажиру.ОтправленоЧасовЗа КАК ОтправленоЧасовЗа
ИЗ
    Документ.вгтЗаказТрансфера.ОтправленныеСМСПассажиру КАК вгтЗаказТрансфераОтправленныеСМСПассажиру
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.вгтЗаказТрансфера КАК вгтЗаказТрансфера
        ПО вгтЗаказТрансфераОтправленныеСМСПассажиру.Ссылка = вгтЗаказТрансфера.Ссылка
ГДЕ
    вгтЗаказТрансфера.ДатаВремяПодачиТранспорта МЕЖДУ &НачДата И &КонДата
    И вгтЗаказТрансфераОтправленныеСМСПассажиру.ОтправленоЧасовЗа <> &КолЧасов
    И вгтЗаказТрансфера.Ссылка = &Док

УПОРЯДОЧИТЬ ПО
    ДатаВремяПодачиТранспорта
|
В запросе выбираю документ по переданной ссылке, в его тч две строки, в одну строку проставил значение 1. И уже в запросе одна строка. А можно ли сделать что бы документ вообще уже не отбирался? Думаю сделать это отдельным реквизитом. Тогда документ не отберется, а так получается не отберется просто строка в которой есть это число. Либо запрос нужно по иному строить.
1 salvator
 
06.03.15
09:46
Поток сознания какой-то.
p.s. делай запрос напрямую к табличной части без соединения. И выдергивай оттуда ссылку.
2 Mankubus
 
06.03.15
09:48
1. выбрать все документы
2. выбрать из 1 документы с нужным числом
3. выбрать документы из 1 исключив 2
3 LivingStar
 
06.03.15
09:48
(1) задача в том, что если я передаю в запрос параметр 1 (один час) и у документа в табличной части есть строка с полем в котором есть значение 1, то этот документ не должен уже попасть в выборку

а получается что если у документа 4 строки и в одной есть значение 1, то в выборку попадет 3 строки этого документа

а нужно что бы этот документ уже не попал в выборку

вот и думаю эти поля занести в реквизиты документа в не в табличную часть
4 D_E_S_131
 
06.03.15
09:49
(2) Вы случайно не ведете курсы по оптимальному построению запросов?
5 LivingStar
 
06.03.15
09:50
(2) да спасибо, видимо верный алгоритм предлагаете
6 salvator
 
06.03.15
09:52
ВЫБРАТЬ
    Док.Ссылка,
    Док.Ссылка.ДатаВремяПодачиТранспорта КАК ДатаВремяПодачиТранспорта,
    Док.Ссылка КАК Ссылка1,
    Док.Пользователь,
    Док.ДатаОтправки КАК ДатаОтправки,
    Док.ОтправленоЧасовЗа КАК ОтправленоЧасовЗа
ИЗ
    Документ.вгтЗаказТрансфера.ОтправленныеСМСПассажиру КАК Док
ГДЕ
    Док.Ссылка.ДатаВремяПодачиТранспорта МЕЖДУ &НачДата И &КонДата
    И ВЫБОР КОГДА Док.ОтправленоЧасовЗа <> &КолЧасов ТОГДА ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЦ
    И Док.Ссылка = &Док

УПОРЯДОЧИТЬ ПО
    ДатаВремяПодачиТранспорта
7 D_E_S_131
 
06.03.15
09:53
(5) Выборка в ВТ с обозначением ненужного числа как Истина и группировка по Ссылке с вычислением Максимума по полю-числу. Дальше выбираете из ВТ Ссылки, у которых числовое поле не Истина.
8 salvator
 
06.03.15
09:53
Только я вот не понимаю: нахрена тебе писать запрос, если в нем ты просматриваешь только ОДИН документ?
9 salvator
 
06.03.15
09:59
ГДЕ
    вгтЗаказТрансфера.ДатаВремяПодачиТранспорта МЕЖДУ &НачДата И &КонДата
    И вгтЗаказТрансфера.Ссылка = &Док

А это вообще феерично.
10 LivingStar
 
06.03.15
09:59
(8) фильтр я сделал на документ у которого в тч 2 строки, поставил в одну 1, и запрос что в (0) выбрал вторую, где нет 1, а нужно что бы этот документ вообще не выбирался

фильтр по документу для проверки сделал

добавив ваше условие документ исчез из выборки

но сейчас, запрос

ВЫБРАТЬ
    вгтЗаказТрансфера.Ссылка,
    вгтЗаказТрансфера.ДатаВремяПодачиТранспорта КАК ДатаВремяПодачиТранспорта,
    вгтЗаказТрансфераОтправленныеСМСПассажиру.Ссылка КАК Ссылка1,
    вгтЗаказТрансфераОтправленныеСМСПассажиру.Пользователь,
    вгтЗаказТрансфераОтправленныеСМСПассажиру.ДатаОтправки КАК ДатаОтправки,
    вгтЗаказТрансфераОтправленныеСМСПассажиру.ОтправленоЧасовЗа КАК ОтправленоЧасовЗа
ИЗ
    Документ.вгтЗаказТрансфера.ОтправленныеСМСПассажиру КАК вгтЗаказТрансфераОтправленныеСМСПассажиру
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.вгтЗаказТрансфера КАК вгтЗаказТрансфера
        ПО вгтЗаказТрансфераОтправленныеСМСПассажиру.Ссылка = вгтЗаказТрансфера.Ссылка
ГДЕ
    вгтЗаказТрансфера.ДатаВремяПодачиТранспорта МЕЖДУ &НачДата И &КонДата
    И вгтЗаказТрансфераОтправленныеСМСПассажиру.ОтправленоЧасовЗа <> &КолЧасов
    И вгтЗаказТрансфера.Ссылка = &Док
    И ВЫБОР
            КОГДА вгтЗаказТрансфераОтправленныеСМСПассажиру.ОтправленоЧасовЗа <> &КолЧасов
                ТОГДА ЛОЖЬ
            ИНАЧЕ ИСТИНА
        КОНЕЦ

УПОРЯДОЧИТЬ ПО
    ДатаВремяПодачиТранспорта

вообще ничего не выбирает вне зависимости от параметра &КолЧасов

а должен, если к примеру я меняю значение 1 на 8, то появляются строки, вообще стер значение параметра, запрос так же ничего не выбирает уже
11 salvator
 
06.03.15
10:02
Насчет (6) погорячился. Тут нужно как в (7) делать, да.
12 LivingStar
 
06.03.15
10:04
(7)(11) Ок сейчас попробую, спасибо!!!!
задача в общем если в документе в тч есть значение 1 то не выбирать этот документ вообще
13 salvator
 
06.03.15
10:07
(12) На (8) ответь.
14 LivingStar
 
06.03.15
10:07
(7) так отберутся строки где нет этого значения и опять же документ этот будет присутствовать в вбыорке
15 LivingStar
 
06.03.15
10:08
(13) так ответил же, просто хотел на одном документе проверить, исчезнет ли он из выборки или нет
16 LivingStar
 
06.03.15
10:08
(13) в (10) же ответ
17 salvator
 
06.03.15
10:09
(14) Все нормально отработает, если запрос правильно написать. Можно и без ВТ обойтись, используя конструкцию ИМЕЮЩИЕ.
(16) Ок
18 D_E_S_131
 
06.03.15
10:11
(17) Точно! Я ступил...
19 LivingStar
 
06.03.15
10:12
(17) не доходит как должен выглядеть текст запроса
20 salvator
 
06.03.15
10:15
(19) Пример. Подгони под свой документ.

ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
    МАКСИМУМ(ВЫБОР
            КОГДА РеализацияТоваровУслугТовары.Количество = &Количество
                ТОГДА ИСТИНА
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ) КАК ЕстьКоличество
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
    РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаН И &ДатаО
СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслугТовары.Ссылка
ИМЕЮЩИЕ МАКСИМУМ(ВЫБОР
            КОГДА РеализацияТоваровУслугТовары.Количество = &Количество
                ТОГДА ИСТИНА
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ) = ЛОЖЬ
21 LivingStar
 
06.03.15
10:17
(20) а в конструкторе эти имеющие задается где?
22 LivingStar
 
06.03.15
11:14
ничего оно не работает

ВЫБРАТЬ
    вгтЗаказТрансфераОтправленныеСМСПассажиру.Ссылка,
    МАКСИМУМ(ВЫБОР
            КОГДА вгтЗаказТрансфераОтправленныеСМСПассажиру.ОтправленоЧасовЗа = &КолЧасов
                ТОГДА ИСТИНА
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ) КАК ЕстьКоличество,
    вгтЗаказТрансфераОтправленныеСМСПассажиру.Ссылка.ДатаВремяПодачиТранспорта
ИЗ
    Документ.вгтЗаказТрансфера.ОтправленныеСМСПассажиру КАК вгтЗаказТрансфераОтправленныеСМСПассажиру
ГДЕ
    вгтЗаказТрансфераОтправленныеСМСПассажиру.Ссылка.ДатаВремяПодачиТранспорта МЕЖДУ &НачДата И &КонДата

СГРУППИРОВАТЬ ПО
    вгтЗаказТрансфераОтправленныеСМСПассажиру.Ссылка

ИМЕЮЩИЕ
    МАКСИМУМ(ВЫБОР
            КОГДА вгтЗаказТрансфераОтправленныеСМСПассажиру.ОтправленоЧасовЗа = &КолЧасов
                ТОГДА ИСТИНА
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ) = ЛОЖЬ

УПОРЯДОЧИТЬ ПО
    вгтЗаказТрансфераОтправленныеСМСПассажиру.Ссылка.ДатаВремяПодачиТранспорта
23 palpetrovich
 
06.03.15
11:31
(22) у меня (20) работает как задумано
убери для прикола
вгтЗаказТрансфераОтправленныеСМСПассажиру.Ссылка.ДатаВремяПодачиТранспорта
и упорядочиваеие по нему. Ну и  &КолЧасов - правильно задаешь?
24 LivingStar
 
06.03.15
11:53
вот так в выборке нет того документа у которого в тч есть число заданное в параметре
|
ВЫБРАТЬ
    вгтЗаказТрансфераОтправленныеСМСПассажиру.Ссылка,
    МАКСИМУМ(ВЫБОР
            КОГДА вгтЗаказТрансфераОтправленныеСМСПассажиру.ОтправленоЧасовЗа = &КолЧасов
                ТОГДА ИСТИНА
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ) КАК ЕстьКоличество,
    вгтЗаказТрансфераОтправленныеСМСПассажиру.Ссылка.ДатаВремяПодачиТранспорта
ИЗ
    Документ.вгтЗаказТрансфера.ОтправленныеСМСПассажиру КАК вгтЗаказТрансфераОтправленныеСМСПассажиру
ГДЕ
    вгтЗаказТрансфераОтправленныеСМСПассажиру.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
СГРУППИРОВАТЬ ПО
    вгтЗаказТрансфераОтправленныеСМСПассажиру.Ссылка
ИМЕЮЩИЕ
    МАКСИМУМ(ВЫБОР
            КОГДА вгтЗаказТрансфераОтправленныеСМСПассажиру.ОтправленоЧасовЗа = &КолЧасов
                ТОГДА ИСТИНА
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ) = ЛОЖЬ

УПОРЯДОЧИТЬ ПО
    вгтЗаказТрансфераОтправленныеСМСПассажиру.Ссылка.Дата

|
это так накладывает отбор инструкция ИМЕЮЩИЕ?
25 LivingStar
 
06.03.15
11:54
(23) в колчасов задаю 1, в тч документа в одной из строк тоже 1, и его нет в выборке, то есть он отфильтровался?
26 LivingStar
 
06.03.15
11:59
(24) хитрое сплетение
27 LivingStar
 
06.03.15
12:08
(20) спасибо!!! круто!!! высший класс!!!

пока не дошло полностью как это работает