Имя: Пароль:
1C
1C 7.7
v7: Отбор в справочнике
0 kupec
 
31.01.13
16:52
У элемента справочника есть три реквизита, которые либо 1 либо 0, можно ли установить отбор следующим образом, а именно: показать все элементы у которых первый реквизит = 1, показать те элементы у которых реквизит первый равен 1 и реквизит третий равен 1, показать те элементы у которых второй и третий реквизиты равны 0...ну и все возможные варианты ))))  ????
1 Ёпрст
 
31.01.13
16:55
Разрешаю.
Штатно - составной реквизит
Не штатно - как угодно и так.
2 PALESIA
 
31.01.13
16:55
(0) либо все сочетания в отдельные поля: 6 - это не так уж много)
либо запросом и потом юзать ИспользоватьСписокЭлементов()
3 xantimans
 
31.01.13
16:57
использоватьсписокэлемнтов()
4 kupec
 
31.01.13
16:58
(3) справочник порядка 70000 позиций! Тормозить не будет???
(1) что значит составной реквизит?
5 Builder
 
31.01.13
17:06
(4) На SQL не будет, даже без прямых запросов. На DBF обязательно будет.
6 Builder
 
31.01.13
17:08
(4) Составной реквизит - ну например еще один справочник со всеми возможными вариантами флажков и по этому справочнику делать отбор, а не по твоим реквизитам.
7 Builder
 
31.01.13
17:10
(4) Если элементов всего 3 и у каждого 2 значения, получается 9 вариантов. Соответственно хватит числа 1-9.
8 miki
 
31.01.13
17:20
(7)для трёх бит достаточно 8 цифр. От 0-7 перекроет всё.
9 Mikeware
 
31.01.13
17:23
(7) 2 в третью степень возвести - уже проблемно? :-)
иэх...
"куда катится мир"©
10 фобка
 
31.01.13
17:31
прямой запрос самое простое решение.. составной реквизит - это просто новый реквизит того же справочника тип строка длина 3, который заполняется при записи элементов (типа "101", "110")..
11 Builder
 
31.01.13
17:34
(9) Ну да, попутал, возвел 3 во вторую, стареем....
(10) 1 число проще записать чем строку.
12 PALESIA
 
31.01.13
17:37
Народ, а как на счет математического решения за счет одного реквизита: (1-ый)*3^0 + (2-ой)*3^1 + (3-ий)*3^2 ? )))
13 Mikeware
 
31.01.13
17:39
(12)

- Мальчик, как тебя зовут?
- Здрррасте!
- Ты че тормоз?
- Вася!
- Ладно, Вася, скока те лет?
- Сам ты тормоз!
©
14 фобка
 
31.01.13
17:39
(12) можно одним реквизитом (число, длина 1) без подчиненного справочника - сложнее анализировать при написании.. и в отладке
15 Mikeware
 
31.01.13
17:40
(14) И чего тут сложного?
16 miki
 
31.01.13
17:41
(14)твоя строка из (10) то же самое число, но в двоичном виде...
17 фобка
 
31.01.13
17:42
(15) например, сходу сказать какое положение переключателей для числа 5
18 miki
 
31.01.13
17:43
(17)=ToBinary(5);
19 Builder
 
31.01.13
17:43
(17) Сходу будет написано на форме галочками. А отбор будет по реквизиту.
20 фобка
 
31.01.13
17:44
(18) не помню такого метода
21 miki
 
31.01.13
17:46
22 Mikeware
 
31.01.13
17:48
(17)блин, это на автомате...
у меня даже сын 13летний, задумавшись, ответит...
23 фобка
 
31.01.13
17:50
(22) старая школа..
(21) ну тогда +, это самый быстрый штатный способ
24 kupec
 
01.02.13
10:02
вот конкретный пример:
Есть элемент 1 со значением реквизитов:
первый реквизит = 1
второй реквизит = 0
третий реквизит = 0
Есть элемент 2 со значением реквизитов:
первый реквизит = 0
второй реквизит = 1
третий реквизит = 0

При установке отбора должны быть следующие возможности:
1) показать те элементы у которых первый реквизит =1;
2) показать те элементы у которых второй реквизит =1;
3) показать те элементы у которых либо первый реквизит =1 либо второй реквизит =1;
25 miki
 
01.02.13
10:36
(24)это три разных условия или одновременных?
26 kupec
 
01.02.13
10:41
(25) естественно разных! просто как варианты различных условий!
27 Mikeware
 
01.02.13
10:43
(26) И в чем сложность?
28 Mikeware
 
01.02.13
10:44
пардон, понял, в чем...
:-(
долбаный  чернобыль....
29 kupec
 
01.02.13
10:44
(27) буду рад оказаться глупым в том , что не могу решить такую простую задачу, если конечно ты мне в этом поможешь ))) использоватьсписокэлементов() не предлагать!!!
30 Ёпрст
 
01.02.13
10:45
(29) прочитай ветку с начала, тут есть все ответы.
31 kupec
 
01.02.13
10:53
(30) прочитал и не нашел (а скорее всего не понял), может ткнешь пальцем?
32 Ёпрст
 
01.02.13
10:58
втыкаешь составной реквизит, хоть строку, хоть число, втыкаешь галку отбор ему, при записи справочника в этот реквизит пишешь значения из трех твоих реквизитов.
Усё.. потом отбор по этому реквизиту.
33 kupec
 
01.02.13
10:59
(33) спасибо, буду пробовать
34 Ёпрст
 
01.02.13
10:59
Если религия позволяет, всё в топку, тп на форму, поставщиком прямой запрос, там какой угодно отбор.
Ежели скуль, то можно вкхук от ромикса , там переопределять запрос и делать отбор
35 kupec
 
01.02.13
11:02
если справочник порядка 70000 элементов, запросы не затормозят отбор?
36 kupec
 
01.02.13
11:03
база SQL
37 Ёпрст
 
01.02.13
11:03
(35) прямой ? нет
38 Ёпрст
 
01.02.13
11:04
39 kupec
 
01.02.13
11:07
Спасибо
40 kupec
 
01.02.13
11:13
(38) решил пока остановиться на составном реквизите, но пока не знаю даже с чего начать, не могу подогнать его (значение реквизита) под мои условия
41 Ёпрст
 
01.02.13
11:16
если совсем туго с логикой, то тип строка, длина 3..
все значения

1. "000"
2. "001"
3. "010"
4. "011"
5. "100"
6. "101"
7. "110"
8. "111"
42 Ёпрст
 
01.02.13
11:17
ну или число, длина 1
43 kupec
 
01.02.13
11:17
это я понял (и единственное что записал ))) ) а как установить отбор и какое значение отбора чтобы туда попали значения 001 и 010 ??
44 Mikeware
 
01.02.13
11:20
(43)Для числового - реквизит & 0b011 >0
45 kupec
 
01.02.13
11:27
Насколько мне известно там ставится конкретное значение отбора а не условие !!!
46 Dolly_EV
 
01.02.13
13:49
Угу, вот это " показать те элементы у которых либо первый реквизит =1 либо второй реквизит =1;" все обламывает всмысле штатности. Так что только прямой запрос остается
47 kupec
 
01.02.13
13:50
(46) из твоего ответа я уверен на 100% что ты меня понял в отличии от других )))
48 Dolly_EV
 
01.02.13
13:51
(47) Но тебе от этого не легче - придется познавать прямые запросы :-))
49 kupec
 
01.02.13
13:53
(48) да я с ними знаком заочно, буду знакомиться ближе )))
50 Dolly_EV
 
01.02.13
13:53
(47) можно конечно все сочетания по "ИЛИ" добавить, но тогда составной реквизит распухнет и будет мешать ходить :-))
51 Ёпрст
 
01.02.13
13:56
(47) очень хорошо.
Как ты будешь при этом задавать условия для отбора ?
к примеру, твои реквизиты - 3 флажка.
Как ты задашь "или" между ними  на форме?
52 miki
 
01.02.13
13:57
(47)Для варианта "показать те элементы у которых либо первый реквизит =1 либо второй реквизит =1"
надо выводить реквизиты, у которых _и_ первый=1 _и_ второй =1?
53 miki
 
01.02.13
13:57
*выводить элементы
54 Ёпрст
 
01.02.13
13:58
И если че, ответ на (43) - установить отбор по первому полю в 0 (для этого, все эти поля надо тоже с отбором сделать)
55 miki
 
01.02.13
14:03
(43)
wiki:%C4%E8%E7%FA%FE%ED%EA%F6%E8%FF

в реквизит для отбора надо будет записать
0b001 V 0b010 = 0b011 => 3.
56 miki
 
01.02.13
14:06
Ссылка криво встала.
Дизъюнкция:
wiki:%C4%E8%E7%FA%FE%ED%EA%F6%E8%FF
57 Dolly_EV
 
01.02.13
14:12
(51) Три поля с заданием условия для каждого реквизита (=,<>,>,<) и два поля с заданием "И" или "ИЛИ" между 1,2,3 полями условий для реквизитов
и все это в том же виде упихать в ПЗ
58 Ёпрст
 
01.02.13
14:14
(57) ну и пример приведи, для (43)
59 kupec
 
01.02.13
14:14
(52) да
60 Ёпрст
 
01.02.13
14:15
я свой ответ в (54) привёл.
61 miki
 
01.02.13
14:19
(54)тогда попадут и "000"...
Если я правильно понял идею...
62 Ёпрст
 
01.02.13
14:21
(61) ага,запишем как артефакт :)
63 kupec
 
01.02.13
14:23
а отбор то как наладить?? :-)))
64 Ёпрст
 
01.02.13
14:25
(63) че ?
65 1Сергей
 
01.02.13
14:26
Реквизиты: А, Б, В
Ключи: АБ, АВ, БВ, АБВ
66 kupec
 
01.02.13
14:37
(65) не катит, см (43)
67 Dolly_EV
 
01.02.13
14:41
(58) для прямого запроса?
ГДЕ (Р1=0 И Р2=0 И Р3=1) ИЛИ (Р1=0 И Р2=1 И Р3=0)
68 1Сергей
 
01.02.13
14:41
(66) ставишь отбор А = 0. Всё
69 Dolly_EV
 
01.02.13
14:44
+(67) а отбор - через ИспользоватьСписокЭлемнтов() (и оно не тормозит, проверено)
70 kupec
 
01.02.13
14:46
(68) если а =0 тогда не попадает 110
71 1Сергей
 
01.02.13
14:48
(70) где в (43) про 110?
я так понял тебе нужно 0хх
72 Ёпрст
 
01.02.13
14:51
(67) нет. Как ЭТО будет на форме задаваться.
73 1Сергей
 
01.02.13
14:55
(72) проще выпадающими списками, имхо

типа
Отбор А:
        Истина
        Ложь
        Любой

Отбор Б:
        Истина
        Ложь
        Любой

Отбор В:
        Истина
        Ложь
        Любой
74 Dolly_EV
 
01.02.13
15:03
(72) -> (57)
Как-то так:
http://s1.ipicture.ru/uploads/20130201/Sa48VR06.jpg
75 Dolly_EV
 
01.02.13
15:04
+(74) там где "И", есть еще "ИЛИ"
76 Ёпрст
 
01.02.13
15:06
ага, а чего там на счет "всё это в тз" ?
:)))
не.. всё это не нужно и тем более аутору.
77 kupec
 
01.02.13
15:12
а можно без прямых запросов???
78 Dolly_EV
 
01.02.13
15:13
(77) если "ИЛИ" - то неможно
79 Ёпрст
 
01.02.13
15:13
можно
80 kupec
 
01.02.13
15:14
подскажиет куда копать, я так и не понял
81 Dolly_EV
 
01.02.13
15:14
(76) не тз а ПЗ
82 kupec
 
01.02.13
15:18
(81) что такое ПЗ
83 Dolly_EV
 
01.02.13
15:18
(82) ПрямойЗапрос
84 kupec
 
01.02.13
15:19
я уже начинаю думать в сторону прямого запроса....но как понимаю на DBF не прокатит, может есть еще варианты по по поводу штатного запроса
85 Ёпрст
 
01.02.13
15:58
(84) чейто?
86 Ёпрст
 
01.02.13
15:58
прямой запрос прекрасно на дбф живёт, причем разными методами можно делать его
87 kupec
 
01.02.13
16:00
а можно примерчик, хоть простенький????
значит как я понимаю прямой запрос работает без всяких внешних компонент?
88 Ёпрст
 
01.02.13
16:04
(87) неправильно понимаешь
89 kupec
 
01.02.13
16:09
тогда действительно не понимаю. как прямой запрос работает на DBF если прямым запросом идет обращение к SQL серверу?
90 Ёпрст
 
01.02.13
16:10
с помощью компонеты 1cpp или 1sqlite и запрос будет к дбф файлам
91 kupec
 
01.02.13
16:12
т.е. я делаю прямой запрос, на выходе получаю таблицу значений,выгружаю ее (колонку с элементами) в список значений и делаю использоватьсписокэлементов() ???
92 Ёпрст
 
01.02.13
16:18
нет
93 Ёпрст
 
01.02.13
16:18
Ты кидаешь табличное поле на форму и поставщиком для него будет прямой запрос
94 kupec
 
01.02.13
16:26
не катит!!!!
95 Ёпрст
 
01.02.13
16:31
(94) чем ?
96 kupec
 
01.02.13
16:34
как иерархию организовать?
97 Ёпрст
 
01.02.13
16:36
кинуть рядом дерево стабличным полем
98 Ёпрст
 
01.02.13
16:36
для пользователя будет всё тоже самое.
99 kupec
 
01.02.13
16:41
переход на уровень вниз на уровень вверх выделением папки в дереве слева?
100 Ёпрст
 
01.02.13
16:43
(99) и это тоже
101 kupec
 
01.02.13
16:55
а с помощью ctrl + вверх ?
102 Ёпрст
 
01.02.13
17:09
как захошешь, так и будет
103 фобка
 
01.02.13
21:10
(91) да
104 фобка
 
01.02.13
21:10
(93) необязательно