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

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

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

Спасибо!
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
6. Asya.Ozerova 40 29.03.23 19:46 Сейчас в теме
13. user1826630 29.03.23 21:23 Сейчас в теме
(6) Давно ли Неопределено стало = NULL?
10. karamazoff 95 29.03.23 21:03 Сейчас в теме
(1)друг ! у тебя такой рейтинг и ты задаешь такие вопросы?
24. Asya.Ozerova 40 29.03.23 22:11 Сейчас в теме
(22)
Нужно в запросе как-то проверить на пустое значение
25. Asya.Ozerova 40 29.03.23 22:11 Сейчас в теме
26. Sashares 34 29.03.23 22:15 Сейчас в теме
(25)Я в курсе.
Вам несколько человек говорят, что то что вы предлагаете - в таком виде работать не будет.
Вы можете проверить сами.
Это может сработать, если проверять на null реквизит Реквизита. Но не сам реквизит.
Но в этом случае будет соединение со всеми таблицами этого составного реквизита.
МимохожийОднако; user1826630; +2 Ответить
44. Asya.Ozerova 40 29.03.23 23:38 Сейчас в теме
(26)Я Вам говорю исходя из собственного опыта
47. Sashares 34 29.03.23 23:40 Сейчас в теме
(44) Даже не знаю что на это ответить. Ну только то что ваш опыт вам врет. Учите матчасть.
48. Asya.Ozerova 40 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 871 29.03.23 18:26 Сейчас в теме
(2) Спасибо!
Там - пустое значение, например Документы.Отпуск.ПустоеЗначение.
Но не перебирать же все возможные виды документов?
4. spacecraft 29.03.23 18:46 Сейчас в теме
(3)
Но не перебирать же все возможные виды документов?

Вот именно для этого пустым значением у составного типа является Неопределенно. Документы.Отпуск.ПустоеЗначение у составного типа это уже заполненное значение (возможно предопределенным) значением документа Отпуск.
5. user_2010 871 29.03.23 19:29 Сейчас в теме
(4) Как проверить на ПустоеЗначение у составного реквизита?
7. spacecraft 29.03.23 20:20 Сейчас в теме
(5) для начала определите что такое ПустоеЗначение. Такого типа нет в 1С.
user1880116; user1826630; +2 Ответить
64. user_2010 871 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 40 29.03.23 21:16 Сейчас в теме
(9)Вы не правы, будет проверяться конкретный объект
12. Asya.Ozerova 40 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 40 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 40 29.03.23 22:01 Сейчас в теме
(16)для проерки реквизита этого достаточно вполне
20. Sashares 34 29.03.23 22:04 Сейчас в теме
21. Asya.Ozerova 40 29.03.23 22:06 Сейчас в теме
(20)ВЫБОР
КОГДА Реквизит ЕСТЬ NULL ТОГДА
Бла...Бла...Бла
КОНЕЦ

Так это работает!
22. Sashares 34 29.03.23 22:07 Сейчас в теме
(21)Если значению составного типа не был присвоен тип, то будет Неопределено. Но также может быть и пустая ссылка на любой из составляющих типов.
С чего вдруг будет Null то?
60. user_2010 871 30.03.23 07:21 Сейчас в теме
(22) Именно так и есть. Есть записи с Неопределено и есть записи со ссылками на пустой документ какой-нибудь из допустимых.
Неопределено - проверяется. А как пустую ссылку на документ проверить?
69. Sashares 34 30.03.23 09:42 Сейчас в теме
(60)Можно до запроса сформировать массив с пустыми ссылками, которые есть составе типа реквизита, и Неопределено.
Выбор 
Когда Реквизит В (&МассивПустыхЗначений) Тогда Истина
Иначе Ложь
Конец
72. user_2010 871 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 40 29.03.23 22:07 Сейчас в теме
(20)
ВЫБОР
КОГДА Реквизит ЕСТЬ NULL ТОГДА
Бла...Бла...Бла
КОНЕЦ


Так это работает!
30. user1826630 29.03.23 22:36 Сейчас в теме
(23) Не надо врать. Это работает только в правых таблицах
61. user_2010 871 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 40 29.03.23 23:14 Сейчас в теме
(31)все равно сработает, данных нет
33. user1826630 29.03.23 23:17 Сейчас в теме
(32) Продолжайте, не останавливайтесь!
35. Asya.Ozerova 40 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 871 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 40 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 871 30.03.23 08:34 Сейчас в теме
(37)
&ПустойИдентификатор

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

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день