Имя: Пароль:
1C
1С v8
первоапрельский результат обычного запроса
,
0 samozvanec
 
01.04.13
16:05
с учетом того, что

ТаблицаЗначений[НомерСтрокиПервый].КодСчета = ТаблицаЗначений[НомерСтрокиВторой].КодСчета

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

выбрать
  Т1.КодСчета
  ПСХ.Счет
   Из ТаблицаКоторуюВставляюПараметром КАК Т1
     ЛЕВОЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный КАК ПСХ
       ПО Т1.КодСчета = ПСХ.Код

волшебства, вроде, не бывает, но что тогда не так?
1 Defender aka LINN
 
01.04.13
16:10
(0) Значит, в другой строке таки не равно и ты нас наигрываешь.
2 salvator
 
01.04.13
16:11
Первое апреля оно такое, да.
3 samozvanec
 
01.04.13
16:11
(1) в отладчике смотрю - равно
4 samozvanec
 
01.04.13
16:12
+(3) "01.01" - в обоих строках. ищу, соответственно первый счет. для одной строки находится, для другой - нет.
5 Defender aka LINN
 
01.04.13
16:12
(3) НомерСтрокиПервый=НомерСтрокиВторой значит. Чудес не бывает, сколько бы ты тут не пытался нас убедить в обратном, даже не выложив ни единого скриншота
6 samozvanec
 
01.04.13
16:13
(5) не равны... ща наделаю...
7 samozvanec
 
01.04.13
16:20
http://i058.radikal.ru/1304/17/9e1618a59eca.jpg
вот начало исходной таблицы. там все - строки, для этих строк условие соединения отрабатывает
8 samozvanec
 
01.04.13
16:21
http://s018.radikal.ru/i511/1304/f5/c47efc96aed8.jpg
вот конец той же таблицы. для этих нескольких строк условие не отрабатывает
9 samozvanec
 
01.04.13
16:21
http://s020.radikal.ru/i700/1304/64/f74f9a3f47dc.jpg

а вот тут проверка условия
10 samozvanec
 
01.04.13
16:29
в общем не прикалываюсь я, реально не пойму, в чем дело.
11 salvator
 
01.04.13
16:33
(10) Скрин результата запроса в проблемном месте скинь.
12 salvator
 
01.04.13
16:36
+(11) Плюс, желательно, чтобы видно было колонку с номером строки ;)
13 Defender aka LINN
 
01.04.13
16:36
(7) Еще один юморист... Ну и где вообще колонка "КодСчета"? Сейчас выяснится, что и запрос написан "ну я сокращенно написал, выкинул к чертям весь блок "ГДЕ", который результат соединения нещадно фильтрует", да?
14 samozvanec
 
01.04.13
16:42
http://s018.radikal.ru/i501/1304/d5/d52bc6d09cbd.png
результат, верхние строки

http://s42.radikal.ru/i095/1304/84/c9432264528f.png
результат, нижние строки

запрос не содержит ГДЕ. во временную таблицу из плана счетов отбирается все ссылки, не помеченные на удаление + их коды. левое соединение по полю Код к таблице, в которой все строковое.
15 samozvanec
 
01.04.13
16:43
(13) я сокращенно написал, так и есть. никаких посторонних условий не накладывается. к одним строкам джонится, к другим - нет.
16 Defender aka LINN
 
01.04.13
16:44
(15) Полный текст запроса фстудию
17 samozvanec
 
01.04.13
16:46
ВЫБРАТЬ
   СтроковаяТаблица.НомерКарточкиСкладскогоУчета,
   СтроковаяТаблица.ОбъектНЗС,
   СтроковаяТаблица.СостояниеОбъектаНЗС,
   СтроковаяТаблица.ГруппаНЗСПоРСБУ,
   СтроковаяТаблица.СубсчетУчетаОбъектаНЗС,
   СтроковаяТаблица.СубсчетВыбытияОбъектаНЗС,
   СтроковаяТаблица.ГруппаОценщик,
   СтроковаяТаблица.СостояниеОбъектаОценщик,
   СтроковаяТаблица.ПравовойСтатусОбъектаОценщик,
   СтроковаяТаблица.ВидПриходаВРеестрМСФО,
   СтроковаяТаблица.СтатусЭксплуатацииМСФО,
   СтроковаяТаблица.ГруппаНЗСПоМСФО,
   СтроковаяТаблица.ТребуетМонтажа,
   СтроковаяТаблица.ПорядковыйНомерВКарточкеСкладскогоУчета
