Реквизит составного типа - как проверить на пустое значение?

1. user_2010 891 29.03.23 16:58 Сейчас в теме
Добрый день, Коллеги!

В регистре накопления есть реквизит составного типа - различные документы. Нужно в запросе как-то проверить на пустое значение?
Как-то хитро это можно сделать?
А может это, и вовсе, - делается очень просто?

Спасибо!
По теме из базы знаний
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
6. Asya.Ozerova 41 29.03.23 19:46 Сейчас в теме
13. user1826630 29.03.23 21:23 Сейчас в теме
(6) Давно ли Неопределено стало = NULL?
10. karamazoff 96 29.03.23 21:03 Сейчас в теме
(1)друг ! у тебя такой рейтинг и ты задаешь такие вопросы?
24. Asya.Ozerova 41 29.03.23 22:11 Сейчас в теме
(22)
Нужно в запросе как-то проверить на пустое значение
25. Asya.Ozerova 41 29.03.23 22:11 Сейчас в теме
26. Sashares 34 29.03.23 22:15 Сейчас в теме
(25)Я в курсе.
Вам несколько человек говорят, что то что вы предлагаете - в таком виде работать не будет.
Вы можете проверить сами.
Это может сработать, если проверять на null реквизит Реквизита. Но не сам реквизит.
Но в этом случае будет соединение со всеми таблицами этого составного реквизита.
МимохожийОднако; user1826630; +2 Ответить
44. Asya.Ozerova 41 29.03.23 23:38 Сейчас в теме
(26)Я Вам говорю исходя из собственного опыта
47. Sashares 34 29.03.23 23:40 Сейчас в теме
(44) Даже не знаю что на это ответить. Ну только то что ваш опыт вам врет. Учите матчасть.
48. Asya.Ozerova 41 29.03.23 23:42 Сейчас в теме
50. user1826630 29.03.23 23:46 Сейчас в теме
(48) Не останавливайся на достигнутом! Продолжай проверять реквизиты основной таблицы на NULL, и будешь ты самой крутой 1С-ницей в мире!
54. Sashares 34 29.03.23 23:58 Сейчас в теме
(48)Вы бы хоть сначала в консоли проверили свои слова.
То что никто в теме вас не поддерживает, ни на что не намекает?
Или вы считаете некомпетентными всех кроме себя?
Просто так упорно утверждать то, в чем вы ошибаетесь, ведь самой же потом стыдно будет.
55. user1826630 29.03.23 23:59 Сейчас в теме
(54)
ведь самой же потом стыдно будет.
Да не... Исчезнет опять на полгода. Потом появится типа "как ни в чем не бывало"...
58. Sashares 34 30.03.23 00:41 Сейчас в теме
(55)Да ладно, все ошибаются. Надо только уметь признавать свои ошибки.
57. Sashares 34 30.03.23 00:22 Сейчас в теме
(48)Если вам лень сделать пример самостоятельно, вот вам тестовая база.
Прикрепленные файлы:
1Cv8.dt
Meaning0081; +1 Ответить
68. user1880116 30.03.23 09:21 Сейчас в теме
(44)
Я Вам говорю исходя из собственного опыта
Заберу, пожалуй, в цитатник. Потом, как-нибудь верну обратно.
2. SlavaKron 29.03.23 17:52 Сейчас в теме
ГДЕ Реквизит = Неопределено
3. user_2010 891 29.03.23 18:26 Сейчас в теме
(2) Спасибо!
Там - пустое значение, например Документы.Отпуск.ПустоеЗначение.
Но не перебирать же все возможные виды документов?
4. spacecraft 29.03.23 18:46 Сейчас в теме
(3)
Но не перебирать же все возможные виды документов?

Вот именно для этого пустым значением у составного типа является Неопределенно. Документы.Отпуск.ПустоеЗначение у составного типа это уже заполненное значение (возможно предопределенным) значением документа Отпуск.
5. user_2010 891 29.03.23 19:29 Сейчас в теме
(4) Как проверить на ПустоеЗначение у составного реквизита?
7. spacecraft 29.03.23 20:20 Сейчас в теме
(5) для начала определите что такое ПустоеЗначение. Такого типа нет в 1С.
user1880116; user1826630; +2 Ответить
64. user_2010 891 30.03.23 08:37 Сейчас в теме
(7) Извиняюсь... заработалась... ошиблась: не ПустоеЗначение, а ПустаяСсылка
8. Dr.HiHi 3 29.03.23 20:25 Сейчас в теме
(3) а почему там пустое документе, а не неопределено??
возможно стоит при записи правильно передавать данные или при записи в регистр корректировать записи??
чтобы потом проверять на Неопределено, а не выдумывать что-то
9. SlavaKron 29.03.23 21:00 Сейчас в теме
(3) Если задача найти в том числе и пустые ссылки, то в принципе можно заставить платформу перебрать все возможные виды документов. Тогда условие будет такое:
ГДЕ Реквизит.Ссылка ЕСТЬ NULL
Но такой финт будет дорого стоить – в запросе будет неявная связь со всеми таблицами ссылочного типа.
11. Asya.Ozerova 41 29.03.23 21:16 Сейчас в теме
(9)Вы не правы, будет проверяться конкретный объект
12. Asya.Ozerova 41 29.03.23 21:17 Сейчас в теме
(11)Но это в том случае когда сам Запрос будет составлен грамотно, я об этом сказала еще в (6)
15. user1880116 29.03.23 21:35 Сейчас в теме
(12)
я об этом сказала еще в (6)


На своем опыте знаю, когда вторым сообщением я отвечаю на вопрос участника и можно закрывать тему, она остается еще активной два-три дня и еще умудряется подняться в топик!
(С) Asya.Ozerova
http://forum.infostart.ru/forum17/topic290663/message2908973/#message2908973

Хе-хе. Хе-хе-хе.
18. Asya.Ozerova 41 29.03.23 22:00 Сейчас в теме
(15)

Хе-хе. Хе-хе-хе.

Ну да...
28. user856012 13 29.03.23 22:21 Сейчас в теме
(15)
Хе-хе. Хе-хе-хе.
"Слушайте, я не узнаю вас в гриме... Кто вы такой?"

Да нет, показалось - просто совпадение, наверное...

Но, как говорится: "Броня крепка и танки наши толсты быстры!"
67. user1880116 30.03.23 09:19 Сейчас в теме
(28) Да, но нет.

"Гешефтный труд и труд кибуцных пашен
Мы защитим, страну свою храня,
Мы палестинцев нафиг разъебашим
И быстротой, и натиском огня."

=)
73. user856012 13 30.03.23 11:12 Сейчас в теме
(67)
Да, но нет.
А где "таки"? Должна быть как минимум одна штука, а то и таки две!
16. Sashares 34 29.03.23 21:49 Сейчас в теме
(12)
я об этом сказала еще в (6)

Серьезно? Что вы сказали в 6?
6. Asya.Ozerova 38 29.03.23 19:46
(1)

ЕСТЬ NULL



То есть остальной ответ вы оставили у себя в голове?
19. Asya.Ozerova 41 29.03.23 22:01 Сейчас в теме
(16)для проерки реквизита этого достаточно вполне
20. Sashares 34 29.03.23 22:04 Сейчас в теме
21. Asya.Ozerova 41 29.03.23 22:06 Сейчас в теме
(20)ВЫБОР
КОГДА Реквизит ЕСТЬ NULL ТОГДА
Бла...Бла...Бла
КОНЕЦ

