Имя: Пароль:
1C
1С v8
помогите с условием в запросе
0 Razzle Kay
 
17.05.18
14:09
нужен отчет в виде
ФИО
Ящик            КолВо
Ящик            КолВо

берётся из Возврат товара от покупателя

всё понятно, только ФИО - реквизит "водитель"
нужно, чтобы водители были только те, которые присутствуют в справочнике уатСотрудники
т.е. я знаю, как сделать всё, кроме "отбора" водителя по справочнику уатСотрудники как делать не понятно
1 palladyi
 
17.05.18
14:10
Внутренним соединением?
2 Волшебник
 
17.05.18
14:11
ГДЕ Сотрудник В (ВЫБРАТЬ Ссылка ИЗ уатСотрудники)
3 Волшебник
 
17.05.18
14:11
Запрос к документу — плохая примета.
4 DrWatson
 
17.05.18
14:12
а в возвратах какие ФИО, не справочник уатСотрудники?
5 Razzle Kay
 
17.05.18
14:13
(4) не только
6 palladyi
 
17.05.18
14:16
Внутреннее соединение ПО Водитель.Ссылка = уатСотрудники.Ссылка
7 DrWatson
 
17.05.18
14:16
(5) Опиши что у тебя в возвратах - какой реквизит(ы), какого он типа?
8 Razzle Kay
 
17.05.18
14:22
(7) физлицо
9 DrWatson
 
17.05.18
14:29
(8) И что бы это значило? Тип такой?
Т.е. ссылки на уатСотрудники там напрямую нет?
10 Razzle Kay
 
17.05.18
14:30
(9) справочник ФизЛица
и в уатСотрудники есть реквизит с ссылкой на ФизЛица
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтПокупателя.ВозвратнаяТара КАК ВозвратТоваровОтПокупателяВозвратнаяТара
        ПО (ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.Водитель.Ссылка = уатСотрудники.Ссылка)
пойдёт?
11 DrWatson
 
17.05.18
14:32
ПО (ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.Водитель.= уатСотрудники.ФизЛицо)
12 Razzle Kay
 
17.05.18
14:35
(11) спасибо, надо скд почитать )
13 Razzle Kay
 
18.05.18
13:32
ВЫБРАТЬ
    ВозвратТоваровОтПокупателяВозвратнаяТара.Номенклатура.Ссылка КАК НаименованиеЯщика,
    ВозвратТоваровОтПокупателяВозвратнаяТара.Количество,
    ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.битВодитель.Ссылка КАК ФИОВодителя
ИЗ
    Документ.ВозвратТоваровОтПокупателя.ВозвратнаяТара КАК ВозвратТоваровОтПокупателяВозвратнаяТара
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.уатСотрудники КАК уатСотрудники
        ПО ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.битВодитель = уатСотрудники.ФизЛицо
ГДЕ
    ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.Проведен
    И ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.ПометкаУдаления = ЛОЖЬ
    И ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.Дата МЕЖДУ &ДатаНачало И &ДатаКонец

Как оптимизировать ? На некоторых компах пишет недостаточно оперативной памяти при клике на 'Сформировать" с дата с 01 04 18 по 30 04 18
14 Nikoss
 
18.05.18
13:36
(13) зачем везде ".Ссылка..."

убери и все заработает
15 Razzle Kay
 
18.05.18
13:37
(14) шутите ?
16 kda26
 
18.05.18
13:39
По грамотному нужно делать запрос к регистру накопления  Продажи.
18 catena
 
18.05.18
13:42
(15) В полях .Ссылка убирай.
19 Nikoss
 
18.05.18
13:42
(15) пародон... это же ТЧ, не углядел
20 Nikoss
 
18.05.18
13:42
(18) в полях да, но не более
21 Nikoss
 
18.05.18
13:43
Надо заранее отобрать данные... иначе запрос берет сначала все документы, делает внутренне соедение, и только потом условия накладываются
22 catena
 
18.05.18
13:44
"    И ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.ПометкаУдаления = ЛОЖЬ
"

Так не надо. Во-первых, НЕ ПометкаУдаления, во-вторых проведенный документ не может быть помечен на удаление.
23 palladyi
 
18.05.18
13:44
Присоедини таблицу ВозвратТоваровОтПокупателя внутренним соединением, все обращения через две "." замени на обращение через эту таблицу с 1 "."
24 palladyi
 
18.05.18
13:46
И тут "ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.битВодитель.Ссылка" не нужна .Ссылка
25 Razzle Kay
 
18.05.18
13:48
(23) а у меня же и так внутреннее соединение ?

ВЫБРАТЬ
    ВозвратТоваровОтПокупателяВозвратнаяТара.Номенклатура КАК НаименованиеЯщика,
    ВозвратТоваровОтПокупателяВозвратнаяТара.Количество,
    ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.битВодитель КАК ФИОВодителя
ИЗ
    Документ.ВозвратТоваровОтПокупателя.ВозвратнаяТара КАК ВозвратТоваровОтПокупателяВозвратнаяТара
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.уатСотрудники КАК уатСотрудники
        ПО ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.битВодитель = уатСотрудники.ФизЛицо
ГДЕ
    ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.Проведен
    И ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.Дата МЕЖДУ &ДатаНачало И &ДатаКонец
26 palladyi
 
18.05.18
13:51
(25) добавь еще одно. К самому документу, не к его таблице тары.

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтПокупателя КАК Возврат
ПО ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка = Возврат.Ссылка
27 palladyi
 
18.05.18
13:51
+ (26) даже лучше сам документ основным сделать, а к нему присоединить тару и сотрудников
28 Razzle Kay
 
18.05.18
13:53
(27) с СКД ток начинаю работать и не особо понимаю, зачем (25) ?
29 Razzle Kay
 
18.05.18
13:53
ВЫБРАТЬ
    ВозвратТоваровОтПокупателяВозвратнаяТара.Номенклатура КАК НаименованиеЯщика,
    ВозвратТоваровОтПокупателяВозвратнаяТара.Количество,
    ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.битВодитель КАК ФИОВодителя
ИЗ
    Документ.ВозвратТоваровОтПокупателя.ВозвратнаяТара КАК ВозвратТоваровОтПокупателяВозвратнаяТара
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.уатСотрудники КАК уатСотрудники
        ПО ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.битВодитель = уатСотрудники.ФизЛицо
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтПокупателя КАК Возврат
        ПО ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка = Возврат.Ссылка
ГДЕ
    ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.Проведен
    И ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.Дата МЕЖДУ &ДатаНачало И &ДатаКонец

имеете ввиду так?
30 palladyi
 
18.05.18
13:56
(29) Нужно уйти от запросов через две точки (то есть через 2 таблицы обращение) для этого нужно все присоединять к документу, а не к его таблице тары

ВЫБРАТЬ
    ВозвратТоваровОтПокупателяВозвратнаяТара.Номенклатура КАК НаименованиеЯщика,
    ВозвратТоваровОтПокупателяВозвратнаяТара.Количество,
    Возврат.битВодитель КАК ФИОВодителя
ИЗ
    Документ.ВозвратТоваровОтПокупателя КАК Возврат
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.уатСотрудники КАК уатСотрудники
        ПО Возврат.битВодитель = уатСотрудники.ФизЛицо
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтПокупателя.ВозвратнаяТара КАК ВозвратТоваровОтПокупателяВозвратнаяТара
        ПО ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка = Возврат.Ссылка
ГДЕ
    Возврат.Проведен
    И Возврат.Дата МЕЖДУ &ДатаНачало И &ДатаКонец

так
31 palladyi
 
18.05.18
13:58
(28) тут суть не в СКД, а в запросах)
32 Razzle Kay
 
18.05.18
13:58
(31) имел ввиду запросы*)
33 Razzle Kay
 
18.05.18
14:00
(31) Всё равно, так же долго формируется
34 Razzle Kay
 
18.05.18
14:02
японимаю, что правильнее было бы обращаться к РН продажи
но не совсем понимаю, как правильно запрос написать
35 Nikoss
 
18.05.18
14:06
(34)
если к документу обращаться, то вот так:

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

писал на коленке, поэтому могут быть синтаксические ошибки
36 Razzle Kay
 
18.05.18
14:10
хз, все варианты долг оформируют за месяц(
37 palladyi
 
18.05.18
14:13
(36) Долго, это сколько? И сколько документов за месяц?
И еще - долго запрос работает, или долго формируется отчет в СКД?
38 Nikoss
 
18.05.18
14:14
последний вариант, если и он долго, надо идти в сторону регистра

ВЫБРАТЬ
    Возврат.Ссылка КАК Ссылка,
    Возврат.битВодитель КАК ФИОВодителя
ПОМЕСТИТЬ ВремТаб
ИЗ
    Документ.ВозвратТоваровОтПокупателя КАК Возврат
ГДЕ
    Возврат.Проведен
    И Возврат.Дата МЕЖДУ &ДатаНачало И &ДатаКонец
    И Возврат.битВодитель В (ВЫБРАТЬ уатСотрудники.ФизЛицо ИЗ Справочник.уатСотрудники КАК уатСотрудники
;
ВЫБРАТЬ
    ВремТаб.ФИОВодителя,
    ВозвратТоваровОтПокупателяВозвратнаяТара.Номенклатура,
    ВозвратТоваровОтПокупателяВозвратнаяТара.Количество
ИЗ
    ВремТаб КАК ВремТаб
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтПокупателя.ВозвратнаяТара КАК ВозвратТоваровОтПокупателяВозвратнаяТара
    ПО ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка = Возврат.Ссылка
39 Razzle Kay
 
18.05.18
14:17
(37) отчет формируется минуты 4 за месяц документов достаточно, но не много
40 Nikoss
 
18.05.18
14:18
(39) в консоле запросов, запрос из (38) за сколько отрабатывает?
41 kda26
 
18.05.18
14:19
ВЫБРАТЬ
    ПродажиОбороты.Регистратор КАК Ссылка
ПОМЕСТИТЬ ВТ_ВОЗВРАТЫ    
ИЗ
    РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ПродажиОбороты
    
ГДЕ
    ПродажиОбороты.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя

СГРУППИРОВАТЬ ПО
    ПродажиОбороты.Регистратор


Далее левое соединение с ТЧ Возвратная тара по ссылке, далее левое соединение с Справочник.уатСотрудники
42 Nikoss
 
18.05.18
14:32
(41) ох я сомневаюсь, что такой подход будет более производительный

и вообще в регистре продаж есть возвратная тара?
43 kda26
 
18.05.18
14:35
(42) Нет, ВозвратнаяТара это ТЧ, потому и соединение с ТЧ. ТСу замерить производительность и выбрать оптимум.
44 Razzle Kay
 
18.05.18
14:38
(40) (38) вообще ничего не выбирает
45 Nikoss
 
18.05.18
14:38
(43) если движений возвратной тары нет в регистре, то и смысла к нему обращаться никакого...
Только для того чтобы отобрать документы? Явно производительнее будет по самому документу сделать запрос.
46 Nikoss
 
18.05.18
14:41
(44) не могёт такого быть

перовая часть запроса, до ";" сколько записей выдаёт?
47 kda26
 
18.05.18
14:47
//вложенный запрос в условии плохо.
//поместить водителей в ВТ

ВЫБРАТЬ уатСотрудники.ФизЛицо ПОМЕСТИТЬ ВТ_ВОДИТЕЛИ ИЗ Справочник.уатСотрудники КАК уатСотрудники
48 Razzle Kay
 
18.05.18
14:47
(46) а как его выполнить ДО ;
49 Razzle Kay
 
18.05.18
14:48
50 Nikoss
 
18.05.18
14:49
(47), из ВТ все равно выбирать)
хотя да, ВТ в памяти храниться будет, то должно быть получше, опять же зависит от кол-во записей, может быть совсем незначительное изменение времени исполнения запроса
51 Nikoss
 
18.05.18
14:50
(49) убери строку с "поместить" и ";"
52 Nikoss
 
18.05.18
14:50
+(51) убери = удали ))
53 kda26
 
18.05.18
14:51
(50) Не будет на каждой итерации дергать базу
54 Razzle Kay
 
18.05.18
14:53
(51) повисло и предложило 'Отладка" и "закрыть программу"
55 Nikoss
 
18.05.18
14:54
(54) Вот такой запрос повесил базу?
ВЫБРАТЬ
    Возврат.Ссылка КАК Ссылка,
    Возврат.битВодитель КАК ФИОВодителя
ИЗ
    Документ.ВозвратТоваровОтПокупателя КАК Возврат
ГДЕ
    Возврат.Проведен
    И Возврат.Дата МЕЖДУ &ДатаНачало И &ДатаКонец
    И Возврат.битВодитель В (ВЫБРАТЬ уатСотрудники.ФизЛицо ИЗ Справочник.уатСотрудники КАК уатСотрудники
56 Razzle Kay
 
18.05.18
14:56
ну
57 Razzle Kay
 
18.05.18
14:56
мб из-за говно пк?
58 Nikoss
 
18.05.18
15:00
ВЫБРАТЬ уатСотрудники.ФизЛицо
    ПОМЕСТИТЬ ВТ_ВОДИТЕЛИ
ИЗ Справочник.уатСотрудники КАК уатСотрудники
;
ВЫБРАТЬ
    Возврат.Ссылка КАК Ссылка,
    Возврат.битВодитель КАК ФИОВодителя
ИЗ
    Документ.ВозвратТоваровОтПокупателя КАК Возврат
ГДЕ
    Возврат.Проведен
    И Возврат.Дата МЕЖДУ &ДатаНачало И &ДатаКонец
    И Возврат.битВодитель В (ВЫБРАТЬ ВТ_ВОДИТЕЛИ.ФизЛицо ИЗ ВТ_ВОДИТЕЛИ КАК ВТ_ВОДИТЕЛИ)
59 kda26
 
18.05.18
15:00
Параметры проверь, может там мега большой период.
60 Nikoss
 
18.05.18
15:01
(58) это последний шанс)
если и это повешает базу - беда)

или у тебя там по 100 тыс документов в месяце и 200 тыс уатСотрудниев?
61 Razzle Kay
 
18.05.18
15:02
(59) месяц
62 Razzle Kay
 
18.05.18
15:03
(60) ну доков в 2 раза помньше
а сотров подавно не 200к
63 Razzle Kay
 
18.05.18
15:04
ладно, со свежей головой в пн с утра сяду и сделаю, всем спасибо за инфу)
64 ColonelAp4u
 
18.05.18
15:26
(62) 50к документов?
65 Nikoss
 
18.05.18
17:25
(64) причем возвратов? :-/
66 Razzle Kay
 
22.05.18
05:50
(65) возвратная тара
подскажите, как в скд уловие поставить "где реквизит1 заполнен"
67 catena
 
22.05.18
06:08
(66)Зависит от типа незаполненности.
"не Есть NULL",
"<>Неопределено",
"<>Значение(Справочник.Такойто.ПустаяСсылка)"
68 Razzle Kay
 
22.05.18
06:20
(67) ну вообще тип реквизита ссылка на спр физлица
69 Razzle Kay
 
22.05.18
06:29
(67) ВозвратТоваровОтПокупателяВозвратнаяТара.Ссылка.битВодитель <>
с этим как правильно ?
70 catena
 
22.05.18
06:30
<>Значение(Справочник.ФизическиеЛица.ПустаяСсылка)
71 Razzle Kay
 
22.05.18
06:41
омг, я даун (70) спасибо, туплю жестко )
72 Razzle Kay
 
05.06.18
08:05
чтоб не плодить
как сделать в запросе условие "Если на основании Реализации есть Возврат, то эту Реализацию выводить не нужно"
73 catena
 
05.06.18
08:23
1) не в (реализация,возврат)

2) левое соединение с Возврат где Возврат есть NULL
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.