Имя: Пароль:
1C
1С v8
Вид Сравнения вставить в запрос с элемента формы
0 Fuas4
 
10.12.13
07:50
1. Только хардкор! 0% (0)
2. Все гениальное - просто! 0% (0)
Всего мнений: 0

Добрый день!
Есть дерево значений, которое заполняется по результатам запроса. На форму хочу запилить отбор по номенклатуре (равно/не равно, в группе и прочее) На форму добавил поле ввода с типом Системные перечисления.ВидСравнения и список значений с моей номенклатурой. Как подпихнуть запросу СЗ вопросов нет, а как подпихнуть в запрос вид сравнения понять не могу. Можно это сделать, не создавая соответствие типа "Равно = "="", "Не равно = "<>"" Или только хардкор?
1 chelentano
 
10.12.13
07:51
(0) ПостроительЗапроса, ПостроительОтчета
2 Fuas4
 
10.12.13
07:52
(1) А через СтрЗаменить()?
3 chelentano
 
10.12.13
07:54
(2) а нафига?
4 Fuas4
 
10.12.13
07:55
(3) Ну так красивее же. Тупо текст запроса подправил и все
5 chelentano
 
10.12.13
07:56
(4) ну ка, давай примерчик твоего "красивого" кода
6 Defender aka LINN
 
10.12.13
07:56
(4) Хренасе у тебя понятия о красоте...
7 Fuas4
 
10.12.13
08:00
(5) Так там смотреть то особо не на что:
Текст="ВЫБРАТЬ
             |    Ном.Ссылка КАК Номенклатура,
             |    ЕСТЬNULL(Ном.Выгружать1, 0) КАК ВыгружатьНаСайт,
             |    НоменклатураВыгружаемаяНаСайт.Склад КАК Склд,
             |    НоменклатураВыгружаемаяНаСайт.Выгружаем,
             |    ЛОЖЬ КАК Удалить,
             |    Ном.Код
             |ИЗ
             |    Справочник.Номенклатура КАК Ном
             |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураВыгружаемаяНаСайт КАК НоменклатураВыгружаемаяНаСайт
             |        ПО (НоменклатураВыгружаемаяНаСайт.Номенклатура = Ном.Ссылка)
             |ГДЕ
             |    Ном.ПометкаУдаления = ЛОЖЬ
             |    И 1 = 1
             |
             |УПОРЯДОЧИТЬ ПО
             |    Ном.Ссылка ИЕРАРХИЯ";

Дальше должно быть СтрЗаменить(Текст,"1 = 1", МоеКлассноеПрограммноФормируемоеУсловие")

Или щас вы расскажете мне, что это гомнокод?
8 Wobland
 
10.12.13
08:03
>ЕСТЬNULL(Ном.Выгружать1, 0) КАК ВыгружатьНаСайт
так себе
9 Defender aka LINN
 
10.12.13
08:03
(7) Да твой запрос нам никуда не впился. Ты покажи, как "МоеКлассноеПрограммноФормируемоеУсловие" формируется.
10 Wobland
 
10.12.13
08:03
>Ном.ПометкаУдаления = ЛОЖЬ
тоже не очень
11 Fuas4
 
10.12.13
08:05
(8) а как надо? (10) "не Ном.ПометкаУдаления" красивее, согласен
12 Fuas4
 
10.12.13
08:06
(9) Никак пока не формируется.
13 catena
 
10.12.13
08:08
(12)Но однозначно красивее построителя :)
14 Defender aka LINN
 
10.12.13
08:09
(12) Вот никак и не формируй. У платформы есть целых 2 специально обученных объекта, которые тебе сами, без лишних телодвижений готовы выдать готовый запрос.
Но одинэснеги - они как самураи. Видимо, где-то есть бусидо одинэснега, где говорится: "Если у одинэснега есть два пути и один путь ведет к говнокоду, одинэснег должен избрать его. Из двух же говнокодов надо выбирать тот, где больше строк"
15 Fuas4
 
10.12.13
08:09
Все, пошел за построителем, а то щас закидаете, знаю я вас :)
16 Fuas4
 
10.12.13
08:10
(14) я щас как раз читаю мемуары одного самурая
17 dclxvi
 
10.12.13
08:12
Если (От_Организация И (НЕ ЭлементыФормы.ПанельОтбор.Свертка = РежимСверткиЭлементаУправления.Верх)) Тогда
        ТекстУслТовары = ТекстУслТовары + " И ПродажиОбороты.ДокументПродажи.Организация " + ВидОтбора(ВС_Организация) + "  (&Организация)";
    КонецЕсли;


