Вход | Регистрация


1С:Предприятие ::

Метки: 

Исчезающий реквизит в запросе

Я
   Ymryn
 
18.07.18 - 09:56
День добрый.
Есть строчка в запросе
Когда ТИПЗНАЧЕНИЯ(ВТ_ТабСообщений_Внешняя.Документ) = ТИП(Документ.ПеремещениеТоваров) Тогда                                                        ВТ_ТабСообщений_Внешняя.Документ.СкладОтправитель

На одном наборе данных оно прекрасно отрабатывается. На другом наборе данных я получаю ошибку Поле не найдено .СкладОтправитель.

Документ точно определяется по типу. Проблем с доступом к документу нет. Т.е. вариант Документ.Ссылка успешно обрабатывается на обоих наборах.
Проверки на NULL, Неопределено, ПустоеЗначение по Документу тоже не помогают.

Посмотреть оба набора глазами крайне затруднительно. Этот реквизит железно есть в этом дипе документа. Есть ли у вас какие-либо рекомендации, что может вызывать срабатывание по ошибке в подобной конструкции?
 
  Рекламное место пустует
   FIXXXL
 
1 - 18.07.18 - 09:58
(0) посмотри, может по ходу пьесы в ВТ_ТабСообщений_Внешняя еще какой документ влетает, без такого реквизита...
   Ymryn
 
2 - 18.07.18 - 09:59
(1) документы без этого реквизита есть. Но они должны отлетать по отбору в условии.Т.е. раз мы обращаемся к СкладОтправитель, то это Перемещение, у которого этот реквизит должен быть.
   FIXXXL
 
3 - 18.07.18 - 10:01
(2) я имел ввиду в процессе сбора ВТ
если хочешь избежать, напиши явно
 ВЫРАЗИТЬ(ВТ_ТабСообщений_Внешняя.Документ КАК Документ.ПеремещениеТоваров).СкладОтправитель
и посмотри результат запроса глазами
   Скиурус
 
4 - 18.07.18 - 10:02
Сделай запрос по-человечески: явно прилинкуй таблицу документа Перемещения и наложи на нее условие.
   RomanYS
 
5 - 18.07.18 - 10:03
(2) Таблица должна быть (и есть) типизирована, и тип колонки должен содержать тип Документ.ПеремещениеТоваров даже если данных там таких нет
   Ymryn
 
6 - 18.07.18 - 10:06
(3) на второй наборе ловлю - Несовместимые Типы Выразить.

Т.е. похоже есть что-то там левое. Не понимаю как оно проходит тогда условие.
   RomanYS
 
7 - 18.07.18 - 10:07
(6) Тип(!) колонки должен содержать необходимые типы
   Ymryn
 
8 - 18.07.18 - 10:09
(7) я не смогу изменить ВТ. Плюс он содержит тип Перемещения. Иначе это бы вообще не работало.
   Малыш Джон
 
9 - 18.07.18 - 10:10
(6) а там точно не Null?

если поставить типо 
ВЫБОР КОГДА ВТ_ТабСообщений_Внешняя.Документ есть NULL ТОГДА "блаблабла" 

что даст?

да в конце концов вырази как строку и посмотри что там
   Ymryn
 
10 - 18.07.18 - 10:16
(9) Там точно не NULL. И там несколько тысяч записей, в которых крайне сложно ориентироваться глазами, особенно если нет осознания, что именно искать.
 
 
   RomanYS
 
11 - 18.07.18 - 10:17
(10) Не ищи записи, посмотри тип колонки отладчиком
   hhhh
 
12 - 18.07.18 - 10:19
(10) ну так сделай

ВТ_ТабСообщений_Внешняя.ДокументСкладОтправитель
или даже лучше

ВТ_ТабСообщений_Внешняя.ДокументСклад
   Ymryn
 
13 - 18.07.18 - 10:21
(12) я не могу менять ВТ.
(11) попробую
   Малыш Джон
 
14 - 18.07.18 - 10:22
(10) хмммм
ну возьми просто выведи типы значений и сгруппируй,
посмотри, какие типы встречаются в ВТшке
   VladZ
 
15 - 18.07.18 - 10:23
(0) Сделай запрос по-человечески.
   RomanYS
 
16 - 18.07.18 - 10:24
(13) Сделай явное левое соединение с Документ.ПеремещениеТоваров - ошибка исчезнет. Но данных у тебя не прибавится - типа у тебя такого нет в ВТ )))
   VladZ
 
17 - 18.07.18 - 10:24
ВТ_ТабСообщений_Внешняя.Документ.СкладОтправитель: там, где получаешь ВТ_ТабСообщений_Внешняя сразу получай СкладОтправитель.
   Ymryn
 
18 - 18.07.18 - 10:26
(16) не могу. У меня есть и другие типы документов, которые надо выводить. Мне надо отфильтровать только заполнение этой колонки согласно типу документов.
(17) я не могу менять ВТ.
   VladZ
 
19 - 18.07.18 - 10:27
(18) Почему не можешь?
   Малыш Джон
 
20 - 18.07.18 - 10:28
(18)>>не могу.

есть такое слово - "надо")))

тебе ж не запрос сделать, а найти проблемные данные и посмотреть - что там вообще
   Ymryn
 
21 - 18.07.18 - 10:30
(18) поправлюсь, не отфильтровать а определить заполнение. Что если такой-то тип брать этот реквизит, если другой - другой и т.д. Там и реализации и поступления еще. На одном наборе, где все 3 типа присутствуют всё хорошо. На другом наборе встречаются видимо какие-то данные, которые почему-то по проверке проходят как перемещение, но им не являются.

(19) ВТ формируется другой обработкой, которая должна легко обновляться сторонней фирмой, т.е. не содержать изменений. Этот запрос - пост обработка результатов той, чтобы настроить вывод данных под себя.

(20) я не совсем понимаю как изменение той обработки мне поможет найти проблемные данные. Т.е. да, оно выполнится. Но там так же будет куча строк и нет осознания, что смотреть.
   Малыш Джон
 
22 - 18.07.18 - 10:32
(21) выведи куда-нибудь результат запроса

ВЫБРАТЬ
  ТИПЗНАЧЕНИЯ(ВТ_ТабСообщений_Внешняя.Документ) КАК ТипДока
ИЗ откудатотам
СГРУППИРОВАТЬ ПО 
ТИПЗНАЧЕНИЯ(ВТ_ТабСообщений_Внешняя.Документ)


какие типы значений встречаются?
   RomanYS
 
23 - 18.07.18 - 10:42
(21) "Что если такой-то тип брать этот реквизит, если другой - другой и т.д. Там и реализации и поступления еще"
так сделай три явных левых соединения. Система всё равно тоже самое сделает, только ещё и лишние с теми таблицами где есть такие реквизиты
   hhhh
 
24 - 18.07.18 - 10:43
(21) может просто тупо быть битая ссылка вместо документа перемещения. попробуйте прогнать тии на базе
   Ymryn
 
25 - 18.07.18 - 10:46
(23) понял. Спасибо, попробую.
   Ymryn
 
26 - 18.07.18 - 10:53
(23) благодарю. Это решило проблему. И я теперь кажется понимаю, как мне с помощью этой вещи поймать, что же за данные тут попадают, которые мы не ждем.
   RomanYS
 
27 - 18.07.18 - 10:56
(26) "ВТ_ТабСообщений_Внешняя.Документ.СкладОтправитель"
это удобно читать и писать. А по факту это левое соединение и возможно не одно.
Например Регистратор.Дата - это туча ЛС, способная озадачить любой сервер.
   Ymryn
 
28 - 18.07.18 - 10:58
(27) угу. Самое обидное, что я это знаю, а вот мысль именно через явное левое решить проблему в голову не пришла. Еще раз большое спасибо.



Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует