|
передача запроса в форму при открытии. (УФ) | ☑ | ||
---|---|---|---|---|
0
tempaccount
15.07.14
✎
15:22
|
Доброго времени суток.
Подскажите как можно реализовать такую функцию: Был документ "Заявка", с переопределенной формой выбора номенклатуры. Переопределялся фильтр отбора, по элементарным параметрам: ЭлементОтбора = ФормаВыбора.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НеАктуальнаяРабота"); ЭлементОтбора.ПравоеЗначение = ЛОЖЬ; Но понадобилось внедрить более сложный отбор. по аналогии с запросом: Выбрать когда Номенклатура.ДатаПоиска = &НулеваяДата Тогда Истина Иначе Номенклатура.ДатаПоиска < ТекущаяДата Конец Я правильно понял, что нужно создать форму выбора у номенклатур (скопировать) и поставить галочку произвольного запроса, но как в таком случае передавать запрос туда? Заранее спасибо, и извиняюсь за неточность высказываний. |
|||
1
Fedor-1971
15.07.14
✎
15:48
|
(0) Запрос напиши в форме, а через параметры формы передавай условия работы запроса.
Поинтересуйся такой конструкцией: <ИмяДинСписка>.Параметры.УстановитьЗначениеПараметра("Разрешен",Ложь); В скобках и задавай нужные тебе параметры отбора. |
|||
2
tempaccount
15.07.14
✎
15:54
|
(1) Спасибо, но возможно ли передавать параметром?
Дело в том, что если понадобится другие отборы, то вставлять еще одну форму расточительно, ведь форма - это визуальное представление, а запрос определял бы контент. Соответственно наличие абсолютно одинаковых форм, но с разными запросами это выход. А есть ли альтернативы? Ведь вариант с элементами отбора удобен, но не весь его функционал мне известен. |
|||
3
Fedor-1971
15.07.14
✎
17:33
|
Запрос.Текст = "" - простая строка, передавай если очень хочешь.
Только года через 2 вспомнишь где сформировал текст запроса? Можешь потратить на поиски много времени (особенно если будешь динамически изменять сам запрос), наступал на такие грабли, теперь всё стараюсь сложить там где оно используется. Моё предложение: сделай параметр, НомерЗапроса (или как удобнее) и по нему заполняй текст. Всё лежит в одном флаконе и спокойно из разных мест можно получить разный результат. |
|||
4
tempaccount
15.07.14
✎
18:01
|
(3) Хм, интересно!
Вы предлагаете варианты запросов хранить в обработке, и передавать номер варианта? |
|||
5
Fedor-1971
16.07.14
✎
10:08
|
(4) да, на мой взгляд, так проще поддерживать.
|
|||
6
samozvanec
16.07.14
✎
10:14
|
"Выбрать когда Номенклатура.ДатаПоиска = &НулеваяДата Тогда
Истина" может просто отбор не ставить, если не надо? |
|||
7
samozvanec
16.07.14
✎
10:14
|
(6) сторно... чет я косоглазю с утра
|
|||
8
samozvanec
16.07.14
✎
10:17
|
но вообще отбор компоновки данных умеет группу ИЛИ
|
|||
9
tempaccount
16.07.14
✎
13:50
|
(8) Могли бы Вы пример привести? Дело в том, что объект ВидСравненияКомпоновкиДанных имеет только Больше итп поля.
|
|||
10
tempaccount
16.07.14
✎
13:58
|
Т.е. если я задам два условия:
ОтборПоДате = ФормаВыбора.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборПоДате.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше; ОтборПоДате.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаОкончанияАктуальности"); ОтборПоДате.ПравоеЗначение = ТекущаяДата(); ОтборПоДате = ФормаВыбора.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборПоДате.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборПоДате.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаОкончанияАктуальности"); ОтборПоДате.ПравоеЗначение = Дата(1, 1, 1); то получится И больше И равно. А как сделать связь между двумя отборами ИЛИ? |
|||
11
Timon1405
16.07.14
✎
14:05
|
СП: ТипГруппыЭлементовОтбораКомпоновкиДанных
|
|||
12
tempaccount
16.07.14
✎
14:11
|
(11) Спасибо!
ГруппаотбораПоДате = ФормаВыбора.Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаотбораПоДате.Использование = Истина; ГруппаотбораПоДате.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли; ЭлементОтбораТекущаяДата = ГруппаотбораПоДате.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбораТекущаяДата.Использование = Истина; ЭлементОтбораТекущаяДата.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше; ЭлементОтбораТекущаяДата.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаОкончанияАктуальности"); ЭлементОтбораТекущаяДата.ПравоеЗначение = ТекущаяДата(); ЭлементОтбораНулеваяДата = ГруппаотбораПоДате.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбораНулеваяДата.Использование = Истина; ЭлементОтбораНулеваяДата.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбораНулеваяДата.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаОкончанияАктуальности"); ЭлементОтбораНулеваяДата.ПравоеЗначение = Дата(1, 1, 1); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |