Имя: Пароль:
1C
 
Поле составного типа в запросе
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
Понятие "пустых" значений
https://its.1c.ru/db/metod8dev/content/2614/hdoc
(10) учите матчасть
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) Очень плохая идея, порождает кучу соединений
Ошибка? Это не ошибка, это системная функция.