Имя: Пароль:
1C
1С v8
Объединение в Запросе
,
0 jyupiter
 
22.06.12
05:16
Конфигурация Управление Строительной Организацией (похожа на УПП)

Нужно сформировать запрос, который в итоге выдаст таблицу с двумя колонками "ФизЛицо" и "Страна". Строки - ФизЛица - полный набор из справочника ФизическиеЛица. Страна берётся из периодического РегистраСведений ГражданствоФизЛиц (срез последних на дату отчёта). Если ФизЛицо в Регистре Сведений не засветилось, то в поле "Страна"  должна быть Россия (предопределённый элемент классификатора стран).

Первый раз столкнулся с задачей такого типа, не могу сообразить, как к ней подступиться. Без запроса всё было бы просто, но нужно именно запросом.

Помогите добрым советом, плиз
1 Rie
 
22.06.12
05:23
(0) А в чём именно у тебя проблема? Украли встроенную справку - и теперь тебе негде почитать о ЛЕВОЕ СОЕДИНЕНИЕ и ЕСТЬNULL?
2 jyupiter
 
22.06.12
05:24
проблема в том, что справка большая, и некому подсказать, про что именно почитать)
спасибо
3 rphosts
 
22.06.12
05:32
(2) для этого есть: Мартин Грабер (Грубер?) "UnderStarting SQL" - читается за 1 вечер, открывает почти все чакры на SQL... ну покрайней мере таких вопросов не будет.. а потом всёравно читать справку - про особенности диалекта от 1С и про временные таблицы у Грабера нет.
4 Avalone2010
 
22.06.12
05:40
Левое соединение по физ лицам и срезу последних по регистру. Для страна = Null через конструкцию Выбор когда подставь Россию
5 Rie
 
22.06.12
05:45
(4) За сравнение с NULL на равенство положен пожизненный эцих с гвоздями (но только при наличии смягчающих обстоятельств). И зачем ВЫБОР, если специально для этой цели имеется ЕСТЬNULL?
6 jyupiter
 
22.06.12
05:51
(3) мне нужны именно особенности "диалекта" 1С. А то как собака. Что надо сделать, понимаю, а объяснить электронному болвану не могу

(5) не понимаю, куда в этой схеме присобачить ЕСТЬNULL
7 Rie
 
22.06.12
05:57
(6) Приблизительно так (имена полей, справочников и т.д. - хрен знает, как они в твоей конфигурации называются):
ВЫБРАТЬ
   ФизЛица.ФизЛицо КАК ФизЛицо,
   ЕСТЬNULL(Гражданство.Страна,ЗНАЧЕНИЕ(Справочник.КлассификаторСтранМира.Россия)) КАК Страна
ИЗ
   Справочник.ФизическиеЛица КАК ФизЛица
   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц.СрезПоследних(&ДатаОтчета) КАК Гражданство
       ПО ФизЛица.Ссылка = Гражданство.ФизЛицо
8 Avalone2010
 
22.06.12
05:57
(6) Имелось виду
Выбор Когда ЕстьНулл(БлаБла,0) = 0 Тогда
Россия
Иначе
Блабла
Конец
(5) не перегружай мозг новичкам.Я знаяю про естьнулл, не умничай.
9 Rie
 
22.06.12
06:01
(8) Если знаешь - то зачем даёшь плохие советы?
10 Avalone2010
 
22.06.12
06:06
(9) за тем что объясняю как проще сделать человеку который не в зуб ногой. Знак равенства есть и в матиматике за 1 класс и в любом языке программирования в отличии от конструкций языка запроса(ISNULL). По поводу правильности - есть замечательная книга "Профессиональная разработка с системе 1С Предприятие". Когда топикстартер посчитает нужным писать код методологически правильно он возьмет ее и с удовольствием прочитает.
11 Rie
 
22.06.12
06:15
(10) С NULL сравнивать на равенство _нельзя_, независимо от того, какие где-то там есть знаки. Для проверки на NULL есть специальная операция ЕСТЬ NULL.
Ну а конструкция ВЫБОР КОГДА ЕСТЬNULL(БлаБла,0)=0 ТОГДА - за неё увольнять без выходного пособия. Хотя бы потому, что она _не_ эквивалентна проверке на NULL.
Ты даёшь _неправильные_ советы - и пытаешься прикрыть своё невежество якобы попытками объяснить проще.
12 Рэйв
 
22.06.12
06:18
(11)
ВЫБОР КОГДА ЕСТЬNULL(БлаБла,"твоюжматьжтонулл!!!")="твоюжматьжтонулл!!!" ТОГДА

Эквивалентно:-)
13 jyupiter
 
22.06.12
06:28
(7) Спасибо, всё взлетело)
После небольшой редакции ФизЛица.ФизЛицо -> ФизЛица.Ссылка
14 jyupiter
 
22.06.12
06:31
(10) Если бы в наших гребенях можно было вот так просто "взять и прочитать", и если бы при этом книга была одна, зато про всё-превсё, то я бы давно так и сделал. Но увы(

Ещё раз всем СПАСИБО, теперь более-менее понятно, как устроено Левое соединение