Функция ВидОтбора(ПолеВидаОтбора)
    
    Если ПолеВидаОтбора = ВидСравнения.Равно Тогда
        ВидОтбора = "="
    ИначеЕсли ПолеВидаОтбора = ВидСравнения.НеРавно Тогда
        ВидОтбора = "<>"
    ИначеЕсли ПолеВидаОтбора = ВидСравнения.ВСписке Тогда
        ВидОтбора = "В"
    ИначеЕсли ПолеВидаОтбора = ВидСравнения.НеВСписке Тогда
        ВидОтбора = "НЕ В"
    ИначеЕсли ПолеВидаОтбора = ВидСравнения.ВСпискеПоИерархии ИЛИ
        ПолеВидаОтбора = ВидСравнения.ВИерархии Тогда
        ВидОтбора = "В ИЕРАРХИИ"
    ИначеЕсли ПолеВидаОтбора = ВидСравнения.НеВСпискеПоИерархии ИЛИ
        ПолеВидаОтбора = ВидСравнения.НеВИерархии Тогда
        ВидОтбора = "НЕ В ИЕРАРХИИ"
    КонецЕсли;
    
    Возврат ВидОтбора;
КонецФункции // ВидОтбора()
18 Fuas4
 
10.12.13
08:13
(17) Я смотрю, тут есть еще самураи :)
19 Wobland
 
10.12.13
08:14
Юноши «Ветвей дерева» и клана «Хранителей времени» в течение года вместе изучали воинское искусство.
На ежегодных состязаниях молодые бойцы «Ветвей дерева» победили своих братьев из «Хранителей времени» только потому, что по совету Птицы — Хранительницы Камня они часто созерцали цветущие лотосы.
Это ли не сила красоты?
20 dclxvi
 
10.12.13
08:15
(18) По идее этот код морально устарел лет на 6-8.
21 dclxvi
 
10.12.13
08:17
(17)+ если будет использоваться отбор по списку значений:

Процедура ПлВСОрганизацияПриИзменении(Элемент)
Если ТипЗнч(Зн_Организация) = Тип("СправочникСсылка.Организации") Тогда
        ЗаписываемоеЗначение = Зн_Организация;                                                              
    Иначе
        Если Зн_Организация.Количество() = 0 Тогда    
            ЗаписываемоеЗначение = ПустоеЗначениеТипа("СправочникСсылка.Организации")
        Иначе
            ЗаписываемоеЗначение = Зн_Организация[0].Значение;
        КонецЕсли;
    КонецЕсли;
    
    Если Элемент.Значение = ВидСравнения.ВСписке ИЛИ Элемент.Значение = ВидСравнения.НеВСписке
        ИЛИ Элемент.Значение = ВидСравнения.ВСпискеПоИерархии ИЛИ Элемент.Значение = ВидСравнения.НеВСпискеПоИерархии Тогда
        
        ЭлементыФормы.ПлЗнОрганизация.ОграничениеТипа      = Новый ОписаниеТипов("СписокЗначений");
        Зн_Организация = Новый СписокЗначений;
        Если Не ЗначениеНеЗаполнено(ЗаписываемоеЗначение) Тогда
            Зн_Организация.Добавить(ЗаписываемоеЗначение);
        КонецЕсли;
        
    Иначе              
        
        ЭлементыФормы.ПлЗнОрганизация.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.Организации");
        Зн_Организация     = ЗаписываемоеЗначение;
        
    КонецЕсли;

    
КонецПроцедуры
22 Fuas4
 
10.12.13
08:17
(20) Построитель уже юзаю. Иду в ногу со временем
23 Defender aka LINN
 
10.12.13
08:20
(22) Не, в ногу со временем - это СКД
24 Fuas4
 
10.12.13
08:25
(23) У меня не отчет. У меня обработка. Она творит магию (позволяет галочки ставить и снимать). Как это на СКД делать?
25 Fuas4
 
10.12.13
08:25
+(24) И потом записи в регистр по этим галочкам делает
26 Wobland
 
10.12.13
08:26
(24) СКД - это такая система, которая компонует данные
27 Fuas4
 
10.12.13
08:27
(26) Да, я даже расшифровку знаю.
28 Defender aka LINN
 
10.12.13
08:34
(27) Тогда ты должен знать, что слова "отчет" там нет.
29 Fuas4
 
10.12.13
08:38
(28) Я только для отчетов юзаю, поэтому у меня стойкий стереотип:) Надо, кстати, попробовать какую-нибудь обработину через СКД запилить, спасибо за наводку
30 Wobland
 
10.12.13
08:39
вот тебе матерное слово для размышлений: ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений
31 Fuas4
 
10.12.13
08:42
(30) вот из-за этих слов я и юзаю СКД только для отчеов и по возможности без программирования
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший