Имя: Пароль:
1C
1С v8
Левое соединение таблиц
0 mcfev
 
31.05.12
17:13
Вопрос такой:
Есть Справочник "Студенты" в котором перечисленны все фамилии.
И есть Регистр Накопления "СреднийРейтингГруппы" в котором регистрируется по определенному предмету баллы за занятие только части студентов (не обязательно всех).

При выполнении запроса

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

выводятся не все студенты (причем не важно ПОЛНОЕ или ЛЕВОЕ).

И попутный вопрос можно ли вместо пустых полей в отчета выводить "0".
1 Wobland
 
31.05.12
17:14
это ж кто тут у нас такой красивый по наименованию соединяет? ;)
2 shuhard
 
31.05.12
17:14
(0)[причем не важно ПОЛНОЕ или ЛЕВОЕ]
дык нужно то ПРАВОЕ

можно
ЕстьNULL ом
3 Ненавижу 1С
 
гуру
31.05.12
17:14
за такое

ПО Студенты.Наименование = СреднийРейтингГруппыОстаткиИОбороты.Студент.Наименование

надо пороть по ж0пе
4 salvator
 
31.05.12
17:15
Будь мужиком, соединяй по ссылке, млеять!
5 mcfev
 
31.05.12
17:15
ок)))
6 Wobland
 
31.05.12
17:15
(4) в справочнике перечислены фамилии. можно ожидать отсутствие ссылочного типа в регистре
7 mcfev
 
31.05.12
17:16
поправлю
* не важно ПОЛНОЕ или ЛЕВОЕ или ПРАВОЕ
8 mcfev
 
31.05.12
17:16
проблема в том что для студентов нет наименования предмета, поэтому и не содиняются таблицы
9 alex74
 
31.05.12
17:17
В запрос выводятся ВСЕ записи, удовлетворяющие условию
СреднийРейтингГруппыОстаткиИОбороты.Предмет.Группа = &ПоГруппе"
так что все правильно
10 Murzz
 
31.05.12
17:18
"СреднийРейтингГруппыОстаткиИОбороты.Предмет.Группа = &ПоГруппе" в условие соединения перенеси. И убери нафиг соединение
по наименованию
11 HEKPOH
 
31.05.12
17:18
(9), (10) +1
12 mcfev
 
31.05.12
17:20
(10) это как??
13 Ненавижу 1С
 
гуру
31.05.12
17:21
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СреднийРейтингГруппы.ОстаткиИОбороты КАК СреднийРейтингГруппыОстаткиИОбороты
       ПО Студенты.Ссылка = СреднийРейтингГруппыОстаткиИОбороты.Студент
И
   СреднийРейтингГруппыОстаткиИОбороты.Предмет.Группа = &ПоГруппе
14 shuhard
 
31.05.12
17:21
(13) или РегистрНакопления.СреднийРейтингГруппы.ОстаткиИОбороты(Предмет.Группа = &ПоГруппе)
15 Ненавижу 1С
 
гуру
31.05.12
17:22
(14) точно
16 mcfev
 
31.05.12
17:25
ага, огромное спасибо всем
17 mcfev
 
31.05.12
17:25
а как вывести "о" вместо пустых полей
18 Wobland
 
31.05.12
17:26
(17) ЕСТЬNULL
19 mcfev
 
31.05.12
17:29
ВЫБРАТЬ
   Студенты.Наименование КАК Студент,
   СреднийРейтингГруппыОстаткиИОбороты.Предмет.Название КАК Предмет,
   ВЫБОР
       КОГДА СреднийРейтингГруппыОстаткиИОбороты.БаллыЗаЗанятиеКонечныйОстаток ЕСТЬ NULL
           ТОГДА 0
       ИНАЧЕ СреднийРейтингГруппыОстаткиИОбороты.БаллыЗаЗанятиеКонечныйОстаток
   КОНЕЦ КАК БаллыЗаЗанятие,
   ВЫБОР
       КОГДА СреднийРейтингГруппыОстаткиИОбороты.ПропускиКонечныйОстаток ЕСТЬ NULL
           ТОГДА 0
       ИНАЧЕ СреднийРейтингГруппыОстаткиИОбороты.ПропускиКонечныйОстаток
   КОНЕЦ КАК Пропуски
ИЗ
   Справочник.Студенты КАК Студенты
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СреднийРейтингГруппы.ОстаткиИОбороты КАК СреднийРейтингГруппыОстаткиИОбороты
       ПО Студенты.Ссылка = СреднийРейтингГруппыОстаткиИОбороты.Студент.Ссылка
           И (Студенты.Группа = &ПоГруппе)


вот так не работает (всеравно пустые поля)
20 del123
 
31.05.12
17:30
ЕСТЬNULL(СреднийРейтингГруппыОстаткиИОбороты.ПропускиКонечныйОстаток, 0)
21 del123
 
31.05.12
17:31
вместо выбор
22 Wobland
 
31.05.12
17:32
(19) есть ЕСТЬNULL, а есть ЕСТЬ NULL ;)
23 mcfev
 
31.05.12
17:33
(22) )) , я знаю
24 mcfev
 
31.05.12
17:36
все равно не то
не работеат
пустые поля так и остались
25 salvator
 
31.05.12
17:38
(24) Запрос покажи исправленный
26 mcfev
 
31.05.12
17:38
ВЫБРАТЬ
   Студенты.Наименование КАК Студент,
   СреднийРейтингГруппыОстаткиИОбороты.Предмет.Название КАК Предмет,
   ЕСТЬNULL(СреднийРейтингГруппыОстаткиИОбороты.БаллыЗаЗанятиеКонечныйОстаток, 0) КАК БаллыЗаЗанятие,
   ЕСТЬNULL(СреднийРейтингГруппыОстаткиИОбороты.БаллыЗаЗанятиеКонечныйОстаток, 0) КАК Пропуски
ИЗ
   Справочник.Студенты КАК Студенты
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СреднийРейтингГруппы.ОстаткиИОбороты КАК СреднийРейтингГруппыОстаткиИОбороты
       ПО (Студенты.Группа = &ПоГруппе)
           И Студенты.Ссылка = СреднийРейтингГруппыОстаткиИОбороты.Студент.Ссылка
           И (СреднийРейтингГруппыОстаткиИОбороты.Студент.Группа = &ПоГруппе)
ГДЕ
   Студенты.Группа = &ПоГруппе
27 salvator
 
31.05.12
17:40
Конструкцию ГДЕ убери.
Ты ее уже написал в условии соединения
28 mcfev
 
31.05.12
17:45
ок, но при таком запросе

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

выводится лишний человек из гругой группы и часть баллов пропадает в отчете + до сих пор нет нулей в пустых полях
29 mcfev
 
31.05.12
17:46
точнее выводятся ВООБЩЕ все студенты
30 quest
 
31.05.12
17:49
31 sergeante
 
31.05.12
17:50
(26) почитай книжки по запросам, же!
32 salvator
 
31.05.12
17:51
ВЫБРАТЬ
   Студенты.Наименование КАК Студент,
   СреднийРейтингГруппыОстаткиИОбороты.Предмет.Название КАК Предмет,
   ЕСТЬNULL(СреднийРейтингГруппыОстаткиИОбороты.БаллыЗаЗанятиеКонечныйОстаток, 0) КАК БаллыЗаЗанятие,
   ЕСТЬNULL(СреднийРейтингГруппыОстаткиИОбороты.БаллыЗаЗанятиеКонечныйОстаток, 0) КАК Пропуски
ИЗ
   Справочник.Студенты КАК Студенты
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СреднийРейтингГруппы.ОстаткиИОбороты КАК СреднийРейтингГруппыОстаткиИОбороты
       ПО Студенты.Ссылка = СреднийРейтингГруппыОстаткиИОбороты.Студент.Ссылка

А условие на группу укажи в параметрах виртуальной таблицы ОстаткиИОбороты
33 salvator
 
31.05.12
17:53
+(32) А нафига выводить 2 одинаковых поля и по-разному из обзывать?
34 mcfev
 
31.05.12
17:54
(33) это случайность, на соамом деле они разные ))
35 mcfev
 
31.05.12
17:59
а чем плох ГДЕ, почему надо условия помещаять в ПО??
36 mcfev
 
31.05.12
18:10
ОТВЕТТЕ КТОНИТЬ как можно пустые поля заменить на "0"???
37 Wobland
 
31.05.12
18:10
(35) патамушта у тебя сначала строится почти нужная таблица, которая "обнуляется" потом твоим ГДЕ. а во втором случае нужная таблица сразу выходит. как-то так
38 pessok
 
31.05.12
18:14
пятница?
39 unregistered
 
31.05.12
18:32
(36) А чем не устраивает вариант в (36) ?
40 mcfev
 
31.05.12
18:34
(39) хотельсь бы 0 увидеть
41 unregistered
 
31.05.12
18:45
(40) А функция ЕСТЬNULL тебе что возвращает, по-твоему?
42 SnarkHunter
 
31.05.12
18:50
43 Wobland
 
31.05.12
18:53
(41) он знает, см (23)
44 mcfev
 
31.05.12
18:56
(41) я знаю что это 0, но его в отчете не видно, вот в чем вопрос
(43) )))))
(42) я не работник, я всего лишь студент который решил написать бакалаврскую (зачем то) на 1С ))
45 acsent
 
31.05.12
19:00
формат
46 mcfev
 
31.05.12
19:03
про 0 я кстати догадываюсь но точно не уверен, "условное оформление" я предпологаю надо испльзовать но вот что да как не совсем понятно
47 mcfev
 
31.05.12
19:03
(45) формат чего??
48 mcfev
 
31.05.12
19:04
(45) у регистра есть - теперь если пропусков 0 то он так и пишет вместо пустого значения, а все остальные по прежнему пусты
49 catena
 
31.05.12
19:06
Та напиши
ЕСТЬNULL(СреднийРейтингГруппыОстаткиИОбороты.БаллыЗаЗанятиеКонечныйОстаток, "0")
и фсё
50 EvgeniuXP
 
31.05.12
19:11
(49) о-о-о ему надо, а не нуль :)
51 mcfev
 
31.05.12
22:57
(49) "0" все равно бесполезно
(50) "о" это опечатка )))
52 experimentator76
 
31.05.12
23:05
(44) не отмазывайся - потом придешь такой студент чуть-чуть поработать на 1С и планку качества собьешь
53 mcfev
 
31.05.12
23:39
(52) я ж учусь токо 1С
54 experimentator76
 
31.05.12
23:41
(53) я без злобы
просто тут советовали почитать\поглядеть по запросам
методом тыка запросы практически не даются
55 mcfev
 
31.05.12
23:43
(54) я понимаю что без злобы, я и не обижался ))
а с запросим пока только так получается (методом тыка)
хотя я понимю что не так и что происходит
а исправить не могу))
56 ChAlex
 
31.05.12
23:46
(54) - (гы) весь видео курс Гелиева базируется на метде тыка. Да и как по-иному можно почему енто 1С вдруг ведет себя не так , как написано в двух строчках документации. Ибо мало того, что недосказали, так еще и багов понавтыкали.... Так что без тыка с 1С никак :)
57 ChAlex
 
31.05.12
23:48
(55) А собствено где не выводится? В отчете что-ли. Так поставь формат ячейки (вывод пустых значений) и будет тебе счастье
58 ChAlex
 
31.05.12
23:49
ЗЫ: в маекете
59 mcfev
 
31.05.12
23:51
а что тогда "условное оформление" ???
60 ChAlex
 
31.05.12
23:52
а вы собственно в чем делаете? в СКД? Управляемая форма или обычная?
61 experimentator76
 
31.05.12
23:54
(56) на курсах от 1С объясняется поведение платформы в некоторых случаях *разводит руками*
но это не отменяет того что лучше взять общепринятые подходы и каноны и их придерживаться
кроме того ТС и пришел сюда потому что тыком не получается )
62 mcfev
 
31.05.12
23:54
обычная пустая 1С
63 ChAlex
 
31.05.12
23:54
Вывод куда? в табличный документ или в табличное поле на форме?
64 experimentator76
 
31.05.12
23:55
(62) в мемориз ))
65 mcfev
 
31.05.12
23:55
табличный документ
66 ChAlex
 
31.05.12
23:56
ну уже хоть что-то. а форма какая? управляемая или нет?
67 mcfev
 
31.05.12
23:58
)) нет

ps такие вопросы чет, я даже не могу с ходу ответить (никогда не владел терменологией)
68 ChAlex
 
01.06.12
00:00
Да какая тут нафиг терминология. Вопрос в интерфейсе, какой режим запуска 1С - управляемая форма или обычная. ибо в разных режимах разные методы
69 ChAlex
 
01.06.12
00:01
Короче - если макет сам создаешь, то вот свойства ячейки нужной в макете открой и установи значение свойства формат
70 ChAlex
 
01.06.12
00:03
ибо как условным оформлением в табличном поле можно чего-то сделать - ума не приложу, если в макете компановки данных - то тогда это другой вопрос
71 mcfev
 
01.06.12
00:20
во.. тогда так объясню, создал отчет, потом "основная схема компановки данных", сделал запрос и впринципе все
72 ПульсЪ
 
01.06.12
00:31
Выбор
  Когда ПрочиеРасчеты.Сумма = 700
   тогда "0"
  Иначе "Мля"
Конец как Сумочка

Вот те НОЛЬ ))
73 ПульсЪ
 
01.06.12
00:32
видимый )
74 ПульсЪ
 
01.06.12
00:34
т.е.

Выбор КОГДА СреднийРейтингГруппыОстаткиИОбороты.БаллыЗаЗанятиеКонечныйОстаток = NULL ТОГДА "0"
Иначе СреднийРейтингГруппыОстаткиИОбороты.БаллыЗаЗанятиеКонечныйОстаток
Конец КАК БаллыЗаЗанятие
75 mcfev
 
01.06.12
00:50
ща попробую
76 rs_trade
 
01.06.12
00:52
(74) КонечныйОстаток = NULL садись. два.
77 mcfev
 
01.06.12
01:03
всем спасибо ))
сделал все равно по своему (и главное работает)

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