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


1С:Предприятие :: 1С:Предприятие 8 общая

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

Исчезающий реквизит в запросе
Я
   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 или кнопку "Обновить" в браузере.
Рекламное место пустует