|
Динамический список, условие ИЛИ | ☑ | ||
---|---|---|---|---|
0
Air777
20.04.18
✎
14:25
|
Есть документ, допустим Перемещение. В нем 2 однотипных
реквизита. Например Склад и Склад-Получатель. Как сделать в динамическом списке таких документов отбор "Склад" который будет одновременно работать по обоим полям Склад и Склад-Получатель. Как установить 2 отдельных отбора через группу ИЛИ мне понятно. Идея в том чтобы для пользователя это был именно 1 простой отбор без дополнительных телодвижений. В обычных формах такая задача решалась через критерии отбора. В УФ неясно как быть. Спасибо за ответы. |
|||
1
George Wheels
20.04.18
✎
14:41
|
1. Проверить есть ли у ДС нужный ЭлементОтбора
1.1. Если есть, то использовать его 1.2. Иначе создать новый 2. Установить ВидСравнения, ЛевоеЗначение, ПравоеЗначение, ИдентификаторПользовательскойНастройки, Использование |
|||
2
Вафель
20.04.18
✎
14:42
|
создай отделное поле. фильтр устанавливай програмно
|
|||
3
arsik
гуру
20.04.18
✎
14:46
|
(0) Может так?
http://prntscr.com/j7sk75 |
|||
4
Air777
20.04.18
✎
14:50
|
(3) ооо да
спасибо то что надо! |
|||
5
Air777
20.04.18
✎
14:53
|
(3) блин ток оно работает так
|
|||
6
Вафель
20.04.18
✎
14:54
|
(3) бред какой то
|
|||
7
Air777
20.04.18
✎
14:54
|
да не работает
|
|||
8
Вафель
20.04.18
✎
14:55
|
ну тут условие: или склады совпадают или первый склад равен значению
|
|||
9
arsik
гуру
20.04.18
✎
15:03
|
(7) А так?
http://prntscr.com/j7stgh |
|||
10
Вафель
20.04.18
✎
15:05
|
(9) а как ты параметр без кода задашь?
|
|||
11
arsik
гуру
20.04.18
✎
15:06
|
+ (9) вру, не выйдет так
|
|||
12
Fragster
гуру
20.04.18
✎
15:17
|
добавить в запрос:
{Где Таблица.Склад = &Склад ИЛИ Таблица.СкладПолучатель = &Склад} |
|||
13
Fragster
гуру
20.04.18
✎
15:18
|
параметр &Склад - в быстрый доступ
|
|||
14
Вафель
20.04.18
✎
15:19
|
(13) а у динамичепских скписков разве параметры можно в быстрый доступ добавлять?
|
|||
15
Fragster
гуру
20.04.18
✎
15:32
|
ну тогда сделать элемент на форме, при изменении коотрого устанавливать параметр
|
|||
16
Вафель
20.04.18
✎
15:33
|
(15) так можно и фильтр настраивать при изменении параметра
|
|||
17
Air777
20.04.18
✎
15:34
|
Вот странно что нет внятного решения для такой очевидной задачи. Исхитрится через 1 место я и сам могу. Я думал есть что то штатное.
|
|||
18
Вафель
20.04.18
✎
15:35
|
(17) 1с вообще ход конем сделала.
В списке выводся каждый документ 2 раза. по каждому складу |
|||
20
Fragster
гуру
20.04.18
✎
16:07
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
РасходныйОрдерНаСклад.Ссылка, РасходныйОрдерНаСклад.Склад, РасходныйОрдерНаСклад.СкладПолучатель ИЗ Документ.РасходныйОрдерНаСклад КАК РасходныйОрдерНаСклад {ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.МестаХранения КАК МестаХранения ПО РасходныйОрдерНаСклад.Склад = МестаХранения.Ссылка ИЛИ РасходныйОрдерНаСклад.СкладПолучатель = МестаХранения.Ссылка} {ГДЕ МестаХранения.Ссылка.* КАК СкладОтбор} |
|||
21
George Wheels
20.04.18
✎
16:20
|
(1) + На форме два дополнительных реквизита "НачалоПериода" и "КонецПериода". В событии ПриИзменении вызываю процедуру НаСервере:
Если ЗначениеЗаполнено(НачалоПериода) Тогда ЭлементОтбора = Неопределено; Для Парам = 0 По Реквизит1.Отбор.Элементы.Количество() - 1 Цикл ТекЭлемент = Реквизит1.Отбор.Элементы.Получить(Парам); Если ТекЭлемент.ИдентификаторПользовательскойНастройки = "НачалоПериода" Тогда ЭлементОтбора = ТекЭлемент; КонецЕсли; КонецЦикла; Если ЭлементОтбора = Неопределено Тогда ЭлементОтбора = Реквизит1.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); КонецЕсли; ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно; ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Период"); ЭлементОтбора.ПравоеЗначение = НачалоДня(НачалоПериода); ЭлементОтбора.ИдентификаторПользовательскойНастройки = "НачалоПериода"; ЭлементОтбора.Использование = Истина; Иначе Для Парам = 0 По Реквизит1.Отбор.Элементы.Количество() - 1 Цикл ТекЭлемент = Реквизит1.Отбор.Элементы.Получить(Парам); Если ТекЭлемент.ИдентификаторПользовательскойНастройки = "НачалоПериода" Тогда ТекЭлемент.Использование = Ложь; КонецЕсли; КонецЦикла; КонецЕсли; |
|||
22
arsik
гуру
20.04.18
✎
16:30
|
(20) Такое кунфу нам нужно.
|
|||
23
Вафель
20.04.18
✎
16:32
|
вот только вот РАЗЛИЧНЫЕ не будет ли тормозит список?
|
|||
24
Fragster
гуру
20.04.18
✎
16:36
|
(23) нет. я вообще на всякий случай добавил, вроде задваивать строки основной таблицы не должно и без него, думать лень :)
|
|||
25
Fragster
гуру
20.04.18
✎
16:37
|
в любом случае ИЛИ тормозить будет больше
|
|||
26
Вафель
20.04.18
✎
16:37
|
(24) должны задваиваться
|
|||
27
Fragster
гуру
20.04.18
✎
16:38
|
(26) ну вот это не двоит:
ВЫБРАТЬ "А" КАК Поле1, "А" КАК Поле2 ПОМЕСТИТЬ Таб ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Таб.Поле1, Таб.Поле2 ИЗ Таб КАК Таб ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таб КАК Таб1 ПО Таб.Поле1 = Таб1.Поле1 ИЛИ Таб.Поле2 = Таб1.Поле1 |
|||
28
Fragster
гуру
20.04.18
✎
16:38
|
дальше проверять лень
|
|||
29
Вафель
20.04.18
✎
16:38
|
(27) так у тебя по 1 записи, чему тут двоить?
|
|||
30
Вафель
20.04.18
✎
16:39
|
даже логически подумать. У тебя к 1 ззаписи должно быть 2 значения Склад.ссылка.
А этого не может быть |
|||
31
Fragster
гуру
20.04.18
✎
16:41
|
ВЫБРАТЬ
"А" КАК Поле1, "А" КАК Поле2 ПОМЕСТИТЬ Таб Объединить все ВЫБРАТЬ "А" КАК Поле1, "А" КАК Поле2 Объединить все ВЫБРАТЬ "А" КАК Поле1, "Б" КАК Поле2 Объединить все ВЫБРАТЬ "Б" КАК Поле1, "А" КАК Поле2 ; ВЫБРАТЬ "А" КАК Поле1 ПОМЕСТИТЬ Таб1 Объединить ВЫБРАТЬ "Б" КАК Поле1 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ Таб.Поле1, Таб.Поле2 ИЗ Таб КАК Таб ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таб1 КАК Таб1 ПО Таб.Поле1 = Таб1.Поле1 ИЛИ Таб.Поле2 = Таб1.Поле1 |
|||
32
Fragster
гуру
20.04.18
✎
16:41
|
при использовании отбора "в списке" без РАЗЛИЧНЫЕ будет задвоение
|
|||
33
Вафель
20.04.18
✎
16:42
|
(32) ну так на то он и отбор, что он может быть, а может и не быть
|
|||
34
Вафель
20.04.18
✎
16:43
|
Если склад всегда выбран, то лучше через объединение сделать
|
|||
35
Fragster
гуру
20.04.18
✎
16:43
|
(33) да. если выбрать для моего запроса "Склад отбор в списке "а", "б"" то будет задвоение и ДС сломается. С РАЗЛИЧНЫЕ не сломается
|
|||
36
Fragster
гуру
20.04.18
✎
16:43
|
если же СкладОтбор равно "А" - то все будет хорошо
|
|||
37
Вафель
20.04.18
✎
16:43
|
Хотя может и так через "объеденить" без все сделать
|
|||
38
Fragster
гуру
20.04.18
✎
16:44
|
(37) ну это тормозить будет не меньше "различные" :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |