Имя: Пароль:
1C
1С v8
Таблица значений в запросе, соединение
0 Штурман
 
26.02.13
09:44
Есть таблица значений, использую ее в запросе:

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


Подскажите, почему в результате выводятся только Сотрудники, а Должности не выводятся?

Если же поставить правое соединение, то выводятся должности, а сотрудники не выводятся.

Что не так?
1 Wobland
 
26.02.13
09:46
>ВремТаб.Должность = ДолжностиОрганизаций.Наименование
а не ссылку ли со строкой сравниваешь?
2 Тролль главный
 
26.02.13
09:46
потому что
ПО ВремТаб.Должность = ДолжностиОрганизаций.Наименование
что слева и что справа?
3 Штурман
 
26.02.13
09:47
ТЗ создавал вот так:

ОписаниеТиповФ = Новый ОписаниеТипов("СправочникСсылка.ФизическиеЛица");
   ОписаниеТиповС = Новый ОписаниеТипов("СправочникСсылка.СотрудникиОрганизаций");
   ОписаниеТиповП = Новый ОписаниеТипов("СправочникСсылка.ПодразделенияОрганизаций");
   ОписаниеТиповД = Новый ОписаниеТипов("СправочникСсылка.ДолжностиОрганизаций");
   
   ТЗРаботники = Новый ТаблицаЗначений;
   ТЗРаботники.Колонки.Добавить("Физлицо", ОписаниеТиповФ);
   ТЗРаботники.Колонки.Добавить("Сотрудник", ОписаниеТиповС);
   ТЗРаботники.Колонки.Добавить("Подразделение", ОписаниеТиповП);
   ТЗРаботники.Колонки.Добавить("Должность", ОписаниеТиповД);
   
   Пока Выборка.Следующий() цикл
       стр = ТЗРаботники.Добавить();
       стр.Физлицо = Выборка.Физлицо;
       стр.Сотрудник = Выборка.Сотрудник;
       стр.Подразделение = Выборка.Подразделение;
       стр.Должность = Выборка.Должность;
   КонецЦикла;
4 Штурман
 
26.02.13
09:48
(1) возможно ссылку со строкой
5 Тролль главный
 
26.02.13
09:48
(4) как ты думаешь они могут быть равны?
6 Штурман
 
26.02.13
09:49
(2) справа вроде строка, а слева ссылка на справочник, хотя при создании таблицы значений, было явно указано:

ОписаниеТиповД = Новый ОписаниеТипов("СправочникСсылка.ДолжностиОрганизаций");
ТЗРаботники.Колонки.Добавить("Должность", ОписаниеТиповД);
7 Штурман
 
26.02.13
09:50
(5) ну я так же явно указал, что это не строка в (6), хотя в итоге вероятнее всего получилась строка

а как тогда соединение в запросе сделать?
8 Тролль главный
 
26.02.13
09:51
(7) оно там вообще не нужно
9 Cube
 
26.02.13
09:52
ПО ВремТаб.Должность = ДолжностиОрганизаций
10 Cube
 
26.02.13
09:53
+(9) ПО ВремТаб.Должность = ДолжностиОрганизаций.Ссылка
11 Тролль главный
 
26.02.13
09:55
Запрос.Текст = "ВЫБРАТЬ
                  |    ТЗРаб.Физлицо,
                  |    ТЗРаб.Сотрудник,
                  |    ТЗРаб.Подразделение,
                  |    ТЗРаб.Должность
                  |ПОМЕСТИТЬ ВремТаб
                  |ИЗ
                  |    &тзРаб КАК ТЗРаб
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////

                  |ВЫБРАТЬ
                  |    ВремТаб.Физлицо,
                  |    ВремТаб.Сотрудник,
                  |    ВремТаб.Подразделение,
                  |    ВремТаб.Должность,
                  |    ВремТаб.Должность.Наименование КАК ДолжностьОрганизации
                  |ИЗ
                  |    ВремТаб КАК ВремТаб";
12 Штурман
 
26.02.13
09:55
(8) что не нужно?
13 Тролль главный
 
26.02.13
09:55
(12) соединение, смотри (11)
14 Штурман
 
26.02.13
09:56
(13) соединение как раз нужно, потому что в справочнике Должности есть Данные
15 Штурман
 
26.02.13
09:57
а мне нужны ссылки на данные, например Код должности и т.д.
16 Штурман
 
26.02.13
10:00
(10) спасибо, это работает :)
17 sapphire
 
26.02.13
10:00
(3) Глупо.
18 Штурман
 
26.02.13
10:01
(17) что не так?
19 sapphire
 
26.02.13
10:02
(18) Результат выборки можно сразу поместить во временную таблицу.
20 Тролль главный
 
26.02.13
10:02
(15) неявное соединение в (11) рулит
21 sapphire
 
26.02.13
10:02
(18) А в (0) скорее всего
ПО ВремТаб.Должность = ДолжностиОрганизаций.Ссылка";
22 Штурман
 
26.02.13
10:03
(19) дело в точ, что у меня запрос почти на 500 строк, вот я его в ТЗ выгрузил, чтобы потом еще использовать
23 sapphire
 
26.02.13
10:03
(20) Конечно, ага. 2 раза, не меньше, а еще подпердывает, подсруливает и вообще.
24 Тролль главный
 
26.02.13
10:04
(22) 500 строк? и что? менеджер временных таблиц используй
25 sapphire
 
26.02.13
10:04
(22) Разбей на неколько подзапросов в чем беда?
26 Тролль главный
 
26.02.13
10:04
(23) а конкретно есть что сказать?
27 sapphire
 
26.02.13
10:04
(26) За использование неявных соединений прибивать надо сразу.
28 Штурман
 
26.02.13
10:04
(20) (23) ну и как, допустим код должности вывести при неявном соединении?
29 Тролль главный
 
26.02.13
10:05
(28) ВремТаб.Должность.Код
30 sapphire
 
26.02.13
10:05
(28) Используй явное соединение.
31 Штурман
 
26.02.13
10:07
запрос как в (11) выдает предупреждение:

Поле не найдено "ВремТаб.Наименование" ВремТаб.<<?>>Наименование
32 Тролль главный
 
26.02.13
10:07
(30) чем оно лучше?
33 Штурман
 
26.02.13
10:07
(29) не работает вообще
34 Тролль главный
 
26.02.13
10:14
ВЫРАЗИТЬ(ТЗ.Номенклатура КАК Справочник.Номенклатура).Код КАК Код
35 Штурман
 
26.02.13
10:16
(34) посмотрим :)
36 Aprobator
 
26.02.13
10:18
(0) прелесть, ради выгрузки 2 колонок из одной тз в другую юзаем запрос.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой