Имя: Пароль:
1C
1С v8
Структура хранения данных 1С: Реквизит "_folder" работает как НЕ булево. Это нормально?
0 bolero
 
13.02.20
22:32
1. кто-то натупил 100% (1)
2. чтобы запутать врага 0% (0)
3. и так сойдет 0% (0)
4. вы ничего нипанимаити, так и должно быть! 0% (0)
Всего мнений: 1

Все слышали байку о том, что фирма 1С называется так, потому что любой запрос должен быть выполнен не более, чем за 1 с (аха, ахаха, нервный истерический смех в углу, ну да ладно).

Хочу услышать другую байку.

Почему
Проведен FALSE => не проведен
Проведен TRUE => проведен

ПометкаУдаления FALSE => не помечен на удаление
ПометкаУдаления TRUE => помечен на удаление

но:
ЭтоГруппа FALSE => да этот элемент справочника - группа
ЭтоГруппа TRUE => нет, это не группа

Просто интересно, почему я должен постоянно помнить, что ОДИН из реквизитов ведет себя через ж в SQL?
1 Aleksey
 
13.02.20
22:36
ЭтоГруппа FALSE => да этот элемент справочника - группа
ЭтоГруппа TRUE => нет, это не группа

Это откуда?
2 Anton1307
 
13.02.20
22:37
Кто-то натупил, и этот кто-то - автор сего опуса

кто-то натупил
3 Aleksey
 
13.02.20
22:38
Ну может он с фузином перепутал?
4 Aleksey
 
13.02.20
22:40
ЭтоГруппа() - Этот метод возвращает 1, если текущий элемент справочника является группой, или 0 если группой не является. (с) https://old.mista.ru/tutor_1c/sprav.htm
5 bolero
 
13.02.20
23:10
(1) в SQL:

SELECT COUNT(_idrref), _folder FROM _Reference131 GROUP BY 2;
count | _folder
-------+---------
   180 | f
  7780 | t

180 групп, 7780 элементов

_folder - типа boolean, ПолучитьСтруктуруХраненияБазыДанных() транслирует наименование этой колонки в "ЭтоГруппа"
для групп хранится FALSE, для обычных элементов - TRUE, а функция ЭтоГруппа() возвращает наоборот

напоминаю, что обычно FALSE кастуется в 0, а TRUE - в 1, а не наоборот
6 bolero
 
13.02.20
23:12
(2) пардоньте, надо было вначале написать, что речь про SQL, а не в конце вскользь упомянуть
7 Aleksey
 
13.02.20
23:17
(5) CASE WHEN (_Folder = FALSE) THEN TRUE ELSE FALSE END
8 bolero
 
13.02.20
23:29
(7) не перебор? SELECT NOT _folder достаточно

меня больше история возникновения такого решения интересует, чем способы с ним бороться
9 palsergeich
 
13.02.20
23:38
(8) Исторически так сложилось (С)
10 МихаилМ
 
14.02.20
00:01
(8) а в распакованном DT используется utf16 и utf32.
По сравнению с этим Ваша неувязочка - ерунда.
11 Aleksey
 
14.02.20
01:20
(8) Мопед не мой, так сама 1С делает
12 Sserj
 
14.02.20
01:52
(0) Все элементарно и повелось - при сортировки false всегда выше true и запросах группы получаются сверху.
13 Sserj
 
14.02.20
01:54
+(12) И если копаться в истории то повелось еще с 7.7 где isfolder = 1 - Группа, isfolder = 2 - элемент, так же исключительно для сортировки - группы сверху.
14 bolero
 
14.02.20
09:03
(11) пнятно, не удивительно, что потом запросы в 1000 мс не влезают
вот таких "да ладно, чо там" понатыкано тысячами

(12) я считаю, у нас победитель, а разработчикам платформы 20 лет назад надо было показать, как пользоваться словом DESC
15 Сияющий в темноте
 
14.02.20
09:20
(14) в движке Dbf,в котором даже MEMO полей не было.
а сортировка с конца все равно требует ввбрать все значения,так как для индекса всегда указывается сортировка по возрастанию.
16 toypaul
 
гуру
14.02.20
09:41
подмена понятий детектед
17 Волшебник
 
модератор
14.02.20
09:43
(15) Наверное, при переходе на v8 стоило привести в соответствие с логикой, а не тащить это говно мамонта в восьмёрку.
2 + 2 = 3.9999999999999999999999999999999...