Имя: Пароль:
1C
1С v8
Убрать повторяющиеся по определенному реквизиту
0 mrzed12
 
18.07.13
13:18
Привет, помогите.
Есть результат запроса например:
реквЗнач1 реквЗнач2 реквЗнач3
1         А         Петров
1         Б         Сидоров
2         В         Иванов
3         Г         Васечкин

мне нужно получить только записи с различными реквизитом1:
1         А         Петров
2         В         Иванов
3         Г         Васечкин

никак не могу сообразить )
1 Cube
 
18.07.13
13:19
Сгруппируй по реквизиту1
2 1Сергей
 
18.07.13
13:20
Почему не Сидоров?
3 mrzed12
 
18.07.13
13:26
(1) группировать - нужно указывать и все остальные колонки..
(2) а почему не Сидоров - реквЗнач2 это название маркетинговой программы, и оно должно быть только один раз.
Должно быть либо А В Г
либо Б В Г
мне без разницы, главное чтоб один раз. а так получается что идет и А и Б
4 1Сергей
 
18.07.13
13:27
(3) вот тебе без разницы, а компьютеру надо что-то выбрать
5 Aprobator
 
18.07.13
13:28
(4) минимальное значение походу там надо выбрать.
6 1Сергей
 
18.07.13
13:30
Тогда так:

ВЫБРАТЬ
   реквЗнач1,
   МИНИМУМ(реквЗнач2),
   МИНИМУМ(реквЗнач3)
ИЗ
   КакаяТоТаблица
СГРУППИРОВАТЬ ПО
   реквЗнач1
7 1Сергей
 
18.07.13
13:30
*ГРУППИРОВАТЬ
8 Aprobator
 
18.07.13
13:30
(6) третий реквизит зачем?
9 1Сергей
 
18.07.13
13:31
(8) см (0)

(7) - сторно
10 Aprobator
 
18.07.13
13:33
хотя хз из чего там это все выбирается. Если соотношение Реквизит1, Реквизит2, Реквизит3 не уникально, то вместо 5 минут - 10 минут возни )
11 mrzed12
 
18.07.13
13:33
(3) вот и парюсь, как объяснить что выбрать только один раз
(4) минимальное не подходит, т.к. реквЗнач1 это номер строки и мне нужно чтоб вошли все строки, но только по одному разу,
а остальные реквизиты это из табличной части и они все нужны..
12 1Сергей
 
18.07.13
13:35
(11) дык, оно так и войдёт всё. Кароче, объясни нормально, что тебе надо
13 Aprobator
 
18.07.13
13:38
РАЗЛИЧНЫЕ
14 kosts
 
18.07.13
13:40
Что-то в этом роде

реквЗнач1 реквЗнач2 реквЗнач3

1         А         Петров
1         Б         Сидоров
2         В         Иванов
3         Г         Васечкин
Поместить ВТ0;
Выбрать Различные
   реквЗнач2,
   реквЗнач3
Поместить ВТ00
Из ВТ0 как ВТ0;
ВЫБРАТЬ
   реквЗнач1,
   МИНИМУМ(реквЗнач2) как реквЗнач2
Поместить ВТ1
ИЗ
   КакаяТоТаблица
ГРУППИРОВАТЬ ПО
   реквЗнач1
;
Выбрать
   ВТ1.реквЗнач1,
   ВТ1.реквЗнач2,
   ВТ00.реквЗнач3
Из ВТ1 как ВТ1
Левое соединение ВТ00 как ВТ00 по ВТ1.реквЗнач2 = ВТ00.реквЗнач2
15 kosts
 
18.07.13
13:41
(14) + Может и без временных таблиц можно. Думать не охота.
16 1Сергей
 
18.07.13
13:42
(14)

реквЗнач1 реквЗнач2 реквЗнач3

1         А         Петров
1         Б         Сидоров
2         В         Иванов
3         Г         Васечкин
Поместить ВТ0;

круть! отборная трава была, да?
17 AlexITGround
 
18.07.13
13:42
(14) так не интересно
18 mrzed12
 
18.07.13
13:43
(12) по этой выборке будут сформированы движения по регистру накопления. и по 1й строке пройдет дважды (как по выборке) Если у нменя
1         А         Петров     100
1         Б         Сидоров    100
2         В         Иванов     100
3         Г         Васечкин   100
то в регистр накопится 400
а мне нужно 300
т.е. каким-то образом взять только уникальные номера строк..
19 1Сергей
 
18.07.13
13:48
(18) а про то, что у тебя там еще есть реквизит, который надо просуммировать, ты сообщить как-то забыл, да?
20 kosts
 
18.07.13
13:49
(18) Из запроса для регистра можно выкинуть всё лишнее, что бы данные не дублировались.
21 mrzed12
 
18.07.13
13:53
(19) это результат строк, которые будут в движении регистра
(18) вот мне и нужно оставить строку с номером "1" одну из и будет это Петров или Сидоров - без разницы
22 1Сергей
 
18.07.13
13:53
вот без ВТ:


ВЫБРАТЬ
   Выборка1.реквЗнач1,
   Выборка1.реквЗнач2,
   Выборка2.реквЗнач2,
   Выборка2.реквЗнач3
ИЗ
   (ВЫБРАТЬ
       реквЗнач1,
       МИНИМУМ(реквЗнач2)
   ИЗ
       КакаяТоТаблица
   ) КАК Выборка1
   ЛЕВОЕ СОЕДИНЕНИЕ
       КакаяТоТаблица КАК Выборка2
   ПО
       Выборка1.реквЗнач1 = Выборка2.реквЗнач1
       И Выборка1.реквЗнач2 = Выборка2.реквЗнач2
23 kosts
 
18.07.13
13:54
Проверил (14), всё работает

реквЗнач1    реквЗнач2    реквЗнач3
1    А    Петров
2    В    Иванов
3    Г    Васечкин
24 mrzed12
 
18.07.13
13:54
но в корректности (14) я как-то сомневаюсь ))
25 kosts
 
18.07.13
13:55
(24) Твоего варианта мы не видели...
26 kosts
 
18.07.13
13:55
(24) Ну и да креститься не забывай =)
27 1Сергей
 
18.07.13
13:56
(22) + СГРУППИРОВАТЬ забыл во внутреннем запросе
28 mrzed12
 
18.07.13
13:59
я сделал наподобие (22), вроде получилось..
хотя в (14) примерно тот же смысл.. направление понятно
СПАСИБО!!!!