Имя: Пароль:
1C
1С v8
Выборка одинаковых записей
0 Дурындина
 
04.04.14
14:11
Привет, народ! Нужен снова совет по по запросу!
Задача такая -есть регистр с измерениями - заказ, номенклатура и спецификация.
в регистре могут быть записи с одинаковой номенклатурой, но разной спецификации, и именно такие записи и нужно выбирать!
Выглядит регистр следующим образом:
заказ1    штырь     спецШтырь
заказ1    штырь     null
заказ1    штырь     спецШтырь
заказ1    болт      спецБолт
зака31    штырь     спецШтырь1

мне же, нужно получить выборку следующим образом:
заказ1
   штырь    СпецШтырь
   штырь    Спецштырь1
   штырь    null
(Соответсвенно запись болт отсекается, так как она в регистре всего одна, с одной спецификацией)
1 Дурындина
 
04.04.14
14:15
да, и при этом одинаковые записи, двойные(1 и 3 строка)объединяются. у кого какие идеи? у меня дальше запроса дело не идет, в нем я выбираю номенклатуру, которая встречается больше одного раза, как еще и выбирать разные спецификации не представляю

ВЫБРАТЬ  
    ЗаказыНаПроизводство.Заказ,
    ЗаказыНаПроизводство.Номенклатура КАК Номенклатура,
    Количество( ЗаказыНаПроизводство.Номенклатура) Как Количество
ИЗ
    РегистрНакопления.ЗаказыНаПроизводство КАК ЗаказыНаПроизводство
  

СГРУППИРОВАТЬ ПО
    ЗаказыНаПроизводство.Регистратор,
    ЗаказыНаПроизводство.Номенклатура
    
    
    Имеющие  Количество(ЗаказыНаПроизводство.Номенклатура) >1
2 DmVl76
 
04.04.14
15:21
Как-то так
[Code]
ВЫБРАТЬ  
    ЗаказыНаПроизводство.Заказ,
    ЗаказыНаПроизводство.Номенклатура КАК Номенклатура,
    Количество( ЗаказыНаПроизводство.Номенклатура) Как Количество
ПОМЕСТИТЬ втЗаказыНоменклатура
ИЗ
    РегистрНакопления.ЗаказыНаПроизводство КАК ЗаказыНаПроизводство
  

СГРУППИРОВАТЬ ПО
    ЗаказыНаПроизводство.Регистратор,
    ЗаказыНаПроизводство.Номенклатура
    
    
    Имеющие  Количество(ЗаказыНаПроизводство.Номенклатура) >1;

ВЫБРАТЬ РАЗЛИЧНЫЕ
ЗаказыНаПроизводство.Заказ,
    ЗаказыНаПроизводство.Номенклатура КАК Номенклатура,
    ЗаказыНаПроизводство.Спецификация
ИЗ
    РегистрНакопления.ЗаказыНаПроизводство КАК ЗаказыНаПроизводство
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЗаказыНоменклатура КАК втЗаказыНоменклатура ПО ЗаказыНаПроизводство.Заказ=втЗаказыНоменклатура.Заказ И ЗаказыНаПроизводство.Номенклатура=втЗаказыНоменклатура.Номенклатура
[Code]
3 Бенни
 
04.04.14
15:35
(0)Или так
<CODE>
Выбрать Различные
Заказы.Заказ,
Заказы.Номенклатура,
Заказы.Спецификация
  
  ИЗ РегистрНакопления.РегистрНакопления Как Заказы
  Правое Соединение (Выбрать
  РН.Заказ,
  РН.Номенклатура,
  РН.Спецификация,
  Количество(РН1.Номенклатура) КАК КолНом
  
  ИЗ РегистрНакопления.РегистрНакопления1 Как РН
  
  Сгруппировать ПО
  РН1.Заказ,
  РН1.Номенклатура,
  РН1.Спецификация) КАК РК
  
  ПО Заказы.Номенклатура = РК.Номенклатура И Заказы.Заказ=РК.Заказ
  ГДЕ КолНом>1
    
Итоги По
Заказы.Заказ
</CODE>
4 Дурындина
 
04.04.14
15:35
DmVl76, Да, я думала об этом!Однако, я извиняюсь,не уточнила деталь, в регистре может быть и такое:
заказ1    штырь     спецШтырь
заказ1    штырь     null
заказ1    штырь     спецШтырь
заказ1    БОЛТ      СПЕЦБОЛТ
зака31    штырь     спецШтырь1
заказ1    БОЛТ      СПЕЦБОЛТ



так вот, в данном случае в запрос попадут штырь и болт, а должен только штырь, так как у болта и в том и в другом случае спецификация одинаковая,
5 hhhh
 
04.04.14
15:39
(4) Выбрать Различные - не забывай, болт никак не попадет.
6 Дурындина
 
04.04.14
15:48
К сожалению попадает  этот болт((
7 Бенни
 
04.04.14
15:50
(0) А по какому правилу должна выбираться номенклатура? Можно параметром передать?
8 Дурындина
 
04.04.14
15:53
нет, параметром к сожалению нельзя(((((
9 Дурындина
 
04.04.14
15:53
как вариант выбирать из документа, но думаю принципиальных различий нету
10 gornovrom
 
04.04.14
15:56
ВЫБРАТЬ
    Таб.Номенклатура,
    Таб.Спецификация
ПОМЕСТИТЬ ИсходнаяТаблица
ИЗ
    &Таб КАК Таб
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ИсходнаяТаблица.Номенклатура,
    ИсходнаяТаблица.Спецификация
ПОМЕСТИТЬ ИсходнаяТаблицаСгруппированная
ИЗ
    ИсходнаяТаблица КАК ИсходнаяТаблица
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ИсходнаяТаблицаСгруппированная.Номенклатура,
    ИсходнаяТаблицаСгруппированная.Спецификация,
    СУММА(1) КАК КоличествоСпецификаций
ИЗ
    ИсходнаяТаблицаСгруппированная КАК ИсходнаяТаблицаСгруппированная

СГРУППИРОВАТЬ ПО
    ИсходнаяТаблицаСгруппированная.Номенклатура,
    ИсходнаяТаблицаСгруппированная.Спецификация

ИМЕЮЩИЕ
    СУММА(1) > 1
11 gornovrom
 
04.04.14
15:57
Только вместо Исходной таблицы - твой регистр
12 DmVl76
 
04.04.14
15:59
(4) Тогда первую таблицу подменяем на 2 вт

<Code>
ВЫБРАТЬ РАЗЛИЧНЫЕ  
    ЗаказыНаПроизводство.Заказ,
    ЗаказыНаПроизводство.Номенклатура,
    ЗаказыНаПроизводство.Спецификация
    
ПОМЕСТИТЬ втЗаказыНоменклатураСпецификации

ВЫБРАТЬ  
    ЗаказыНаПроизводство.Заказ,
    ЗаказыНаПроизводство.Номенклатура КАК Номенклатура,
    Количество( ЗаказыНаПроизводство.Номенклатура) Как Количество
ПОМЕСТИТЬ втЗаказыНоменклатура
ИЗ
    втЗаказыНоменклатураСпецификации КАК ЗаказыНаПроизводство
  

СГРУППИРОВАТЬ ПО
    ЗаказыНаПроизводство.Регистратор,
    ЗаказыНаПроизводство.Номенклатура
    
    
    Имеющие  Количество(ЗаказыНаПроизводство.Номенклатура) >1;
<Code>
13 Бенни
 
04.04.14
16:03
(12) Я думаю под предложенные условия, без использования параметров, будут подпадать все записи с повторяющейся номенклатурой и спецификацией.
14 gornovrom
 
04.04.14
16:12
(13) Не должны
15 Дурындина
 
04.04.14
16:14
DmVl76, может я ошибаюсь где то, но не выводит ничего
16 Дурындина
 
04.04.14
16:16
полный запрос выглядит
ВЫБРАТЬ РАЗЛИЧНЫЕ  
    ЗаказыНаПроизводство.Регистратор,
    ЗаказыНаПроизводство.Номенклатура,
    ЗаказыНаПроизводство.Спецификация
ПОМЕСТИТЬ втЗаказыНоменклатураСпецификации
Из
      РегистрНакопления.ЗаказыНаПроизводство КАК ЗаказыНаПроизводство
   ГДЕ
    ЗаказыНаПроизводство.Регистратор ССЫЛКА Документ.ЗаказНаПроизводство
    И ЗаказыНаПроизводство.Регистратор = &Ссылка   ;

ВЫБРАТЬ  
    ЗаказыНаПроизводство.Регистратор,
    ЗаказыНаПроизводство.Номенклатура КАК Номенклатура,
    Количество( ЗаказыНаПроизводство.Номенклатура) Как Количество
ПОМЕСТИТЬ втЗаказыНоменклатура
ИЗ
    втЗаказыНоменклатураСпецификации КАК ЗаказыНаПроизводство
  

СГРУППИРОВАТЬ ПО
    ЗаказыНаПроизводство.Регистратор,
    ЗаказыНаПроизводство.Номенклатура
    
    
    Имеющие  Количество(ЗаказыНаПроизводство.Номенклатура) >1;

ВЫБРАТЬ РАЗЛИЧНЫЕ
ЗаказыНаПроизводство.Регистратор,
    ЗаказыНаПроизводство.Номенклатура КАК Номенклатура,
    ЗаказыНаПроизводство.Спецификация
ИЗ
    РегистрНакопления.ЗаказыНаПроизводство КАК ЗаказыНаПроизводство
   внутреннее СОЕДИНЕНИЕ втЗаказыНоменклатура КАК втЗаказыНоменклатура
    ПО ЗаказыНаПроизводство.Регистратор=втЗаказыНоменклатура.Регистратор
    И ЗаказыНаПроизводство.Номенклатура=втЗаказыНоменклатура.Номенклатура
17 gornovrom
 
04.04.14
16:17
(15) Выложи конечный запрос
18 gornovrom
 
04.04.14
16:18
ВЫБРАТЬ РАЗЛИЧНЫЕ  
    ЗаказыНаПроизводство.Регистратор,
    ЗаказыНаПроизводство.Номенклатура,
    ЗаказыНаПроизводство.Спецификация


Вот тут ошибка - убери Регистратор. Тебе отдельно нужно получить таблицу, где только Номенклатура и спецификация.
А так у тебя разные регистраторы и Выбрать Различные выбирает все строки
19 SUA
 
04.04.14
16:19
(18) это был бы следующий вопрос куда торопиться
20 gornovrom
 
04.04.14
16:19
Т.е. сначала отбери номенклатуру и спецификации и обработай
21 Дурындина
 
04.04.14
16:20
почему разные регистраторы? у меня в где есть ЗаказыНаПроизводство.Регистратор ССЫЛКА Документ.ЗаказНаПроизводство, я выбираю только один документ
22 DmVl76
 
04.04.14
16:33
(16) Да, косячок допустил. Нужно во 2-й таблице в условии на >1 количество Спецификаций считать  
<CODE>
ВЫБРАТЬ РАЗЛИЧНЫЕ  
    ЗаказыНаПроизводство.Регистратор,
    ЗаказыНаПроизводство.Номенклатура,
    ЗаказыНаПроизводство.Спецификация
ПОМЕСТИТЬ втЗаказыНоменклатураСпецификации
Из
      РегистрНакопления.ЗаказыНаПроизводство КАК ЗаказыНаПроизводство
   ГДЕ
    ЗаказыНаПроизводство.Регистратор ССЫЛКА Документ.ЗаказНаПроизводство
    И ЗаказыНаПроизводство.Регистратор = &Ссылка   ;

ВЫБРАТЬ  
    ЗаказыНаПроизводство.Регистратор,
    ЗаказыНаПроизводство.Номенклатура КАК Номенклатура Количество
ПОМЕСТИТЬ втЗаказыНоменклатура
ИЗ
    втЗаказыНоменклатураСпецификации КАК ЗаказыНаПроизводство
  

СГРУППИРОВАТЬ ПО
    ЗаказыНаПроизводство.Регистратор,
    ЗаказыНаПроизводство.Номенклатура
    
    
    Имеющие  Количество(ЗаказыНаПроизводство.Спецификация) >1;

ВЫБРАТЬ РАЗЛИЧНЫЕ
ЗаказыНаПроизводство.Регистратор,
    ЗаказыНаПроизводство.Номенклатура КАК Номенклатура,
    ЗаказыНаПроизводство.Спецификация
ИЗ
    РегистрНакопления.ЗаказыНаПроизводство КАК ЗаказыНаПроизводство
   внутреннее СОЕДИНЕНИЕ втЗаказыНоменклатура КАК втЗаказыНоменклатура
    ПО ЗаказыНаПроизводство.Регистратор=втЗаказыНоменклатура.Регистратор
    И ЗаказыНаПроизводство.Номенклатура=втЗаказыНоменклатура.Номенклатура
<CODE>
23 m-serg74
 
04.04.14
16:35
(21) это не один документ, а один вид документов
24 DmVl76
 
04.04.14
16:40
(18) Нет, все нормально работает даже по всем документам, просто вторая таблица сворачивается по регистратору и номенклатуре  и получается КОЛИЧЕСТВО(Номенклатура)=1, Количество(Спецификация)>1 как раз удаляет дубли с одной спецификацией
25 Дурындина
 
08.04.14
11:26
DmVl76?Да, Да! Вы душка, спасибо вам большое!
26 Дурындина
 
08.04.14
11:41
какой замечательный форум, интересно здесь существует рейтинговая система участников? Например, довольные страждущие, получившие свой ответ выставляют оценки авторам?
27 Дурындина
 
08.04.14
11:41
или что то в этом роде?