ПОМЕСТИТЬ ВТСтроковая
ИЗ
   &СтроковаяТаблица КАК СтроковаяТаблица
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СведенияПоОбъектамНЗСРСБУСрезПоследних.ОбъектНЗС КАК ОбъектНЗС,
   СведенияПоОбъектамНЗСРСБУСрезПоследних.ОбъектНЗС.НомерКарточкиСкладскогоУчета КАК НомерКарточкиСкладскогоУчета,
   СведенияПоОбъектамНЗСРСБУСрезПоследних.ОбъектНЗС.Наименование КАК Наименование,
   СведенияПоОбъектамНЗСРСБУСрезПоследних.ОбъектНЗС.ПорядковыйНомерВКарточкеСкладскогоУчета КАК ПорядковыйНомерВКарточкеСкладскогоУчета
ПОМЕСТИТЬ ВТОбъектыНЗС
ИЗ
   РегистрСведений.СведенияПоОбъектамНЗСРСБУ.СрезПоследних(&НачалоПериода, Организация = &Организация) КАК СведенияПоОбъектамНЗСРСБУСрезПоследних

ИНДЕКСИРОВАТЬ ПО
   НомерКарточкиСкладскогоУчета,
   ПорядковыйНомерВКарточкеСкладскогоУчета,
   Наименование
;

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

ИНДЕКСИРОВАТЬ ПО
   Наименование
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ГруппыВНАПоРСБУ.Ссылка КАК ГруппаНЗСПоРСБУ,
   ГруппыВНАПоРСБУ.Код КАК Код
ПОМЕСТИТЬ ВТГруппыНЗСПоРСБУ
ИЗ
   Справочник.ГруппыВНАПоРСБУ КАК ГруппыВНАПоРСБУ
ГДЕ
   НЕ ГруппыВНАПоРСБУ.ПометкаУдаления

ИНДЕКСИРОВАТЬ ПО
   Код
;

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

ИНДЕКСИРОВАТЬ ПО
   Код
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ГруппыОценщикаМСФО.Ссылка КАК ГруппаОценщик,
   ГруппыОценщикаМСФО.Наименование КАК Наименование
ПОМЕСТИТЬ ВТГруппыОценщик
ИЗ
   Справочник.ГруппыОценщикаМСФО КАК ГруппыОценщикаМСФО
ГДЕ
   НЕ ГруппыОценщикаМСФО.ПометкаУдаления

ИНДЕКСИРОВАТЬ ПО
   Наименование
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СостоянияОбъектовНЗСОценщик.Ссылка КАК СостояниеОбъектаОценщик,
   СостоянияОбъектовНЗСОценщик.Наименование КАК Наименование
ПОМЕСТИТЬ ВТСостоянияОбъектовОценщик
ИЗ
   Справочник.СостоянияОбъектовНЗСОценщик КАК СостоянияОбъектовНЗСОценщик
ГДЕ
   НЕ СостоянияОбъектовНЗСОценщик.ПометкаУдаления

ИНДЕКСИРОВАТЬ ПО
   Наименование
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СтатусыОценщика.Ссылка КАК ПравовойСтатусОбъектаОценщик,
   СтатусыОценщика.Наименование КАК Наименование
ПОМЕСТИТЬ ВТПравовыеСтатусыОбъектовОценщик
ИЗ
   Справочник.СтатусыОценщика КАК СтатусыОценщика
ГДЕ
   НЕ СтатусыОценщика.ПометкаУдаления

ИНДЕКСИРОВАТЬ ПО
   Наименование
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВидыПриходаВРеестрОбъектаНЗС.Ссылка КАК ВидПриходаВРеестрМСФО,
   ВидыПриходаВРеестрОбъектаНЗС.Наименование КАК Наименование
ПОМЕСТИТЬ ВТВидыПриходаВРеестрМСФО
ИЗ
   Справочник.ВидыПриходаВРеестрОбъектаНЗС КАК ВидыПриходаВРеестрОбъектаНЗС
ГДЕ
   НЕ ВидыПриходаВРеестрОбъектаНЗС.ПометкаУдаления

ИНДЕКСИРОВАТЬ ПО
   Наименование
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СтатусыЭксплуатацииМСФО.Ссылка КАК СтатусЭксплуатацииМСФО,
   СтатусыЭксплуатацииМСФО.Наименование КАК Наименование
ПОМЕСТИТЬ ВТСтатусыЭксплуатацииМСФО
ИЗ
   Справочник.СтатусыЭксплуатацииМСФО КАК СтатусыЭксплуатацииМСФО
ГДЕ
   НЕ СтатусыЭксплуатацииМСФО.ПометкаУдаления

ИНДЕКСИРОВАТЬ ПО
   Наименование
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ГруппыВНАПоМСФО.Ссылка КАК ГруппаНЗСПоМСФО,
   ГруппыВНАПоМСФО.Код КАК Код
ПОМЕСТИТЬ ВТГруппыНЗСПоМСФО
ИЗ
   Справочник.ГруппыВНАПоМСФО КАК ГруппыВНАПоМСФО
ГДЕ
   НЕ ГруппыВНАПоМСФО.ПометкаУдаления

ИНДЕКСИРОВАТЬ ПО
   Код
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТСтроковая.НомерКарточкиСкладскогоУчета,
   ВТОбъектыНЗС.ОбъектНЗС,
   ВТСостоянияОбъектовНЗС.СостояниеОбъектаНЗС,
   ВТГруппыНЗСПоРСБУ.ГруппаНЗСПоРСБУ,
   ВТСчетаУчета.Счет КАК СубсчетУчетаОбъектаНЗС,
   ВТСчетаВыбытия.Счет КАК СубсчетВыбытияОбъектаНЗС,
   ВТГруппыОценщик.ГруппаОценщик,
   ВТСостоянияОбъектовОценщик.СостояниеОбъектаОценщик,
   ВТПравовыеСтатусыОбъектовОценщик.ПравовойСтатусОбъектаОценщик,
   ВТВидыПриходаВРеестрМСФО.ВидПриходаВРеестрМСФО,
   ВТСтатусыЭксплуатацииМСФО.СтатусЭксплуатацииМСФО,
   ВТГруппыНЗСПоМСФО.ГруппаНЗСПоМСФО,
   ВЫБОР
       КОГДА ВТСтроковая.ТребуетМонтажа = "Да"
           ТОГДА ИСТИНА
       КОГДА ВТСтроковая.ТребуетМонтажа = "Нет"
           ТОГДА ЛОЖЬ
       ИНАЧЕ ВТСтроковая.ТребуетМонтажа
   КОНЕЦ КАК ТребуетМонтажа
ИЗ
   ВТСтроковая КАК ВТСтроковая
       ЛЕВОЕ СОЕДИНЕНИЕ ВТОбъектыНЗС КАК ВТОбъектыНЗС
       ПО ВТСтроковая.ОбъектНЗС = ВТОбъектыНЗС.Наименование
           И ВТСтроковая.ПорядковыйНомерВКарточкеСкладскогоУчета = ВТОбъектыНЗС.ПорядковыйНомерВКарточкеСкладскогоУчета
           И ВТСтроковая.НомерКарточкиСкладскогоУчета = ВТОбъектыНЗС.НомерКарточкиСкладскогоУчета
       ЛЕВОЕ СОЕДИНЕНИЕ ВТСостоянияОбъектовНЗС КАК ВТСостоянияОбъектовНЗС
       ПО ВТСтроковая.СостояниеОбъектаНЗС = ВТСостоянияОбъектовНЗС.Наименование
       ЛЕВОЕ СОЕДИНЕНИЕ ВТГруппыНЗСПоРСБУ КАК ВТГруппыНЗСПоРСБУ
       ПО ВТСтроковая.ГруппаНЗСПоРСБУ = ВТГруппыНЗСПоРСБУ.Код
       ЛЕВОЕ СОЕДИНЕНИЕ ВТСчета КАК ВТСчетаУчета
       ПО ВТСтроковая.СубсчетУчетаОбъектаНЗС = ВТСчетаУчета.Код
       ЛЕВОЕ СОЕДИНЕНИЕ ВТСчета КАК ВТСчетаВыбытия
       ПО ВТСтроковая.СубсчетВыбытияОбъектаНЗС = ВТСчетаВыбытия.Код
       ЛЕВОЕ СОЕДИНЕНИЕ ВТГруппыОценщик КАК ВТГруппыОценщик
       ПО ВТСтроковая.ГруппаОценщик = ВТГруппыОценщик.Наименование
       ЛЕВОЕ СОЕДИНЕНИЕ ВТСостоянияОбъектовОценщик КАК ВТСостоянияОбъектовОценщик
       ПО ВТСтроковая.СостояниеОбъектаОценщик = ВТСостоянияОбъектовОценщик.Наименование
       ЛЕВОЕ СОЕДИНЕНИЕ ВТПравовыеСтатусыОбъектовОценщик КАК ВТПравовыеСтатусыОбъектовОценщик
       ПО ВТСтроковая.ПравовойСтатусОбъектаОценщик = ВТПравовыеСтатусыОбъектовОценщик.Наименование
       ЛЕВОЕ СОЕДИНЕНИЕ ВТВидыПриходаВРеестрМСФО КАК ВТВидыПриходаВРеестрМСФО
       ПО ВТСтроковая.ВидПриходаВРеестрМСФО = ВТВидыПриходаВРеестрМСФО.Наименование
       ЛЕВОЕ СОЕДИНЕНИЕ ВТСтатусыЭксплуатацииМСФО КАК ВТСтатусыЭксплуатацииМСФО
       ПО ВТСтроковая.СтатусЭксплуатацииМСФО = ВТСтатусыЭксплуатацииМСФО.Наименование
       ЛЕВОЕ СОЕДИНЕНИЕ ВТГруппыНЗСПоМСФО КАК ВТГруппыНЗСПоМСФО
       ПО ВТСтроковая.ГруппаНЗСПоМСФО = ВТГруппыНЗСПоМСФО.Код
18 НафНаф
 
01.04.13
16:48
и где надо угадать?
19 samozvanec
 
01.04.13
16:48
объекты НЗС у нас - все, что на восьмерке, не обращайте внимания) выбор требует монтажа - временный косяк, так надо.

просьба по делу подсказать)
20 samozvanec
 
01.04.13
16:50
(18) что угадать?
21 НафНаф
 
01.04.13
16:50
(20) не знаю, неверное соединение видимо
22 samozvanec
 
01.04.13
16:52
(21) что тут неверного может быть?

ЛЕВОЕ СОЕДИНЕНИЕ ВТСчета КАК ВТСчетаВыбытия
       ПО ВТСтроковая.СубсчетВыбытияОбъектаНЗС = ВТСчетаВыбытия.Код
23 samozvanec
 
01.04.13
16:52
+(22) для каких-то строк отрабатывает!
24 hhhh
 
01.04.13
16:53
(22) количество пробелов
25 НафНаф
 
01.04.13
16:53
может там не строки?
26 samozvanec
 
01.04.13
16:58
(25) (9) видел? никаких пробелов, строки все. реально вот такое вот в обед мне приехало, пухнет голова
27 Defender aka LINN
 
01.04.13
16:59
(26) Чудес не бывает. Так что копай дальше.
Я бы начал с выкидывания нахрен всех остальных таблиц
28 samozvanec
 
02.04.13
10:48
в общем, как оказалось, после передачи таблицы в запрос, она перемешивается произвольным образом. т.е. соединение отрабатывало корректно, но в конце таблицы были уже другие строки, что и ввело меня в заблуждение.

надеюсь, кому-нибудь будет полезно.
Независимо от того, куда вы едете — это в гору и против ветра!