Имя: Пароль:
1C
1С v8
СКД. Отбор на форме.
0 Галахад
 
гуру
02.10.12
09:43
Обычное приложение.
Набор данных объект.
Т.е. формирую таблицу, которую и подсовываю СКД.

Хочу организовать отбор по полю "Номенклатура".
Насколько я понял, сначала выполняется заполнение моей таблицы,
а уж потом накладывается условие. Работает естественно медленно.

Вопрос. Как организовать поле отбора на форме?
Что бы можно было выбирать элемент, группу, список
1 Defender aka LINN
 
02.10.12
09:48
"Насколько я понял, сначала выполняется заполнение моей таблицы, а уж потом накладывается условие"
Блеать, вот ОТКУДА вы набираетесь этого говна в моск? ГДЕ это написано?
2 Галахад
 
гуру
02.10.12
09:50
(1) Чо орать-то?

Откуда СКД знает как таблицу заполняю?
3 IronDemon
 
02.10.12
10:08
Отбор для твоей таблицы или СКД?
Если для твоей, то надо себя как-то заставить использовать отбор.
4 Галахад
 
гуру
02.10.12
10:11
(3) Ага. Что-то сложновато получается...
   Отбор = КомпоновщикНастроек.Настройки.Отбор;
   Для каждого ЭлементОтбора Из Отбор.Элементы Цикл
       Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номенклатура") Тогда
           Если ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии Тогда
               
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
А еще может быть равно, в списке, и НЕ...
5 IronDemon
 
02.10.12
10:13
А зачем тебе СКДый отбор для твоей таблицы?
6 Галахад
 
гуру
02.10.12
10:13
Как-то можно получить из СКД, простой список номенклатуры по условию?
7 Галахад
 
гуру
02.10.12
10:14
(5) Ну не обязательно. Просто нужен нормальный отбор на форме.
Что бы и в группе и в списке и т.д. можно было выбрать.
8 Defender aka LINN
 
02.10.12
10:18
(7) Набор данных запрос сделать слабО?
9 IronDemon
 
02.10.12
10:18
// Заполняет отбор построителя по отбору компоновщика
Процедура ЗаполнитьОтборПоОтборуКомпоновщика(Отбор, ОтборКомпоновщика) Экспорт
   
   ЗаполнитьЗначенияСвойств(Отбор, ОтборКомпоновщика, "Использование, Представление");
   
   Если ОтборКомпоновщика.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше Тогда
       Отбор.ВидСравнения = ВидСравнения.Больше;
   ИначеЕсли ОтборКомпоновщика.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно Тогда
       Отбор.ВидСравнения = ВидСравнения.БольшеИлиРавно;
   ИначеЕсли ОтборКомпоновщика.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии Тогда
       Отбор.ВидСравнения = ВидСравнения.ВИерархии;
   ИначеЕсли ОтборКомпоновщика.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке Тогда
       Отбор.ВидСравнения = ВидСравнения.ВСписке;
   ИначеЕсли ОтборКомпоновщика.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии Тогда
       Отбор.ВидСравнения = ВидСравнения.ВСпискеПоИерархии;
   ИначеЕсли ОтборКомпоновщика.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше Тогда
       Отбор.ВидСравнения = ВидСравнения.Меньше;
   ИначеЕсли ОтборКомпоновщика.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно Тогда
       Отбор.ВидСравнения = ВидСравнения.МеньшеИлиРавно;
   ИначеЕсли ОтборКомпоновщика.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВИерархии Тогда
       Отбор.ВидСравнения = ВидСравнения.НеВИерархии;
   ИначеЕсли ОтборКомпоновщика.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке Тогда
       Отбор.ВидСравнения = ВидСравнения.НеВСписке;
   ИначеЕсли ОтборКомпоновщика.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСпискеПоИерархии Тогда
       Отбор.ВидСравнения = ВидСравнения.НеВСпискеПоИерархии;
   ИначеЕсли ОтборКомпоновщика.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно Тогда
       Отбор.ВидСравнения = ВидСравнения.НеРавно;
   ИначеЕсли ОтборКомпоновщика.ВидСравнения = ВидСравненияКомпоновкиДанных.НеСодержит Тогда
       Отбор.ВидСравнения = ВидСравнения.НеСодержит;
   ИначеЕсли ОтборКомпоновщика.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно Тогда
       Отбор.ВидСравнения = ВидСравнения.Равно;
   ИначеЕсли ОтборКомпоновщика.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит Тогда
       Отбор.ВидСравнения = ВидСравнения.Содержит;
   Иначе
       // Не нашли соответствие - не применяем отбор
       Отбор.Использование = Ложь;
       Возврат;
   КонецЕсли;
   
   Отбор.Значение = ОтборКомпоновщика.ПравоеЗначение;
   
КонецПроцедуры


Ну или построитель для себя открой ;)
10 Defender aka LINN
 
02.10.12
10:23
(9) Для нафига это извращение? Платформа сама умеет отбор СКД в запрос засунуть
11 godmod80
 
02.10.12
10:27
есть ведь закладка Отбор в СКД и на форму просто добавить новый элемент
12 IronDemon
 
02.10.12
10:28
Автор хочет отбор СКД использовать для заполнения своей таблицы. Я прав?
13 Галахад
 
гуру
02.10.12
10:35
(8) Изначально это и был запрос. Просто я фигово СКД знаю.
И не понимаю как грамотно отборы сделать...

(9) Спасибо, сейчас попробую.

(11) Это уже есть.

(12) Да.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.