Имя: Пароль:
1C
1С v8
соединение таблиц в запросе
0 Anna040282
 
11.04.12
10:49
Народ помогите сделать запрос с соединением 2 таблиц!
Нужно выбрать последение продажи по контрагентам, в отчете должен быть Клиент, документ и сумма продажи
в регистре накопления все это есть, но нужно выловить только последнюю продажу каждого контрагента и сумму, а также из регистра сведений выловить по каждому контрагенту его принадлежность к группе контрагентов тут регистр сведений где есть контрагент и ресурс эта группа (есть еще ресурсы, но они не нужны для задачи).
1 zak555
 
11.04.12
10:49
фотку забыла
2 Anna040282
 
11.04.12
10:50
а это к теме относится?
3 butterbean
 
11.04.12
10:51
(2) это относится к скорости решения проблемы
4 butterbean
 
11.04.12
10:51
(3)+ хотя неплохо-бы увидеть что ты уже набросала
5 pavlo
 
11.04.12
10:52
Ну тут ничего сложного нет, вы можете сначала собрать данные с физической таблицы регистра остатков, не забывая про Активность (тут нужно будет сделать несколько запросов, чтобы собрать нужное), а потом соединить с Регистром сведений.
1. собираете таблицу с группировкой Контрагент и суммовой Суммой, а также МАКСИМУМ(регистратор)
2. запрос по срезу последних и получаете группу
потом соединяете по контрагенту и должно получиться все то, что вам нужно. примерчик как то так :)
6 Anna040282
 
11.04.12
10:52
(4) да ничего пока, не соображу
7 Anna040282
 
11.04.12
10:53
(5) а примерчик плизз можете кинуть? ;) если не трудно
8 pavlo
 
11.04.12
10:55
(7)
ВЫБРАТЬ
 РН.Контрагент, СУММА(РН.суммаПродажи), МАКСИМУМ(РН.регистратор), Группы.Группа
ИЗ регистраНакопления КАК РН
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.(название регистра).СрезПоследних КАК Группы
       ПО РН.Контрагент = Группы.Контрагент
СГРУППИРОВАТЬ ПО РН.Контрагент,Группы.Группа

как то так должно работать (если именно это вам нужно), дальше в СКД что нужное настроете.
9 butterbean
 
11.04.12
10:57
(8) сумму надо потом цеплять, а то все попадет
10 pavlo
 
11.04.12
10:57
(7) попробуйте, не уверен что на 100% это ваш случай
11 pavlo
 
11.04.12
11:22
(9) ну да
12 DimVad
 
11.04.12
11:23
Мне кажется, можно вот так :
1. Получаем таблицу с максимальным значение периода по контрагентам :

ВЫБРАТЬ
   ТоварыПереданныеОбороты.Контрагент,
   МАКСИМУМ(ТоварыПереданныеОбороты.Период) КАК Период
ПОМЕСТИТЬ ДатаПоследнихПродажПоКонтрагентам
ИЗ
   РегистрНакопления.ТоварыПереданные.Обороты(, , Запись, ) КАК ТоварыПереданныеОбороты

СГРУППИРОВАТЬ ПО
   ТоварыПереданныеОбороты.Контрагент
;

2. Тупо объединяем с этой же табличкой оборотов по контрагенту и периоду:

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

Прогнал - все работает. Правда есть такой момент - по контрагенту может быть несколько д-тов с одной датай. Запрос выведет все. Может это и хорошо, а может и нет. Ну, подцепить рег. сведений не проблема.

Еще можно ввести параметры &ПерНач, &ПерКон, ну, это понятно...
13 DimVad
 
11.04.12
11:26
Я хотел сказать, что на оборотах мы получаем возможность - "за период"...
14 pavlo
 
11.04.12
11:29
Ну так точнее должно работать

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

СГРУППИРОВАТЬ ПО
   РН.Клиент,
   РН.СуммаПродаж,
   ВложенныйЗапрос.Регистратор,
   РС.Группа
15 Anna040282
 
11.04.12
11:31
хм, не думала что можно максимум по документу сделать.
спасибо (12 и 14), суть поняла!
16 DimVad
 
11.04.12
11:37
Максимум по документу - великая штука, не спорю. Но, допустим, у Вас там 5 документов по одному к-ту с датой типа 31/01/2012 23:59:59. По максимуму получите один из них, причем выбор будет сделан практически произвольно... может я что-то не понял... хотя если Анну устраивает...
17 DimVad
 
11.04.12
11:41
Ну, еще позанудствую, ладно ? Ну, допустим, 5 документов. Четыре - на 1 рубль, один на 100500 баксов. Анне нужно выводить сумму документа...
18 DimVad
 
11.04.12
11:42
По уму, нужно выводить в качестве суммы продажи - 100500 баксов, а с применением максимума по регистратору - каюк.