|
|
|
Поле составного типа в запросе | ☑ | ||
|---|---|---|---|---|
|
0
gusenica1337
naïve
05.11.25
✎
15:49
|
Есть Регистр сведений и в нем есть поле составного типа. Поле может быть заполнено, а может быть не заполнено.
Задача получить все записи регистра, где поля не заполнены. Вопрос: Какое какое значение параметра надо установить данному полю, чтобы получить нужные записи? |
|||
|
1
formista2000
05.11.25
✎
15:51
|
Неопределено
|
|||
|
2
Волшебник
05.11.25
✎
15:51
|
Неопределено
|
|||
|
3
Garykom
гуру
05.11.25
✎
15:55
|
Эээ тип может быть назначен но значение пустое
|
|||
|
4
unenu
05.11.25
✎
15:56
|
Перфекционисты делают параметр &МассивПустыхЗначенийТипа
и первым элементом туда добавят Неопределено, а затем в цикле пустые значения каждого типа из коллекции состава. |
|||
|
5
Garykom
гуру
05.11.25
✎
15:56
|
(4) Садись 5
|
|||
|
6
Ненавижу 1С
гуру
05.11.25
✎
15:57
|
Начинать шутить про миллион никчемных пустых сущностей вместо единого NULL?
|
|||
|
7
Волшебник
05.11.25
✎
15:58
|
(6) NULL плохое значение для пустой сущности, потому что у него 2 произношения: "нул" и "нал"
|
|||
|
8
dmt
05.11.25
✎
15:59
|
(4) перфекционисты в модуле набора записей регистра, ПередЗаписью, присваивает значение пустого поля в Неопределено
|
|||
|
9
Волшебник
05.11.25
✎
16:00
|
(8) какое из? Неопределено для составного типа является единственным самым пустым значением
|
|||
|
10
Ненавижу 1С
гуру
05.11.25
✎
16:02
|
(7) nəl
|
|||
|
11
formista2000
05.11.25
✎
16:03
|
(10) nil
|
|||
|
12
Волшебник
05.11.25
✎
16:04
|
||||
|
13
Ненавижу 1С
гуру
05.11.25
✎
16:04
|
(9) помнится в УТ 10.х было составное измерение Договор. И там для незаполненных случаев записывалась пустая ссылка Справочник.Договоры. Видимо для совместимости с тех пор, когда это поле не было составным
А вообще это архитектурный баг. Расширяем тип поля на составной и меняется пустое значение - переписываем запросы |
|||
|
14
Ненавижу 1С
гуру
05.11.25
✎
16:05
|
(12) да это все понятно, но архитектура такая архитектура
|
|||
|
15
Волшебник
05.11.25
✎
16:06
|
(13) мы же не храним историю типов, так что это не баг, а фича
|
|||
|
16
Ненавижу 1С
гуру
05.11.25
✎
16:06
|
(15) вы серьезно считаете, что это фича?
|
|||
|
17
Волшебник
05.11.25
✎
16:14
|
(16) Поведение логичное. Ничего лучше в голову не приходит.
|
|||
|
18
dmt
05.11.25
✎
16:16
|
(9) любого
Если НЕ ЗначениеЗаполнено(Запись.ИмяСоставногоПоля) Тогда Запись.ИмяСоставногоПоля = Неопределено |
|||
|
19
Волшебник
05.11.25
✎
16:18
|
(18) ну если информация о типе не нужна, то можно
|
|||
|
20
H A D G E H O G s
05.11.25
✎
18:05
|
МассивПустыхОбособленныхПодразделений=Новый Массив;
Для Каждого ТипРеквизита Из Метаданные.Справочники.АСФЛицензии.Реквизиты.ОбособленноеПодразделение.Тип.Типы() Цикл ПустоеЗначение=Новый(ТипРеквизита); МассивПустыхОбособленныхПодразделений.Добавить(ПустоеЗначение); КонецЦикла; МассивПустыхОбособленныхПодразделений.Добавить(Неопределено); |
|||
|
21
H A D G E H O G s
05.11.25
✎
18:06
|
Кому не лениво - попросите на партнерке в язык запросов добавить ПустоеЗначение. Пусть они вот это (20) делают из коробки.
|
|||
|
22
Garykom
гуру
05.11.25
✎
18:13
|
(21) Не логичней наоборот сделать аналог ЗначениеЗаполнено в запросах?
|
|||
|
23
Волшебник
05.11.25
✎
18:32
|
(22) 👍
|
|||
|
24
d4rkmesa
05.11.25
✎
18:36
|
(0) В (Неопределено, Значение(Справочник.Партнеры.ПустаяСсылка), Значение(Справочник.Контрагенты.ПустаяСсылка), ...)
Конечно, если составное поле не имеет тип ЛюбаяСсылка (ночной кошмар архитектора). |
|||
|
25
aka MIK
05.11.25
✎
18:50
|
(0) Поле.ВерсияДанных is null
|
|||
|
26
Garykom
гуру
05.11.25
✎
19:01
|
(25) Очень плохая идея, порождает кучу соединений
|
|||
|
27
1cVandal
06.11.25
✎
09:59
|
(22) чет представил как это будет выглядеть в профайлере и плохо стало
|
|||
|
28
Garykom
гуру
06.11.25
✎
11:27
|
(27) Если на уровне платформы делать, то нет проблем ссылку проверить на заполненность
Она фактически состоит из двух частей: тип и уид Если уид заполнен, значит значение заполнено, и пофиг, даже если объекта в базе нет ("Объект не найден") |
|||
|
29
Garykom
гуру
06.11.25
✎
10:21
|
(28)+ А вот со всеми прочими простыми типами согласен немного изврат будет
Да еще СУБД-зависимый |
|||
|
30
arsik
гуру
06.11.25
✎
10:39
|
Можно через СКД - условие "не заполнено"
|
|||
|
31
Wern
06.11.25
✎
11:02
|
(28) В запросе есть функция "УНИКАЛЬНЫЙИДЕНТИФИКАТОР(". Возможно можно через нее сделать условие. Не пробовал, но в теории будет как раз проверка на уид.
|
|||
|
32
Garykom
гуру
06.11.25
✎
11:28
|
(31) Думал про такое
Там с ним все плохо. Не уверен, что можно сравнивать |
|||
|
33
TormozIT
гуру
07.11.25
✎
09:17
|
(22) В конструкторе запроса ИР есть такой вид сравнения (ЗначениеЗаполнено) с поддержкой составного типа, но только на выход, т.е. указал его в конструкторе и при нажатии кнопки ОК он тебе его превратил в развернутое условие языка запросов.
|
|||
|
34
Eiffil123
07.11.25
✎
09:50
|
(3) для этого в модуле перед записью очищать поле (принудительно устанавливать Неопределено), если оно не заполнено
|
|||
|
35
Eiffil123
07.11.25
✎
09:52
|
(31) она работает после выполнения запроса. соответственно никаких фильтров внутри запроса по ней сделать невозможно.
|
|||
|
36
Ненавижу 1С
гуру
07.11.25
✎
09:56
|
(34) проблема в том, что при изменении архитектуры (был простой тип, стал составной) мы будем вынуждены во всех запросах условия на сравнение с пустой ссылкой заменить на аналогичное с Неопределено.
|
|||
|
37
Eiffil123
07.11.25
✎
10:33
|
(36) при изменении архитектуры (когда ранее был обычный тип, а стал составной) у вас в любом случае потребуется переписать запросы, иначе в 50% случаев они будут работать неправильно (когда не предполагалось, что там возможно НЕОПРЕДЕЛЕНО).
Так какая разница, код работает в 50% случаев неправильно или в 100% случаев? |
|||
|
38
Ненавижу 1С
гуру
07.11.25
✎
10:38
|
(37) "в любом случае" это очень сильное заявление, требующее подкрепленных доказательств
|
|||
|
39
ДенисСмирнов
naïve
07.11.25
✎
10:54
|
(38) ну а как иначе? изменил тип данных и все, надеяться что нигде не аукнется?
|
|||
|
40
Garykom
гуру
07.11.25
✎
11:04
|
(39) Так это недодумка 1С
Когда для простых ссылочных полей накой-то фиг незаполненное значение вместо "Неопределено" придумали делать "Пустое", конкретного типа В результате перехода на составные поля получается изврат |
|||
|
41
spiller26
07.11.25
✎
11:01
|
NULL - пустота
Неопределено - отсутствие значения |
|||
|
42
Ненавижу 1С
гуру
07.11.25
✎
11:10
|
(41) а еще пустые ссылки, ну да
|
|||
|
43
spiller26
07.11.25
✎
11:15
|
(42) "Пустая ссылка" - отсутствие значения определенного типа
|
|||
|
44
Ненавижу 1С
гуру
07.11.25
✎
11:17
|
(39) вы с интерфейсами знакомы? которые реализуются конкретными классами?
Так вот при добавлении нового класса, который по новому реализует интерфейс не приходится переписывать код, который основан на этом интерфейсе |
|||
|
45
Ненавижу 1С
гуру
07.11.25
✎
11:20
|
(43) только в выборке к справочнику (без всяких соединений) могут быть колонки, содержащие и NULL и Неопределено и разные пустые ссылки
|
|||
|
46
Fragster
гуру
07.11.25
✎
12:29
|
(45) откуда там без соединений null?
|
|||
|
47
Garykom
гуру
07.11.25
✎
12:39
|
(46) Группы или через две точки (хотя это неявное)
|
|||
|
48
Fragster
гуру
07.11.25
✎
12:47
|
(47) с группами да, запамятовал. на автомате ставлю "(Не) ЭтоГруппа" уже много лет
|
|||
|
49
Timon1405
07.11.25
✎
12:49
|
(46) Кроме того, значение типа Null будет иметь, например, реквизит иерархического справочника для элементов-групп, если в метаданных указано, что этот реквизит используется только для элементов не являющихся группами. RTFM!
https://its.1c.ru/db/metod8dev/content/2516/hdoc *ну и в колонке "номер отправленного" в плане обмена тоже нулл без явных соединений может сидеть. |
|||
|
50
Fragster
гуру
07.11.25
✎
12:48
|
а так в РБ только встречал
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |