Имя: Пароль:
1C
1С v8
Вопрос про запрос
0 НайдуУбъю
 
21.08.12
17:43
Народ подскажите кто может(хочет) пжл.

Нужно из двух регистров ПродажиОбороты по двум периодам вытащить данные по контрагенту и номенклатуре. Чтобы контрагенты и номенклатура первой и второй таблицы отображались в первой и второй колонках соответственно. Ни объединение ни соединение мне не помогло. Подскажите плиз где я туплю:)
1 ОператорПК
 
21.08.12
17:46
"Объединить все" - рулит и разруливает :) может запрос покажешь?
2 НайдуУбъю
 
21.08.12
17:47
ща..
3 НайдуУбъю
 
21.08.12
17:51
ВЫБРАТЬ
   ПродажиОбороты.Контрагент.Родитель.Родитель КАК КаталогДилера,
   ВЫБОР
       КОГДА ПродажиОбороты.Номенклатура.REMAN
           ТОГДА "Reman"
       ИНАЧЕ ПродажиОбороты.Номенклатура.НоменклатурнаяГруппа.Родитель
   КОНЕЦ КАК РодительНГ,
   СУММА(ЕСТЬNULL(ПродажиОбороты.СтоимостьОборот - ПродажиОбороты.НДСОборот, 0)) КАК СтоимостьОборот,
   СУММА(0) КАК СтоимостьОборот2
ИЗ
   РегистрНакопления.Продажи.Обороты(&СДаты, &НаДату, , Контрагент В ИЕРАРХИИ (&КаталогДилеров)) КАК ПродажиОбороты

СГРУППИРОВАТЬ ПО
   ВЫБОР
       КОГДА ПродажиОбороты.Номенклатура.REMAN
           ТОГДА "Reman"
       ИНАЧЕ ПродажиОбороты.Номенклатура.НоменклатурнаяГруппа.Родитель
   КОНЕЦ,
   ПродажиОбороты.Контрагент.Родитель.Родитель

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   ПродажиОбороты.Контрагент.Родитель.Родитель,
   ВЫБОР
       КОГДА ПродажиОбороты.Номенклатура.REMAN
           ТОГДА "Reman"
       ИНАЧЕ ПродажиОбороты.Номенклатура.НоменклатурнаяГруппа.Родитель
   КОНЕЦ,
   СУММА(0),
   СУММА(ЕСТЬNULL(ПродажиОбороты.СтоимостьОборот - ПродажиОбороты.НДСОборот, 0))
ИЗ
   РегистрНакопления.Продажи.Обороты(&СДаты2, &НаДату2, , Контрагент В ИЕРАРХИИ (&КаталогДилеров)) КАК ПродажиОбороты

СГРУППИРОВАТЬ ПО
   ВЫБОР
       КОГДА ПродажиОбороты.Номенклатура.REMAN
           ТОГДА "Reman"
       ИНАЧЕ ПродажиОбороты.Номенклатура.НоменклатурнаяГруппа.Родитель
   КОНЕЦ,
   ПродажиОбороты.Контрагент.Родитель.Родитель
ИТОГИ
   СУММА(СтоимостьОборот),
   СУММА(СтоимостьОборот2)
ПО
   ОБЩИЕ
4 ОператорПК
 
21.08.12
17:53
(3) креативно написано. а что не выходит?
5 olegves
 
21.08.12
17:55
ВЫБОР
       КОГДА ПродажиОбороты.Номенклатура.REMAN
           ТОГДА "Reman"
       ИНАЧЕ ПродажиОбороты.Номенклатура.НоменклатурнаяГруппа.Родитель
   КОНЕЦ КАК РодительНГ

Строку со ссылкой хочешь подружить? Ну,ну
6 НайдуУбъю
 
21.08.12
17:57
щас покажу
7 НайдуУбъю
 
21.08.12
17:59
8 НайдуУбъю
 
21.08.12
18:00
(5) ну даже ссылка с ссылкой почему не дружат?
9 olegves
 
21.08.12
18:04
(7)
ВЫБОР
       КОГДА ПродажиОбороты.Номенклатура.REMAN
           ТОГДА ПродажиОбороты.Номенклатура.REMAN
       ИНАЧЕ ПродажиОбороты.Номенклатура.НоменклатурнаяГруппа.Родитель
   КОНЕЦ КАК РодительНГ
...
ИТОГИ ПО
   ВЫБОР
       КОГДА ПродажиОбороты.Номенклатура.REMAN
           ТОГДА ПродажиОбороты.Номенклатура.REMAN
       ИНАЧЕ ПродажиОбороты.Номенклатура.НоменклатурнаяГруппа.Родитель
   КОНЕЦ, ОБЩИЕ
10 olegves
 
21.08.12
18:05
к (9) вместо ВЫБОР поставь Алиас
11 ОператорПК
 
21.08.12
18:22
попробуй все поместить во временную таблицу, потом ее сгруппировать.
12 НайдуУбъю
 
22.08.12
09:21
(9) непрокатило...
13 НайдуУбъю
 
22.08.12
09:24
(11) тут проблем еще в том что кроме ОБЩИЕ надо группировать по КаталогДилера...
...либо как вариант группировать перед выводом в макет по подтаблице.
14 olegves
 
22.08.12
09:28
(12) в секции ИТОГИ (9) конструкцию ВЫБОР замени на РодительНГ
15 НайдуУбъю
 
22.08.12
09:32
(14)вот так вот чтоли:

ВЫБРАТЬ
   ПродажиОбороты.Контрагент.Родитель.Родитель КАК КаталогДилера,
   ВЫБОР
       КОГДА ПродажиОбороты.Номенклатура.REMAN
           ТОГДА ПродажиОбороты.Номенклатура.REMAN
       ИНАЧЕ ПродажиОбороты.Номенклатура.НоменклатурнаяГруппа.Родитель
   КОНЕЦ КАК РодительНГ,
   СУММА(ЕСТЬNULL(ПродажиОбороты.СтоимостьОборот - ПродажиОбороты.НДСОборот, 0)) КАК СтоимостьОборот,
   СУММА(0) КАК СтоимостьОборот2
ИЗ
   РегистрНакопления.Продажи.Обороты(&СДаты, &НаДату, , Контрагент В ИЕРАРХИИ (&КаталогДилеров)) КАК ПродажиОбороты

СГРУППИРОВАТЬ ПО
   ПродажиОбороты.Контрагент.Родитель.Родитель,
   ВЫБОР
       КОГДА ПродажиОбороты.Номенклатура.REMAN
           ТОГДА ПродажиОбороты.Номенклатура.REMAN
       ИНАЧЕ ПродажиОбороты.Номенклатура.НоменклатурнаяГруппа.Родитель
   КОНЕЦ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   ПродажиОбороты.Контрагент.Родитель.Родитель,
   ВЫБОР
       КОГДА ПродажиОбороты.Номенклатура.REMAN
           ТОГДА ПродажиОбороты.Номенклатура.REMAN
       ИНАЧЕ ПродажиОбороты.Номенклатура.НоменклатурнаяГруппа.Родитель
   КОНЕЦ,
   СУММА(0),
   СУММА(ЕСТЬNULL(ПродажиОбороты.СтоимостьОборот - ПродажиОбороты.НДСОборот, 0))
ИЗ
   РегистрНакопления.Продажи.Обороты(&СДаты2, &НаДату2, , Контрагент В ИЕРАРХИИ (&КаталогДилеров)) КАК ПродажиОбороты

СГРУППИРОВАТЬ ПО
   ПродажиОбороты.Контрагент.Родитель.Родитель,
   ВЫБОР
       КОГДА ПродажиОбороты.Номенклатура.REMAN
           ТОГДА ПродажиОбороты.Номенклатура.REMAN
       ИНАЧЕ ПродажиОбороты.Номенклатура.НоменклатурнаяГруппа.Родитель
   КОНЕЦ
ИТОГИ
   СУММА(СтоимостьОборот),
   СУММА(СтоимостьОборот2)
ПО
   ОБЩИЕ,
   РодительНГ
16 olegves
 
22.08.12
09:39
(15) угу
17 НайдуУбъю
 
22.08.12
09:44
(16)ничего хорошего из этого не вышло, вот гляди с группировками по все реквизитам:

http://pixs.ru/showimage/dfdfdjpg_5705661_5580204.jpg
18 olegves
 
22.08.12
09:48
(17) результат запроса выгружай в дерево или обходи по группировкам и будет тебе щастье
19 НайдуУбъю
 
22.08.12
09:51
(18) а потом каждую ветку группировать с итогами по суммовым полям что ли?
20 НайдуУбъю
 
22.08.12
09:52
а почему он не может подружится с себе подобным внутри запроса?? чтоб каждая отличная от других строка шла одной строкой а не двумя...
21 Rovan
 
гуру
22.08.12
09:52
(4) надо делать не ОБЪЕДИНИТЬ ВСЕ, а ПОЛНОЕ СОЕДИНЕНИЕ
22 НайдуУбъю
 
22.08.12
09:54
(21) ооо друг, ты ломаешь мой сложившийся за последние два дня стереотип о ПОЛНОМ СОЕДИНЕНИИ
23 Rovan
 
гуру
22.08.12
09:55
(22) пробовал - не получилось ?
24 НайдуУбъю
 
22.08.12
09:56
даже не то чтобы пробовал, а мучался....
25 НайдуУбъю
 
22.08.12
09:59
просто смысл в полном соединение в том что в первой таблице может не быть таких контрагентов и номенклатуры как во второй, поэтому в итоговой таблице будет фигурировать сумма без каталогаДилера и РодителяНГ, если например их брать из первой таблицы...
26 olegves
 
22.08.12
10:01
(20) он уже подружился, остается тебе с ним подружиться, немного включив голову. Если не поможет, посмотри примеры типовых по обходу запросов по группировкам.
27 НайдуУбъю
 
22.08.12
10:02
а если в конструктор добавлять еще две таблицы СпрКонтрагенты и СпрНоменклатура, чтобы иметь полное описание всех возможных данных в результирующей таблице, то контруктор не даст правильно задать связи, по каким причинам я так и не понял...
28 Rovan
 
гуру
22.08.12
10:11
(25) всё просто - в таких случаях пишут так:
ВЫБРАТЬ
ЕСТЬNULL( Таблица1.Контрагент, Таблица2.Контрагент ) КАК Контрагент,
...
29 НайдуУбъю
 
22.08.12
10:24
(28) о как, возьму на заметочку...))
30 Rovan
 
гуру
22.08.12
10:55
(29) давай уж добьем твой запрос!   делов на 5 минут !!
31 НайдуУбъю
 
22.08.12
11:06
да вот додумал все таки уже запрос, как грит olegves в (26), ведь итоги по родителюНГ уже и так являются одной строкой, что в общем то и нужно, просто не брать дальнейшую детализацию и все...оуе))
(30) а твой вариант тоже неплох, на будущее можно взять на вооружение!!)))
так что спасибо всем кто потратил свое время)))
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший