Имя: Пароль:
1C
1С v8
Исключить повторение.
,
0 antihacker
 
28.06.14
15:59
Добрый день !

Вот запрос который выводит список контрагентов которые получили оборудования.

ВЫБРАТЬ
    ПеремещениеОборудованияЗаБалансом.тбОборудование.(
        КонтрагентПолучатель,
        СотрудникПолучатель
    ),
    ПеремещениеОборудованияЗаБалансом.Дата
ИЗ
    Документ.ПеремещениеОборудованияЗаБалансом КАК ПеремещениеОборудованияЗаБалансом
ГДЕ
    ПеремещениеОборудованияЗаБалансом.Дата >= &Дата
    И ПеремещениеОборудованияЗаБалансом.тбОборудование.СотрудникПолучатель = &СотрудникПолучатель


Но если контрагент получал 2 раза, его соответственно выводит 2раза. Как сделать так что бы выводил 1 раз ?

За ранее спасибо.
1 Мимохожий Однако
 
28.06.14
16:06
Поле дата обязательно? Убери поле дата, добавь группировку по сотруднику
2 kobzon
 
28.06.14
16:08
А не по контрагенту группировку нада?
3 antihacker
 
28.06.14
16:09
Да мне нужно в интервале времени. Может группировку по КонтрагентПолучатель ? Он и есть тот кто получает.
4 Мимохожий Однако
 
28.06.14
16:10
Для отбора выводить дату не обязательно. Достаточно в условии указать. Возьми консоль запросов и поэкспериментируй.
5 antihacker
 
28.06.14
16:12
Я там и делаю.

делаю группировку получаю такой запрос

    "ВЫБРАТЬ
    |    ПеремещениеОборудованияЗаБалансом.тбОборудование.(
    |        КонтрагентПолучатель,
    |        СотрудникПолучатель
    |    ),
    |    ПеремещениеОборудованияЗаБалансом.Дата
    |ИЗ
    |    Документ.ПеремещениеОборудованияЗаБалансом КАК ПеремещениеОборудованияЗаБалансом
    |ГДЕ
    |    ПеремещениеОборудованияЗаБалансом.Дата >= &Дата
    |    И ПеремещениеОборудованияЗаБалансом.тбОборудование.СотрудникПолучатель = &СотрудникПолучатель
    |
    |СГРУППИРОВАТЬ ПО
    |    ПеремещениеОборудованияЗаБалансом.тбОборудование.(КонтрагентПолучатель)";

но такая ошибка

{Форма.Отчет(46)}: Ошибка при вызове метода контекста (Выполнить): {(2, 2)}: Группировка по таблицам верхнего уровня и вложенным таблицам
<<?>>ПеремещениеОборудованияЗаБалансом.тбОборудование.(
    Результат = Запрос.Выполнить();
по причине:
{(2, 2)}: Группировка по таблицам верхнего уровня и вложенным таблицам
<<?>>ПеремещениеОборудованияЗаБалансом.тбОборудование.(
6 Мимохожий Однако
 
28.06.14
16:15
Убери для начала
  |    ПеремещениеОборудованияЗаБалансом.Дата
7 Мимохожий Однако
 
28.06.14
16:16
И попробуй взять не документ, а табличную часть документа в запрос
8 kobzon
 
28.06.14
16:17
И наверно можно уже так писать:
|СГРУППИРОВАТЬ ПО
    |    ПеремещениеОборудованияЗаБалансом.КонтрагентПолучатель;
9 antihacker
 
28.06.14
16:18
Дату убрал не помогло.
10 Мимохожий Однако
 
28.06.14
16:18
Полный запрос покажи
11 Мимохожий Однако
 
28.06.14
16:19
Возьми не таблицу документа в качестве источника, а табличную часть тбОборудование
12 antihacker
 
28.06.14
16:19
"ВЫБРАТЬ
    |    ПеремещениеОборудованияЗаБалансом.тбОборудование.(
    |        КонтрагентПолучатель,
    |        СотрудникПолучатель
    |    )
    |ИЗ
    |    Документ.ПеремещениеОборудованияЗаБалансом КАК ПеремещениеОборудованияЗаБалансом
    |ГДЕ
    |    ПеремещениеОборудованияЗаБалансом.Дата >= &Дата
    |    И ПеремещениеОборудованияЗаБалансом.тбОборудование.СотрудникПолучатель = &СотрудникПолучатель
    |
    |СГРУППИРОВАТЬ ПО
    |    ПеремещениеОборудованияЗаБалансом.тбОборудование.(КонтрагентПолучатель)";
13 Мимохожий Однако
 
28.06.14
16:20
См (11) ты вместо поля КонтрагентПолучатель получаешь таблицу значений
14 antihacker
 
28.06.14
16:20
ПеремещениеОборудованияЗаБалансом.КонтрагентПолучатель;

Пишет не найдено поле
15 Мимохожий Однако
 
28.06.14
16:21
Пишешь запрос руками или конструктором?
16 antihacker
 
28.06.14
16:21
Конструктором.
А как брать только табличную часть ?
17 Мимохожий Однако
 
28.06.14
16:22
Разверни ветку документа и укажи
18 antihacker
 
28.06.14
16:23
Это где вкладка группировка ?
19 Мимохожий Однако
 
28.06.14
16:24
жми не бойся
20 antihacker
 
28.06.14
16:28
Ну я так и делаю и такой запрос получаю.
21 Мимохожий Однако
 
28.06.14
16:31
Запрос показывай. Скобок не должно быть. Какая структура у табличной части? Какие у нее реквизиты?
22 antihacker
 
28.06.14
16:34
Вот запрос

ВЫБРАТЬ
    ПеремещениеОборудованияЗаБалансом.тбОборудование.(
        КонтрагентПолучатель,
        ПРЕДСТАВЛЕНИЕ(ПеремещениеОборудованияЗаБалансом.тбОборудование.КонтрагентПолучатель),
        СотрудникПолучатель,
        ПРЕДСТАВЛЕНИЕ(ПеремещениеОборудованияЗаБалансом.тбОборудование.СотрудникПолучатель)
    )
ИЗ
    Документ.ПеремещениеОборудованияЗаБалансом КАК ПеремещениеОборудованияЗаБалансом
ГДЕ
    ПеремещениеОборудованияЗаБалансом.Дата >= &Дата

СГРУППИРОВАТЬ ПО
    ПеремещениеОборудованияЗаБалансом.тбОборудование.(СотрудникПолучатель,
    КонтрагентПолучатель)

Когда добавляю только КонтрагентПолучатель, то СотрудникПолучатель тоже попадает в запрос. Хотя в поле "групповое поле" конструктора его нет. Когда нажимаю ок выводит Ошибка при вызове метода контекста (Выполнить): {(2, 2)}: Группировка по таблицам верхнего уровня и вложенным таблицам
23 2S
 
28.06.14
16:34
перепиши запрос через табличную часть
24 2S
 
28.06.14
16:38
ЫБРАТЬ
блабла
ИЗ
    Документ.ПеремещениеОборудованияЗаБалансом.тбОборудование
25 antihacker
 
28.06.14
16:39
2S, можешь писать полностью
26 Мимохожий Однако
 
28.06.14
16:48
Для начала
Выбрать
*
ИЗ
    Документ.ПеремещениеОборудованияЗаБалансом.тбОборудование
27 antihacker
 
28.06.14
16:51
аууууу
28 antihacker
 
28.06.14
16:52
В таком варианте ругает что поле Дата не найдено.
29 2S
 
28.06.14
16:57
к дате надо обращаться по ссылке в этом случае
Консоль в руки
30 Мимохожий Однако
 
28.06.14
16:57
Скопируй (26)в свою консоль и посмотри
31 Мимохожий Однако
 
28.06.14
16:58
Выбрать

*
ИЗ
    Документ.ПеремещениеОборудованияЗаБалансом.тбОборудование
32 antihacker
 
28.06.14
17:08
пишет    Документ.ПеремещениеОборудованияЗаБалансом.тбОборудование

не найдено
33 antihacker
 
28.06.14
17:08
"ВЫБРАТЬ
    |    ПеремещениеОборудованияЗаБалансом.тбОборудование.(
    |        КонтрагентПолучатель,
    |        ПРЕДСТАВЛЕНИЕ(ПеремещениеОборудованияЗаБалансом.тбОборудование.КонтрагентПолучатель),
    |        СотрудникПолучатель,
    |        ПРЕДСТАВЛЕНИЕ(ПеремещениеОборудованияЗаБалансом.тбОборудование.СотрудникПолучатель)
    |    )
    |ИЗ
    |        Документ.ПеремещениеОборудованияЗаБалансом.тбОборудование ";
34 antihacker
 
28.06.14
17:09
Ребята вы подсказываете один путь, но у отказывает другая часть решения.

Исправьте мой запрос с конструктора.

Как должно быть в целом ?
35 2S
 
28.06.14
17:10
ВЫБРАТЬ
    |    тбОборудование.КонтрагентПолучатель,
    |    тбОборудование.СотрудникПолучатель,
    |ИЗ
    |        Документ.ПеремещениеОборудованияЗаБалансом.тбОборудование КАК тбОборудование";

дату получишь как тбОборудование.Ссылка.Дата
36 antihacker
 
28.06.14
17:32
ВЫБРАТЬ
    ПеремещениеОборудованияЗаБалансомтбОборудование.КонтрагентПолучатель,
    ПеремещениеОборудованияЗаБалансомтбОборудование.СотрудникПолучатель,
    ПеремещениеОборудованияЗаБалансомтбОборудование.Ссылка.Дата
ИЗ
    Документ.ПеремещениеОборудованияЗаБалансом.тбОборудование КАК ПеремещениеОборудованияЗаБалансомтбОборудование
ГДЕ
    ПеремещениеОборудованияЗаБалансомтбОборудование.Ссылка.Дата >= &Дата
    И ПеремещениеОборудованияЗаБалансомтбОборудование.СотрудникПолучатель = &СотрудникПолучатель


и это работает, но записи повторяются
37 wanderer_ица
 
28.06.14
17:36
Сотрудника и дату уберите из запроса
38 antihacker
 
28.06.14
17:37
Так я же по ним фильтрую...
39 antihacker
 
28.06.14
17:40
вот так вроде работает

ВЫБРАТЬ
    ПеремещениеОборудованияЗаБалансомтбОборудование.КонтрагентПолучатель КАК КонтрагентПолучатель
ИЗ
    Документ.ПеремещениеОборудованияЗаБалансом.тбОборудование КАК ПеремещениеОборудованияЗаБалансомтбОборудование
ГДЕ
    ПеремещениеОборудованияЗаБалансомтбОборудование.Ссылка.Дата >= &Дата
    И ПеремещениеОборудованияЗаБалансомтбОборудование.СотрудникПолучатель = &СотрудникПолучатель

СГРУППИРОВАТЬ ПО
    ПеремещениеОборудованияЗаБалансомтбОборудование.КонтрагентПолучатель
40 dj_serega
 
28.06.14
19:45
(38) Элементы условия не обязательны в полях запроса.
41 m-serg74
 
28.06.14
22:14
(39) думаю ВЫБРАТЬ РАЗЛИЧНЫЕ
быстрее чем ВЫБРАТЬ + ГРУППИРОВАТЬ