Имя: Пароль:
1C
1С v8
Запрос с тремя таблицами
,
0 lesya_abyone
 
18.07.14
07:52
Доброе утро!

Помогите найти решение. В запросе из трех таблиц выбираю данные. В результате поля Регистра сведений ПаспортныеДанныеФизическихЛиц пустые.

Запрос.Текст = "ВЫБРАТЬ
                     |      ПриемНаРаботуВОрганизацию.Дата,
                     |      ПриемНаРаботуВОрганизацию.Номер,
                     |      ПриемНаРаботуВОрганизацию.Организация.Наименование,
                     |      СотрудникиОрганизаций.Наименование КАК ФИОРаботника,
                     |      СотрудникиОрганизаций.Организация.Ссылка,
                     |      СотрудникиОрганизаций.Организация.ИНН,
                     |      СотрудникиОрганизаций.Организация.КПП,
                     |      СотрудникиОрганизаций.Организация.ОГРН,
                     |      СотрудникиОрганизаций.Должность,
                     |      СотрудникиОрганизаций.ИспытательныйСрок,
                     |      СотрудникиОрганизаций.ДатаПриемаНаРаботу,
                     |      СотрудникиОрганизаций.Физлицо.ИНН,
                     |      СотрудникиОрганизаций.Организация.ОсновнойБанковскийСчет.Наименование,
                     |      СотрудникиОрганизаций.Организация.ОсновнойБанковскийСчет.БанкДляРасчетов.КоррСчет,
                     |      ПаспортныеДанныеФизЛиц.ДокументВид,
                     |      ПаспортныеДанныеФизЛиц.ДокументСерия,
                     |      ПаспортныеДанныеФизЛиц.ДокументНомер,
                     |      ПаспортныеДанныеФизЛиц.ДокументДатаВыдачи,
                     |      ПаспортныеДанныеФизЛиц.ДокументКемВыдан,
                     |      ПаспортныеДанныеФизЛиц.ДокументКодПодразделения,
                     |      ПаспортныеДанныеФизЛиц.ДатаРегистрацииПоМестуЖительства
                     |ИЗ
                     |      Документ.ПриемНаРаботуВОрганизацию КАК ПриемНаРаботуВОрганизацию
                     |            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
                     |            ПО ПриемНаРаботуВОрганизацию.РаботникиОрганизации.Ссылка = СотрудникиОрганизаций.Ссылка
                     |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц
                     |            ПО ПриемНаРаботуВОрганизацию.ФизическиеЛица.ФизическоеЛицо.Ссылка = ПаспортныеДанныеФизЛиц.ФизЛицо.Ссылка
                     |ГДЕ
                     |      ПриемНаРаботуВОрганизацию.Ссылка = &Ссылка";
1 Wobland
 
18.07.14
07:53
решение: из Документ.ПриемНаРаботуВОрганизацию.ФизическиеЛица
2 catena
 
18.07.14
07:58
или        
ПО СотрудникиОрганизаций.Физлицо = ПаспортныеДанныеФизЛиц.ФизЛицо
3 Wobland
 
18.07.14
08:00
и всё это без фото. непорядок
4 lesya_abyone
 
18.07.14
08:02
(2) Тоже все данные Null
5 Wobland
 
18.07.14
08:03
ну а взять и наполнить БД данными?
6 DCKiller
 
18.07.14
08:06
Кстати, вопрос - а при сдаче сертификационного экзамена по программированию на спеца допустимо в запросе сразу три таблицы джойнить?
7 Wobland
 
18.07.14
08:08
(6) меньше пяти джойнов - незачёт
8 DCKiller
 
18.07.14
08:10
(7) А если серьезно?.. :)
9 Wobland
 
18.07.14
08:12
(8) а если серьёзно, то вопрос идиотский. сколько надо, столько и делай
10 Kememmotar
 
18.07.14
08:13
У Вас в этой части запроса вообще не верно все сделано:
"|ИЗ
|      Документ.ПриемНаРаботуВОрганизацию КАК ПриемНаРаботуВОрганизацию //здесь Вы получаете саму ссылку документа
|            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций //здесь Вы получаете весь справочник
|            ПО ПриемНаРаботуВОрганизацию.РаботникиОрганизации.Ссылка = СотрудникиОрганизаций.Ссылка //А тут вы пытаетесь соединить ссылку документа со справочником, что уже приведет к тому, что запрос будет пустой
|            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц
|            ПО ПриемНаРаботуВОрганизацию.ФизическиеЛица.ФизическоеЛицо.Ссылка = ПаспортныеДанныеФизЛиц.ФизЛицо.Ссылка";

Тут надо в корне менять эту часть запроса, примерно на такое:
Заменить:
                     |      ПриемНаРаботуВОрганизацию.Дата,
                     |      ПриемНаРаботуВОрганизацию.Номер,
                     |      ПриемНаРаботуВОрганизацию.Организация.Наименование,
на:
                     |      ПриемНаРаботуВОрганизацию.Ссылка.Дата,
                     |      ПриемНаРаботуВОрганизацию.Ссылка.Номер,
                     |      ПриемНаРаботуВОрганизацию.Ссылка.Организация.Наименование,
Заменить:
                     |      Документ.ПриемНаРаботуВОрганизацию КАК ПриемНаРаботуВОрганизацию
                     |            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
                     |            ПО ПриемНаРаботуВОрганизацию.РаботникиОрганизации.Ссылка = СотрудникиОрганизаций.Ссылка
                     |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц
                     |            ПО ПриемНаРаботуВОрганизацию.ФизическиеЛица.ФизическоеЛицо.Ссылка = ПаспортныеДанныеФизЛиц.ФизЛицо.Ссылка
на
                     |      Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизацию
                     |            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
                     |            ПО ПриемНаРаботуВОрганизацию.РаботникиОрганизации.Сотрудник = СотрудникиОрганизаций.Ссылка
                     |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц
                     |            ПО ПриемНаРаботуВОрганизацию.Сотрудник.ФизЛицо = ПаспортныеДанныеФизЛиц.ФизЛицо

Примерно так :-)
Ну а дальше смотреть, какие еще изменения необходимо сделать
11 DCKiller
 
18.07.14
08:14
(9) Понятно. Ты не знаешь :)
12 Wobland
 
18.07.14
08:15
(11) именно не знаю. я столько всякой разной ерунды не знаю.. ;)
13 hhhh
 
18.07.14
08:16
(11) там такие задачи, что даже физически ты не сможешь меньше трех таблиц. Твой вопрос явно пятничный.
14 DCKiller
 
18.07.14
08:17
(13) Я знаю, какие там задачи. Просто есть ведь еще пакеты...
З.Ы, Кстати, а где пятничная ветка?
15 Wobland
 
18.07.14
08:18
(14) пакетный запрос против вложенных? сложилось впечатление, что проверяльщикам пофих. не это там оценивается
16 DCKiller
 
18.07.14
08:21
(15) как раз за вложенные там и дрюкают... По крайней мере, от сдававших слышал именно так. Вроде как пакетом делать более православно.
17 Wobland
 
18.07.14
08:23
(16) молчу. у меня не было вкладенных
18 hhhh
 
18.07.14
08:27
(16) не знаю я сдавал еще в допакетную эпоху.
19 Любопытная
 
18.07.14
08:31
(16) Холивар пакетные vs вложенные вроде как тянется уже давно. И однозначного ответа на вопрос "что лучше" нет. Но мой первый учитель учил меня пакетным. Хотя, возможно, это просто его религия)
20 Wobland
 
18.07.14
08:33
(19) это очень удобная религия. во всяком случае, читать запрос сильно легче
21 Любопытная
 
18.07.14
08:38
(20) Вот не помню уже мотивацию, но читабельность была не в первых рядах.
22 Wobland
 
18.07.14
08:41
(21) ну а я тебе сколько талдычил не обращаться к одной таблице дважды внутри одного запроса? молодец, усвоила вроде ;)
23 Kamas
 
18.07.14
08:58
(19) пакеты хороши когда испльзуеш данные n -раз при n>1
24 Любопытная
 
18.07.14
09:07
(23) Во всех остальных случаях лучше вложенные? По-моему, это не то
25 AlexITGround
 
18.07.14
09:33
читать Ицик Бен-Гана, срочно.
26 lesya_abyone
 
21.07.14
08:29
Доброе утро. Снова у меня ступор. Переделываю в очередной раз запрос. Вариант 1
Запрос.Текст = "ВЫБРАТЬ
                   |    ПриемНаРаботуВОрганизацию.Ссылка.Дата КАК ДатаСоставления,
                   |    ПриемНаРаботуВОрганизацию.Ссылка.Номер КАК НомерДокумента,
                   |    ПриемНаРаботуВОрганизацию.Ссылка.Организация.Наименование КАК ОрганизацияНаименование,
                   |    СотрудникиОрганизаций.Наименование КАК ФИОРаботника,
                   |    СотрудникиОрганизаций.Организация.Ссылка КАК СсылкаОгранизация,
                   |    СотрудникиОрганизаций.Организация.ИНН КАК ОрганизацияИНН,
                   |    СотрудникиОрганизаций.Организация.КПП КАК ОрганизацияКПП,
                   |    СотрудникиОрганизаций.Организация.ОГРН КАК ОрганизацияОГРН,
                   |    СотрудникиОрганизаций.Должность,
                   |    СотрудникиОрганизаций.ИспытательныйСрок,
                   |    СотрудникиОрганизаций.ДатаПриемаНаРаботу,
                   |    СотрудникиОрганизаций.Физлицо.ИНН КАК РаботникИНН,
                   |    СотрудникиОрганизаций.Организация.ОсновнойБанковскийСчет.Наименование КАК БанковскийСчет,
                   |    СотрудникиОрганизаций.Организация.ОсновнойБанковскийСчет.БанкДляРасчетов.КоррСчет КАК КоррСчетБанка,
                   |    ПаспортныеДанныеФизЛиц.ДокументСерия,
                   |    ПаспортныеДанныеФизЛиц.ДокументНомер,
                   |    ПаспортныеДанныеФизЛиц.ДокументДатаВыдачи,
                   |    ПаспортныеДанныеФизЛиц.ДокументКемВыдан,
                   |    ПаспортныеДанныеФизЛиц.ДатаРегистрацииПоМестуЖительства,
                   |    ПриемНаРаботуВОрганизацию.Организация.ОсновнойБанковскийСчет.Банк.Код КАК ОрганизацияБИК,
                   |    ПаспортныеДанныеФизЛиц.ФизЛицо.Ссылка КАК ФизЛицоСсылка,
                   |    ПриемНаРаботуВОрганизацию.Организация.НаименованиеПолное КАК НаименованиеПолное,
                   |    СотрудникиОрганизаций.Организация.ОсновнойБанковскийСчет.НомерСчета КАК НомерСчета,
                   |    СотрудникиОрганизаций.Организация.ОсновнойБанковскийСчет.Банк.Наименование КАК БанкНаименование,
                   |    ПриемНаРаботуВОрганизацию.Ответственный.ФизЛицо.Ссылка КАК Ответственный
                   |ИЗ
                   |    Документ.ПриемНаРаботуВОрганизацию КАК ПриемНаРаботуВОрганизацию
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
                   |        ПО (СотрудникиОрганизаций.Физлицо = ПриемНаРаботуВОрганизацию.ФизическиеЛица.ФизическоеЛицо),
                   |    РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц
                   |ГДЕ
                   |    ПриемНаРаботуВОрганизацию.Ссылка = &Ссылка";

Выбирате лишних сотрудников, из РегистрСведений.ПаспортныеДанныеФизЛиц

Вариант 2, исправленный
Запрос.Текст = "ВЫБРАТЬ
                   |    ПриемНаРаботуВОрганизацию.Ссылка.Дата КАК ДатаСоставления,
                   |    ПриемНаРаботуВОрганизацию.Ссылка.Номер КАК НомерДокумента,
                   |    ПриемНаРаботуВОрганизацию.Ссылка.Организация.Наименование КАК ОрганизацияНаименование,
                   |    СотрудникиОрганизаций.Наименование КАК ФИОРаботника,
                   |    СотрудникиОрганизаций.Организация.Ссылка КАК СсылкаОгранизация,
                   |    СотрудникиОрганизаций.Организация.ИНН КАК ОрганизацияИНН,
                   |    СотрудникиОрганизаций.Организация.КПП КАК ОрганизацияКПП,
                   |    СотрудникиОрганизаций.Организация.ОГРН КАК ОрганизацияОГРН,
                   |    СотрудникиОрганизаций.Должность,
                   |    СотрудникиОрганизаций.ИспытательныйСрок,
                   |    СотрудникиОрганизаций.ДатаПриемаНаРаботу,
                   |    СотрудникиОрганизаций.Физлицо.ИНН КАК РаботникИНН,
                   |    СотрудникиОрганизаций.Организация.ОсновнойБанковскийСчет.Наименование КАК БанковскийСчет,
                   |    СотрудникиОрганизаций.Организация.ОсновнойБанковскийСчет.БанкДляРасчетов.КоррСчет КАК КоррСчетБанка,
                   |    ПаспортныеДанныеФизЛиц.ДокументСерия,
                   |    ПаспортныеДанныеФизЛиц.ДокументНомер,
                   |    ПаспортныеДанныеФизЛиц.ДокументДатаВыдачи,
                   |    ПаспортныеДанныеФизЛиц.ДокументКемВыдан,
                   |    ПаспортныеДанныеФизЛиц.ДатаРегистрацииПоМестуЖительства,
                   |    ПриемНаРаботуВОрганизацию.Организация.ОсновнойБанковскийСчет.Банк.Код КАК ОрганизацияБИК,
                   |    ПриемНаРаботуВОрганизацию.Организация.НаименованиеПолное КАК НаименованиеПолное,
                   |    СотрудникиОрганизаций.Организация.ОсновнойБанковскийСчет.НомерСчета КАК НомерСчета,
                   |    СотрудникиОрганизаций.Организация.ОсновнойБанковскийСчет.Банк.Наименование КАК БанкНаименование,
                   |    ПриемНаРаботуВОрганизацию.Ответственный.ФизЛицо.Ссылка КАК Ответственный,
                   |    СотрудникиОрганизаций.Ссылка КАК СотрудникСсылка,
                   |    ПаспортныеДанныеФизЛиц.ФизЛицо.Ссылка
                   |ИЗ
                   |    Документ.ПриемНаРаботуВОрганизацию КАК ПриемНаРаботуВОрганизацию
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
                   |        ПО (СотрудникиОрганизаций.Физлицо = ПриемНаРаботуВОрганизацию.ФизическиеЛица.ФизическоеЛицо)
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц
                   |        ПО (ПриемНаРаботуВОрганизацию.РаботникиОрганизации.ФизЛицо = ПаспортныеДанныеФизЛиц.ФизЛицо)
                   |ГДЕ
                   |    ПриемНаРаботуВОрганизацию.Ссылка = &Ссылка";
Если в Документ.ПриемНаРаботуВОрганизацию один сотрудник, все ок. Иначе в ПаспортныеДанныеФизЛиц.ФизЛицо.Ссылка ничего нет.
27 hhhh
 
21.07.14
09:14
ну так

                   |ИЗ
                   |    Документ.ПриемНаРаботуВОрганизацию.ФизическиеЛица КАК ПриемНаРаботуВОрганизациюФизическиеЛица
28 bolder
 
21.07.14
10:03
(27) Ну что, по кругу?В (1) то же самое))).
29 lesya_abyone
 
21.07.14
10:18
))))Тема закрыта
30 bolder
 
21.07.14
11:38
(29) Говорили же, без фотки не взлетит)).Нарушаем правила форума?)))
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.