Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Структура хранения данных 1С: Реквизит "_folder" работает как НЕ булево. Это нормально?

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

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

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

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

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

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

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

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

2. кто-то натупил
   Aleksey
 
3 - 13.02.20 - 22:38
Ну может он с фузином перепутал?
   Aleksey
 
4 - 13.02.20 - 22:40
ЭтоГруппа() - Этот метод возвращает 1, если текущий элемент справочника является группой, или 0 если группой не является. (с) https://old.mista.ru/tutor_1c/sprav.htm
   bolero
 
5 - 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, а не наоборот
   bolero
 
6 - 13.02.20 - 23:12
(2) пардоньте, надо было вначале написать, что речь про SQL, а не в конце вскользь упомянуть
   Aleksey
 
7 - 13.02.20 - 23:17
(5) CASE WHEN (_Folder = FALSE) THEN TRUE ELSE FALSE END
   bolero
 
8 - 13.02.20 - 23:29
(7) не перебор? SELECT NOT _folder достаточно

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.