|
v7: Есть большой справочник, как можно быстро выбрать группу? |
☑ |
0
sysadminlk
07.04.15
✎
11:35
|
Процедура ВыборатьГруппу()
Группы = СоздатьОбъект("СписокЗначений");
Спр = СоздатьОбъект("Справочник.Контрагенты");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
Если Спр.ЭтоГруппа() = 1 Тогда
Группы.ДобавитьЗначение(Спр.ТекущийЭлемент());
КонецЕсли;
КонецЦикла;
Группы.ВыбратьЗначение(Контрагент,"Выбор группы");
КонецПроцедуры // ВыборатьГруппу
Вот получается оч.долго
|
|
1
Lazy Stranger
07.04.15
✎
11:38
|
запросом, скорее всего, быстрее будет
|
|
2
бомболюк
07.04.15
✎
11:39
|
запросом только непустые группы (с элементами) выбрать можно.
|
|
3
palpetrovich
07.04.15
✎
11:39
|
(1) разве что прямым :)
|
|
4
sysadminlk
07.04.15
✎
11:40
|
(3) Это как? я запросы не понимаю
|
|
5
бомболюк
07.04.15
✎
11:42
|
тут надо делать через рекурсию, ПолучитьЭлемент(0), и как натыкаешься на элемент (не группу) - прерывать обход.
|
|
6
sysadminlk
07.04.15
✎
11:50
|
Пока сделал так
Процедура ВыборатьГруппу()
Группы = СоздатьОбъект("СписокЗначений");
Спр = СоздатьОбъект("Справочник.Контрагенты");
Группы.ДобавитьЗначение("00000002","Основные поставщики");
Группы.ДобавитьЗначение("00014805","Поставщики");
Группы.ДобавитьЗначение("00000003","Физические лица");
Группы.ДобавитьЗначение("00000909","Организации");
Группы.ДобавитьЗначение("00006218","Cотрудники");
Группы.ДобавитьЗначение("00025043","Рабы");
Группы.ДобавитьЗначение("00000911","Служебные");
КодГруппы = "";
Группы.ВыбратьЗначение(КодГруппы,"Выбор группы");
Если Спр.НайтиПоКоду(КодГруппы) = 1 Тогда
Контрагент = Спр.ТекущийЭлемент()
КонецЕсли;
КонецПроцедуры // ВыборатьГруппу
|
|
7
бомболюк
07.04.15
✎
11:52
|
Группы.ДобавитьЗначение("00025043","Рабы");
ты с Украины?
|
|
8
Масянька
07.04.15
✎
11:53
|
(6) Попробуй - ВыборГруппы
|
|
9
sysadminlk
07.04.15
✎
12:13
|
(7) нет, это у нас так заведены сотрудники которые должны
|
|