Имя: Пароль:
1C
 
ОТбор по более чем одному реквизиту
0 Eugenewolf
 
28.09.05
13:05
Можно ли в форме списка справочника каким-то образом сделать отбор по более чем одному реквизиту одновременно?
1 Широкий
 
28.09.05
13:06
Вроде нет
2 Танюха
 
28.09.05
13:06
может также как в журнале?
3 isabel
 
28.09.05
13:10
доп. реквизит должен быть - типа ключ
кот. уникально задает строки с нужным отбором по более чем одному реквизиту одновременно. по ключу и делаешь отбор (не забудь про галочку в св-вах реквизита)
4 isabel
 
28.09.05
13:12
если отбор по двум реквизитам, то можно один сделать родителем. Тогда отбираешь по родителю и устанав. стандартный отбор по реквизиту.
5 child
 
28.09.05
13:12
(0) Можно. Только для этого необходимо использовать дополнительно поле, в котором будет указан составной ключ по твоим двум параметрам. А сам отбор строй уже по этому ключу.
(2) А в журнале докумнтов разве есть стандартный отбор по двум элементам?
6 Eugenewolf
 
28.09.05
13:15
Я имею в виду когда в программе пишется функция УстановитьОТбор() для формы - там же только один реквизит задается?
7 Танюха
 
28.09.05
13:15
(5) не стандартный есть, тоже по составному ключу.
8 Eugenewolf
 
28.09.05
13:16
А как же его сделать, составной ключ-то?
Реквизиты я есс-но задал, отбор по одному идет, а вот составной ключ в 1с-ке? как?
9 isabel
 
28.09.05
13:18
(7)Пожалуйста, поподробнее, в двух словах. Обязательное условие, что значение отбора у двух рекв. разное.
10 Eugenewolf
 
28.09.05
13:20
Имеют место быть N реквизитов, для отбора. КОгда оператор открывает окно подбора, он должен иметь возможность сделать отбор например по одному реквизиту - скажем, серия, или одновременно выбрать СЕрия, автор, Издательство
11 isabel
 
28.09.05
13:20
(8)Используй ЗначениеВСтрокуВнутр() и РазделительСтрок.
12 child
 
28.09.05
13:21
(6) И что. пусть и один, но кто сказал что этого мало? смотри что сделай:
1. добавь новый  реквизит в справочник, наприме "КлючДляОтбора"  (тип "Строка 255"),
2. При записи элемента вставь процедуру
  КлючДляПодбора = СокрЛП(Реквизит1) + СокрЛП(Реквизит2);
3. Перед использованием функции установить отбор найди ключ, например:
  Ключ = СокрЛП(ВыбРеквизит1) + СокрЛП(ВыбРеквизит2);
4. Установи отбор по значению ключа, например:
  УстановитьОтбор("КлючДляОтбора",Ключ);

По аналогии можешь сделать отбор по 3,4 и т.д. реквизитам.
13 Eugenewolf
 
28.09.05
13:23
Боюсь, вариант с созданием дополнительного поля не пройдет - таблица номенклатуры слишком здоровая, я с трудом там реквизиты проиндексировал... Пришлось методику применять, которую тут же на форуме и нашел
14 isabel
 
28.09.05
13:24
(12)Пускай сам думает, наше дело чуть-чуть подтолкнуть md нужном направлении
15 Eugenewolf
 
28.09.05
13:25
А как можно использовать ЗначениеВСТрокуВнутр() ?
16 isabel
 
28.09.05
13:26
(13)плиз, ссылочку
17 Eugenewolf
 
28.09.05
13:27
ЧТо?
18 isabel
 
28.09.05
13:28
(15)так как писал  child, только вместо СокрЛП(ВыбРеквизит1) -> ЗначениеВСТрокуВнутр(ВыбРеквизит1)
19 isabel
 
28.09.05
13:28
(17) "Пришлось методику применять, которую тут же на форуме и нашел"

где?
20 Eugenewolf
 
28.09.05
13:31
Значит, по поводу создания реквизитов - таблица номенклатуры довольно здоровая, порядка 52000 наименований. Я добавил реквизиты, и, есс-но, начал проставлять галочки отбора/сортировки. В общем, закончилось все тем, что индекс у меня распух до 2 гигов, после чего реорганизация метаданных грохнулась.
21 OFF
 
28.09.05
13:32
Нормальное явление, ограничение на размер файла в два гектара
22 isabel
 
28.09.05
13:34
отбирай запросом и используй ИспользоватьСписокЭлементов().

Вообще для чего отбтраем?
23 Eugenewolf
 
28.09.05
13:35
ВОТ! А делать-то что-то надо было? Сократить базу оперативно не получилось, потому что нужно было быстро загонять остатки и вообще суетиться :) В первую очередь меня удивило, что индекс так пухнет - казалось бы, с чего - поля по 20- 35 байт, их всего 5 или 6.
24 Eugenewolf
 
28.09.05
13:35
ОТбирать запросом и выводить в Таблицу значений?
25 child
 
28.09.05
13:43
(23) Учти колличество записей и полнотекстовые индесы 1С - вот тебе и размер. Загони базу на сиквел сначала.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший