Имя: Пароль:
1C
1С v8
сборка 2 таблиц, аля в t-sql подзапрос в селекте
0 Boyar
 
05.04.12
18:22
Просьба помочь проблема такая, есть следующее:
1. Регистр Сведений там Клиент и Активность булево, выбирается по значению Истина
2. Регистр Накопления оборотный и там Клиент, типУслуги и количество
так вот нужно как то выбрать только активных клиентов и по ним типУслуги (которой он пользовался максимально больше всех остальных)
Клиент - типУслуги
Клиент2 - типУслуги
и т.д.
1 Boyar
 
05.04.12
18:23
это живой или все таки мертвый форум?  :D
2 ukolabrother
 
05.04.12
18:25
1. выбрать активных в клиенты
2. выбрать клиент, услуга(клиент в клиенты)
3 rs_trade
 
05.04.12
18:27
в параметр регистра накопления передать таблицу активных клиентов. так?
4 ukolabrother
 
05.04.12
18:28
виртуальную таблицу, выборку которую сделал раньше в предыдущем запросе.
5 rs_trade
 
05.04.12
18:32
РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад В (ВЫБРАТЬ Ссылка ИЗ тзСклад)) КАК ТоварыНаСкладахОстатки
6 ukolabrother
 
05.04.12
18:33
(5) я не понимаю вообще тебя, ты спрашиваешь, потом показываешь пример.
7 Boyar
 
06.04.12
05:28
что то я не понимаю вас, я вроде дословно описал проблему, а ответы не понятные :(
вот такое не пашет :(

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

СГРУППИРОВАТЬ ПО
   КлиентыВКлубеСрезПоследних.Клиент,
   ВложенныйЗапрос.Занятие
[/CODE]
8 Boyar
 
06.04.12
05:46
(7) но если подзапрос был бы в селекте (выбрать) то по каждому контрагенту можно было в РН сделать отличную выборку, а так собираются обе таблицы и соединяются и собрать вторую как нужно заранее не удается :(
9 Boyar
 
06.04.12
05:50
(8) проблема именно в том, что во второй таблице той что РН обороты там 2 измерения и нужно по каждому Клиенту вытащить самую посещаемую услугу, наложить фильтр по активности его из регистра сведений не проблема.
в РН если сделать акрекатную типа МАКСИМУМ(Кол), то тогда группировать приходится все измерения и итог получается не тем, получается максимум от кол, по каждому клиенту и услуге, а это не то.  :(
10 Boyar
 
06.04.12
05:54
(7) если бы был t-sql  я бы сделал так и все бы работало :(

[CODE]
ВЫБРАТЬ
  КлиентыВКлубеСрезПоследних.Клиент КАК Клиент,
  (ВЫБРАТЬ ПЕРВЫЕ 1 ПосещенияКлиентовОбороты.Занятие КАК Занятие ИЗ
        РегистрНакопления.ПосещенияКлиентов.Обороты КАК ПосещенияКлиентовОбороты
        ГДЕ ПосещенияКлиентовОбороты.Клиент = КлиентыВКлубеСрезПоследних.Клиент КАК Клиент
        УПОРЯДОЧИТЬ ПО ПосещенияКлиентовОбороты.КоличествоОборот УБЫВ) КАК Занятие

ИЗ РегистрСведений.КлиентыВКлубе.СрезПоследних(, Присутствие) КАК КлиентыВКлубеСрезПоследних

[/CODE]

[B][U]и проблем не было бы, но так в 8.2 нельзя :([/U][/B]
11 Boyar
 
06.04.12
14:26
(10) Сам себе отвечаю для истории как решил  :D  а форум однако мертвый

[CODE]
ВЫБРАТЬ
   ПосещенияКлиентовОбороты.Клиент,
   ПосещенияКлиентовОбороты.Занятие,
   ПосещенияКлиентовОбороты.КоличествоОборот КАК КоличествоОборот
ПОМЕСТИТЬ РазличныеПоКлиентам
ИЗ
   РегистрНакопления.ПосещенияКлиентов.Обороты КАК ПосещенияКлиентовОбороты
;

X
ВЫБРАТЬ
   РазличныеПоКлиентам.Клиент,
   МАКСИМУМ(РазличныеПоКлиентам.КоличествоОборот) КАК КоличествоОборот
ПОМЕСТИТЬ МаксимальныеПоКлиентам
ИЗ
   РазличныеПоКлиентам КАК РазличныеПоКлиентам

СГРУППИРОВАТЬ ПО
   РазличныеПоКлиентам.Клиент
;

X
ВЫБРАТЬ
   РазличныеПоКлиентам.Клиент,
   РазличныеПоКлиентам.Занятие
ПОМЕСТИТЬ ГотовыеМаксимальные
ИЗ
   РазличныеПоКлиентам КАК РазличныеПоКлиентам
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ МаксимальныеПоКлиентам КАК МаксимальныеПоКлиентам
       ПО РазличныеПоКлиентам.Клиент = МаксимальныеПоКлиентам.Клиент
           И РазличныеПоКлиентам.КоличествоОборот = МаксимальныеПоКлиентам.КоличествоОборот
;

X
ВЫБРАТЬ
   ГотовыеМаксимальные.Клиент,
   ГотовыеМаксимальные.Занятие
ИЗ
   ГотовыеМаксимальные КАК ГотовыеМаксимальные
ГДЕ
   ГотовыеМаксимальные.Клиент В
           (ВЫБРАТЬ
               КлиентыВКлубеСрезПоследних.Клиент
           ИЗ
               РегистрСведений.КлиентыВКлубе.СрезПоследних(, Активность
                   И Присутствие) КАК КлиентыВКлубеСрезПоследних)
[/CODE]