Так это работает!
22. Sashares 34 29.03.23 22:07 Сейчас в теме
(21)Если значению составного типа не был присвоен тип, то будет Неопределено. Но также может быть и пустая ссылка на любой из составляющих типов.
С чего вдруг будет Null то?
60. user_2010 891 30.03.23 07:21 Сейчас в теме
(22) Именно так и есть. Есть записи с Неопределено и есть записи со ссылками на пустой документ какой-нибудь из допустимых.
Неопределено - проверяется. А как пустую ссылку на документ проверить?
69. Sashares 34 30.03.23 09:42 Сейчас в теме
(60)Можно до запроса сформировать массив с пустыми ссылками, которые есть составе типа реквизита, и Неопределено.
Выбор 
Когда Реквизит В (&МассивПустыхЗначений) Тогда Истина
Иначе Ложь
Конец
72. user_2010 891 30.03.23 10:22 Сейчас в теме
14. user1826630 29.03.23 21:24 Сейчас в теме
(11) ДА ЛАДНО? Какая таблица из составного типа будет проверяться?
17. Sashares 34 29.03.23 21:49 Сейчас в теме
(14)А что, оно само не разберется?=))
29. user1826630 29.03.23 22:35 Сейчас в теме
(17) На NULL - конечно не разберется. Null бывает только в правых таблицах.
23. Asya.Ozerova 41 29.03.23 22:07 Сейчас в теме
(20)
ВЫБОР
КОГДА Реквизит ЕСТЬ NULL ТОГДА
Бла...Бла...Бла
КОНЕЦ


Так это работает!
30. user1826630 29.03.23 22:36 Сейчас в теме
(23) Не надо врать. Это работает только в правых таблицах
61. user_2010 891 30.03.23 07:22 Сейчас в теме
(23) В данном случае это не работает.
27. vadim1011985 99 29.03.23 22:17 Сейчас в теме
А если сначала проверить на неопределенно если тип не выбран , а если тип выбран проверить по УникальномуИдентификатору

Типа такого

ВЫБОР
 КОГДА  КОГДА Реквизит <> Неопределено ТОГДА 
  
ВЫБОР 
 КОГДА УникальныйИдетификатор(Реквизит) = &ПустойИдетификатор ТОГДА
 "Не заполнено"
ИНАЧЕ
"Заполнено"
КОНЕЦ 
ИНАЧЕ
"Не заполнено"
КОНЕЦ 

ПустойИдентификатор  = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
Запрос.УстановитьПараметр("ПустойИдетификатор ",ПустойИдентификатор  )
Показать
SlavaKron; user_2010; +2 Ответить
31. user1826630 29.03.23 22:37 Сейчас в теме
(27) А если он не "Неопределено"?
32. Asya.Ozerova 41 29.03.23 23:14 Сейчас в теме
(31)все равно сработает, данных нет
33. user1826630 29.03.23 23:17 Сейчас в теме
(32) Продолжайте, не останавливайтесь!
35. Asya.Ozerova 41 29.03.23 23:17 Сейчас в теме
41. user1826630 29.03.23 23:35 Сейчас в теме
(35) А если он все таки NULL? Никто же не привел текст запроса. Этот составной тип используется в левой таблице или в правой (в случае соединения)?
46. vadim1011985 99 29.03.23 23:40 Сейчас в теме
(41) Ну если Вам так хочется с null

ВЫБОР
КОГДА isNull(Реквизит, &ПустойИдентификатор)= НЕОПРЕДЕЛЕНО
ТОГДА "Неопределено"
КОГДА УНИКАЛЬНЫЙИДЕНТИФИКАТОР(isNull(Реквизит, &ПустойИдентификатор)) = &ПустойИдентификатор
ТОГДА "Пустая ссылка"
ИНАЧЕ "Заполнено"
КОНЕЦ КАК ТипЗаполнения
49. user1826630 29.03.23 23:43 Сейчас в теме
(46) О!, Кто-то начал думать...
УНИКАЛЬНЫЙИДЕНТИФИКАТОР(isNull(Реквизит, &ПустойИдентификатор)) = &ПустойИдентификатор

Я ж написал - в текущих типовых не прокатит. В самописных - юзайте нафиг.
52. vadim1011985 99 29.03.23 23:56 Сейчас в теме
(49) только что проверил на типовой БП (3.0.129.13) все работает

isNull нужно только если будут соединения при условии что поле составного типа в правой таблице ( при левом соединении)

Без соединений проверка на null y не нужна
62. user_2010 891 30.03.23 07:23 Сейчас в теме
(41) Это просто записи регистра накопления анализируются.
37. SlavaKron 29.03.23 23:21 Сейчас в теме
(27) Если версия платформы позволяет, то вариант рабочий. Такой запрос не делает соединения со всеми таблицами типа:
	ВЫБОР
		КОГДА Реквизит = НЕОПРЕДЕЛЕНО
			ТОГДА "Неопределено"
		КОГДА УНИКАЛЬНЫЙИДЕНТИФИКАТОР(Реквизит) = &ПустойИдентификатор
			ТОГДА "Пустая ссылка"
		ИНАЧЕ "Заполнено"
	КОНЕЦ КАК ТипЗаполнения
twiny; fatman78; user1880116; user_2010; Sashares; vadim1011985; +6 Ответить
38. Asya.Ozerova 41 29.03.23 23:26 Сейчас в теме
(37)Вопрос то был в СКД, но мы рады
40. vadim1011985 99 29.03.23 23:27 Сейчас в теме
(38) хммм а в чем разница ? и в СКД будет работать
39. vadim1011985 99 29.03.23 23:26 Сейчас в теме
(37) Да , я уже свой вариант проверил . У вас более компактная запись
42. user1826630 29.03.23 23:36 Сейчас в теме
(37) Только в самописных конфигурациях, да.
43. vadim1011985 99 29.03.23 23:37 Сейчас в теме
45. user1826630 29.03.23 23:39 Сейчас в теме
(43) Потому что в типовых конфигурациях есть такое понятие как "Режим совместимости". Ознакомьтесь на досуге.
51. SlavaKron 29.03.23 23:53 Сейчас в теме
(45)Могу ошибаться, но вроде бы эта штука не зависит от версии совместимости – только от платформы.
53. user1826630 29.03.23 23:57 Сейчас в теме
(51) Нет, в типовых конфигах можно использовать только те возможности (включая встроенный язык 1С и язык запросов 1С), которые соответствуют установленному режиму совместимости конкретной конфигурации.

Думаю, профи должны это знать "как два пальца об асфальт".
forcezone@mail.ru; +1 Ответить
56. SlavaKron 30.03.23 00:07 Сейчас в теме
(53) Такие вещи, которые в ядре платформы, обычно не зависят от версии совместимости. Тот же IE в поле html никто не будет поддерживать только ради обратной совместимости.
59. user1826630 30.03.23 00:58 Сейчас в теме
(56) Ну вот в конструкторе запросов я вижу про УникальныйИдентификатор (БСП 3.1.4).
Как он будет работать в типовых - не уверен.
Пока верю тебе на слово ))
63. user_2010 891 30.03.23 08:34 Сейчас в теме
(37)
&ПустойИдентификатор

Что нужно указать в качестве &ПустойИдентификатор?
65. vadim1011985 99 30.03.23 08:51 Сейчас в теме
66. user_2010 891 30.03.23 09:08 Сейчас в теме
34. Asya.Ozerova 41 29.03.23 23:17 Сейчас в теме
36. Asya.Ozerova 41 29.03.23 23:18 Сейчас в теме
За то что я говорю, я могу сделать, а Вы!?
70. демиденкоНаталияФедоровна 23 30.03.23 09:45 Сейчас в теме
ЗначениеЗаполнено =Ложь
71. vadim1011985 99 30.03.23 09:54 Сейчас в теме
(70) в запросе , а не в коде
user_2010; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот