Имя: Пароль:
1C
1С v8
Соединение в запросе
,
0 Эльфийка1
 
27.09.12
13:21
Здравствуйте, Форумчане!
Как правильно описать соединение или объединение данных в запросе, чтобы получилось так, как указано ниже.

№    Заказ    Реализация    НомВся

1    Товар1    Товар1          Товар1
               Товар2            Товар2

2    Товар1  Товар1          Товар1
       Товар3                Товар3

Соединяются
№    Заказ    НомВся

1    Товар1    Товар1
               Товар2

2    Товар1  Товар1
       Товар3    Товар3


При Левом соединении получаем
1)    Для Товар1  – Товар1, Товар2
2)    Для Товара1 – Товар1, Товар3
       Для Товара3 – Товар1, Товар3

Т.е. на выходе получаем
1) Товар1, Товар2
2) Товар1, Товар3, Товар1, Товар3

А Нужно
1)    Товар1, Товар2
2)    Товар1, Товар3

Заранее благодарю!
1 mikecool
 
27.09.12
13:22
нифига не понял, до думаю объединять нада
2 DrShad
 
27.09.12
13:31
(0) нарисуй лучше свое условие в Excel, а сюда скрин кинь
3 Эльфийка1
 
27.09.12
13:37
ВЫБРАТЬ
   ДоговорыКонтрагентов.Ссылка КАК Договор,
   ДоговорыКонтрагентов.Владелец КАК Контрагент
ПОМЕСТИТЬ ДоговорыКонтрагентов
ИЗ
   Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ДоговорыКонтрагентов.Контрагент,
   ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента,
   ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя,
   ЗаказыПокупателейОстаткиИОбороты.Регистратор,
   ЗаказыПокупателейОстаткиИОбороты.Номенклатура,
   ЗаказыПокупателейОстаткиИОбороты.ХарактеристикаНоменклатуры,
   ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК ВыписаноСчетов,
   ЗаказыПокупателейОстаткиИОбороты.КоличествоПриход КАК Выписано,
   ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовРасход КАК ОтгруженоТоваров,
   ЗаказыПокупателейОстаткиИОбороты.КоличествоРасход КАК Отгружено,
   ЗаказыПокупателейОстаткиИОбороты.Цена,
   ЗаказыПокупателейОстаткиИОбороты.ЕдиницаИзмерения
ПОМЕСТИТЬ ЗаказыРеализация
ИЗ
   РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(, , Регистратор, , ) КАК ЗаказыПокупателейОстаткиИОбороты
       ЛЕВОЕ СОЕДИНЕНИЕ ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
       ПО ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента = ДоговорыКонтрагентов.Договор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя,
   ЗаказыПокупателейОстаткиИОбороты.Номенклатура
ПОМЕСТИТЬ НомВся
ИЗ
   РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты КАК ЗаказыПокупателейОстаткиИОбороты

СГРУППИРОВАТЬ ПО
   ЗаказыПокупателейОстаткиИОбороты.Номенклатура,
   ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя
;

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

СГРУППИРОВАТЬ ПО
   ЗаказыРеализация.Регистратор,
   ЗаказыРеализация.Контрагент,
   ЗаказыРеализация.ДоговорКонтрагента,
   ЗаказыРеализация.ЕдиницаИзмерения,
   ЗаказыРеализация.ЗаказПокупателя,
   НомВся.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ.ЗаказПокупателя КАК ЗаказПокупателя,
   ВТ.ДокументДвижения КАК ДокументДвижения,
   ВТ.Контрагент,
   ВТ.ДоговорКонтрагента,
   ВТ.Номенклатура КАК Номенклатура,
   ВТ.Выписано,
   ВТ.Порядок КАК Порядок,
   ВТ.ЕдиницаИзмерения
ИЗ
   ВТ КАК ВТ
ГДЕ
   ВТ.ДоговорКонтрагента.Владелец = &Контрагент

УПОРЯДОЧИТЬ ПО
   ЗаказПокупателя УБЫВ,
   ДокументДвижения
ИТОГИ ПО
   ЗаказПокупателя
4 vmv
 
27.09.12
13:37
+(2) и товары реальные в скрине ну там "Зубровка", "Путинка", "Спирт"
5 vmv
 
27.09.12
13:37
(3) только идиот будет смотреть в запрос, когда постановка задачи не очевидна
6 DrShad
 
27.09.12
13:40
(3) весь запрос в топку, ибо это монстр
7 Эльфийка1
 
27.09.12
13:45
Не ругайтесь, пож-та((((
Может так яснее будет:
Для Заказа 1
В таблице 1 перечислены - "Зубровка"
В таблице 2 перечислены - "Зубровка", "Путинка"
Для Заказа 2
В таблице 1 перечислены - "Спирт", "Премьер"
В таблице 2 перечислены - "Спирт", "Премьер"

При объединении (соединении) двух таблиц должно получится
Для Заказа 1 - "Зубровка", "Путинка"
Для Заказа 2 - "Спирт", "Премьер"

А выходит
Для Заказа 1 - "Зубровка", "Путинка"
Для Заказа 2 - "Спирт", "Премьер", "Спирт", "Премьер"
8 Эльфийка1
 
27.09.12
13:49
Как описать соединение в запросе?
9 DrShad
 
27.09.12
13:50
походу без бикини тут никак :(
10 Рэйв
 
27.09.12
13:51
(7)Тебеж сказали -  нарисуй все в екселе, сделай скриншот, выложи на радиакал и дай сюда ссылку.  Совершенно не понятно какая таблица тебе нужна.
11 Alexey87
 
27.09.12
13:51
(3)стаж 3 месяца, а уже такие запросы пишет...
12 DrShad
 
27.09.12
13:53
(11) нравится? я в шоке от избыточности выборок
13 Эльфийка1
 
27.09.12
14:47
14 Эльфийка1
 
27.09.12
14:55
15 Эльфийка1
 
27.09.12
15:02
(1)(2)(10) а так понятно? ))) ((((
16 Kashemir
 
27.09.12
15:05
Таблица2 ЛевоеСоединение Таблица1
По Заказ и Номенклатура
17 GANR
 
27.09.12
15:09
(0) см. 16
18 Эльфийка1
 
27.09.12
15:13
(16) (17) не верно, тогда получается так, см. http://ifotki.info/11/9519b98451230ddd75a29131534f8bb8b0d666131404399.jpg.html
19 Kashemir
 
27.09.12
15:21
(18) Такое может получится если у тебя используется внутренее соединение вместо левого... либо лево-право перепутала.
20 Эльфийка1
 
27.09.12
15:28
вырезка из монстр-запроса))))

ИЗ
   НомВся КАК НомВся
       ЛЕВОЕ СОЕДИНЕНИЕ ЗаказыРеализация КАК ЗаказыРеализация
       ПО ЗаказыРеализация.ЗаказПокупателя = НомВся.ЗаказПокупателя
           И ЗаказыРеализация.Номенклатура = НомВся.Номенклатура
ГДЕ
   ЗаказыРеализация.Регистратор ССЫЛКА Документ.ЗаказПокупателя


вроде ничего не перепутала
21 Kashemir
 
27.09.12
15:30
(20) Молодец ... твое соединение присоединило ко всем записям НомВсе все похожие из заказы реализация а потом ХРЯСЬ и через ГДЕ  порезало по значению, которое есть только в заказах реализации.
22 Kashemir
 
27.09.12
15:31
+(21) Вобщем ты сначала таблицу заказов порежь на предмет " ЗаказыРеализация.Регистратор ССЫЛКА Документ.ЗаказПокупателя ", а потом уже соединяй.
23 Эльфийка1
 
27.09.12
16:09
(21) все равно не получается ("Путинка" исчезает)((((
НомВся - это Таблица2, ЗаказПокупателя - это Таблица1

ИЗ
   НомВся КАК НомВся
       ЛЕВОЕ СОЕДИНЕНИЕ Заказы КАК Заказы
       ПО НомВся.ЗаказПокупателя = Заказы.ЗаказПокупателя
           И НомВся.Номенклатура = Заказы.Номенклатура
24 Эльфийка1
 
27.09.12
16:10
Заказы - это Таблица1 (результат "порезки" таблицы ЗаказыРеализация)
25 Kashemir
 
27.09.12
16:13
(23) Значит ты нас обманываешь. ЛЕВОЕ соединение в принципе не может порезать таблицу СЛЕВА. Если у тебя в НомВся есть все нужные позиции номенклатуры, они никуда не денутся.
26 Kashemir
 
27.09.12
16:18
если у тебя еще жива эта строчка в запросе:

ГДЕ
   ВТ.ДоговорКонтрагента.Владелец = &Контрагент

то она в любом случае порежет все что отсутствует в "заказы", ибо договор контрагента у тебя именно оттуда берется
27 GANR
 
27.09.12
17:03
(24)(25) Ужас! Из-за такой элементарщины такие длинные разговоры. (0) Упражняйтесь-ка лучше с обработкой "Консоль запросов.epf" с диска ИТС и с SQL-запросами на сайте sql-ex.ru .

ВЫБРАТЬ
   Таблица2.Номенклатура1 КАК Номенклатура,
   Таблица2.Заказ КАК Заказ,
   ЕСТЬNULL(ОбрезкаПоТипу.Количество, 0) КАК Количество
ИЗ
   Таблица2
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           Таблица1.Заказ КАК Заказ,
           Таблица1.Номенклатура КАК Номенклатура,
           СУММА(Таблица1.Количество) КАК Количество
       ИЗ
           КАК Таблица1
       ГДЕ
           Таблица1.Регистратор ССЫЛКА Документ.ЗаказПокупателя) КАК ОбрезкаПоТипу
       ПО Таблица2.Заказ = ОбрезкаПоТипу.Заказ
           И Таблица2.Номенклатура1 = ОбрезкаПоТипу.Номенклатура

Есть вероятность, что этот запрос - то, что нужно.
28 Эльфийка1
 
27.09.12
17:21
(27) спасибо! проверю
29 GANR
 
27.09.12
17:38
(28) Там опечатка
надо заменить
   СУММА(Таблица1.Количество) КАК Количество
       ИЗ
           КАК Таблица1
на
   СУММА(Таблица1.Количество) КАК Количество
       ИЗ
           Таблица1 КАК Таблица1
30 Эльфийка1
 
28.09.12
14:04
Всем спасибо большое! Сделала. Убрала Регистратор, и условие на выборку ссылки на Документ.Заказ, соединила по заказу и номенклатуре, а чтобы название группировки не было пустым - ЗаказыРеализация.ЗаказПокупателя.Представление КАК ДокументДвижения,
31 GANR
 
28.09.12
14:13
(30)Ну если фильтр по ССЫЛКА был лишним - всё должно работать. Если нет - стоит появиться проводкам документов других типов и запрос вернет неверные данные.
32 Эльфийка1
 
28.09.12
14:29
(31)действительно документы появляются -поэтому и пришлось убрать поле ЗаказыРеализация.Регистратор и сделать группировку, данные проверила-вроде везде правильные)))
(6)так между прочим, ))) это только часть запроса))))))))))))))))))
33 vmv
 
28.09.12
14:32
не женское ето дело запросы колупать
34 Конфигуратор1с
 
28.09.12
14:33
(33)Правильно, пусть лучше шпалы таскают
35 Эльфийка1
 
28.09.12
14:35
(33), (34) фу, как грубо и обидно!(((
36 Конфигуратор1с
 
28.09.12
14:40
(35)Я тут за нее заступаюсь, а она на меня фу. Ох и Леди пошли,Рыцаря от коня не отличат уже((((
37 vmv
 
28.09.12
14:43
(36) ты отстал от жизни чувак, современные женщины отдают предпочтение коням. не веришь? загугли "с конями"
38 Эльфийка1
 
28.09.12
14:45
(36) Извините, Рыцарь, фразу поняла буквально.))))))
39 Конфигуратор1с
 
28.09.12
14:47
(37)Чувак, то ты лошадь с женщиной попутал. Завязывай с спиртным, а то встрянешь еще в историю)))
40 Конфигуратор1с
 
28.09.12
14:48
(38)Не стоит извинений - за такие глазки можно  простить все на свете)))
41 vmv
 
28.09.12
14:50
(40) пиши канонично, без глупых ревеверсов - "я бы вдул"(с)

а то мне трудно понять всякие расшаркивания
42 Конфигуратор1с
 
28.09.12
15:02
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой