|
Динсписок: отборы по многим данным )) | ☑ | ||
---|---|---|---|---|
0
ДенисЧ
18.05.20
✎
15:08
|
Дайте идею...
есть справочник (например, контрагенты). У него есть подчинённый (например, договоры). У договора есть признак (например, тип договора). Нужно в списке фильтровать контрагентов по типу договора. В джойн типы договоров, разумеется, не впихнуть, договоров у контрагента много. А как иначе сделать? Вариант отбора "в списке" не катит.... |
|||
1
МихаилМ
18.05.20
✎
15:11
|
Exist
|
|||
2
ДенисЧ
18.05.20
✎
15:14
|
(1) А как это будет выглядеть в запросе динсписка? Менять текст запроса? Как-то оно нехалялльно...
|
|||
3
Fedor-1971
18.05.20
✎
15:40
|
(0) До установки отбора список будет выглядеть так:
Контрагент1 ТипДогПоставщик Контрагент1 ТипДогПокупатель Контрагент2 ТипДогПосредник Контрагент3 ТипДогКредитоДатель Контрагент3 ТипДогКредитоВзятель Контрагент3 ТипДогПоставщик |
|||
4
mistеr
18.05.20
✎
16:26
|
(0) Если нужно делать отбор, то нужно каджый вид договора сделать отдельной колонкой, то есть транспонировать.
|
|||
5
ДенисЧ
18.05.20
✎
17:01
|
(4) Нет. Криво.
|
|||
6
mistеr
18.05.20
✎
17:09
|
(5) Ну найдешь как прямо, расскажи.
|
|||
7
mzelensky
18.05.20
✎
17:15
|
(0) Подробней опиши:
|
|||
8
mzelensky
18.05.20
✎
17:16
|
(7) Какие колонки должны выводиться в ДинСписке (в случае установки отбора и в случае без отбора)?
|
|||
9
Fedor-1971
18.05.20
✎
17:22
|
(5) сделай отображение дин списка как дерево, там кодом придётся прописать, будет примерный вид вот такой:
В свёрнутом виде - исходный список, в развёрнутом - типы договоров, не совсем красиво, но универсально, кроме того, сможешь фильтровать по 2 и более типам договоров |
|||
10
kumena
18.05.20
✎
17:24
|
Если типов договоров не много, то - при создании формы прочитать все типы договора, вывести их на форму списка в виде флажков, назначить им процедуры при изменении.
При изменении значений флажков устанавливать отбор заново. |
|||
11
Fedor-1971
18.05.20
✎
17:32
|
(10) Отбор в (0) хочет поставить на данные, которых нет в текущем списке
Контрагент - он в списке Договор - есть связь, но в списке нет ТипДоговора - вот по этому реквизиту нужно отобрать Тут вариантов не много: 1. Динамически изменять текст запроса (недостаток - дёргаем БД при каждой попытке изменить отбор) 2. Сделать ДС деревом и ставить стандартные отборы (недостаток - изменяется внешний вид списка Контрагентов) |
|||
12
kumena
18.05.20
✎
17:40
|
> Отбор в (0) хочет поставить на данные, которых нет в текущем списке
не волнуйтесь, я понял. При создании формы списка контрагентов это никак не мешает прочитать данные договоров запросом. |
|||
13
Fedor-1971
18.05.20
✎
17:52
|
(12) В том и вопрос:
прочитали все возможные типы, реализовали работу галочек типов договоров, а дальше? Данных для отбора в списке нет. Прямого, универсального, решения то же нет. Решение есть только под конкретный набор типов договоров (тогда и галочки практически ни к чему), но, как я понимаю, хочется некоторой универсальности |
|||
14
toypaul
гуру
18.05.20
✎
17:58
|
select k from kk where k in (select v from dd where t = &t) воломон?
|
|||
15
mzelensky
18.05.20
✎
18:04
|
(0) Вот так это не решается разве?
ВЫБРАТЬ Продукты.Ссылка КАК Продукт {ВЫБРАТЬ Продукт.*} ИЗ Справочник.Продукты КАК Продукты {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеРеквизитыПродуктов КАК ДополнительныеРеквизитыПродуктов ПО Продукты.Ссылка = ДополнительныеРеквизитыПродуктов.Объект} {ГДЕ Продукты.Ссылка.* КАК Продукт, ДополнительныеРеквизитыПродуктов.ВидРеквизита.* КАК ВидДопРеквизита, ДополнительныеРеквизитыПродуктов.Значение.* КАК ЗначениеДопРеквизита} |
|||
16
mzelensky
18.05.20
✎
18:10
|
(15) + У меня по этому запросу ситуация описанная в (0) отработала корректно.
|
|||
17
mzelensky
18.05.20
✎
18:12
|
(15) + Здесь
"Справочник.Продукты КАК Продукты" - это твои "контрагенты" "РегистрСведений.ДополнительныеРеквизитыПродуктов" - это твои "Договора" "ДополнительныеРеквизитыПродуктов.ВидРеквизита.* КАК ВидДопРеквизита" и "ДополнительныеРеквизитыПродуктов.Значение.* КАК ЗначениеДопРеквизита" - это отбор на твой "тип договора" |
|||
18
ам794123
18.05.20
✎
18:19
|
проблема может быть в том, автор топика указал основную таблицу ДС - Контрагенты. Если галку снять, все получится
|
|||
19
ДенисЧ
18.05.20
✎
18:44
|
(8) Контрагенты. Те, у которых есть договор с нужным типом.
|
|||
20
ДенисЧ
18.05.20
✎
18:45
|
(9) Лажа
|
|||
21
ДенисЧ
18.05.20
✎
18:46
|
(15) Надо будет попробоват
|
|||
22
mzelensky
18.05.20
✎
18:47
|
(21) я уже попробовал. Должно взлететь
|
|||
23
aleks_default
18.05.20
✎
18:58
|
Это ж как Характеристики в запросе
|
|||
24
experimentator76
18.05.20
✎
21:33
|
(0) не рекомендуется, но если сильно нужно
{ГДЕ Контрагенты.Ссылка В (ВЫБРАТЬ Договоры.Владелец ИЗ Договоры КАК Договоры ГДЕ Договоры.Тип В (&Тип))} |
|||
25
Ненавижу 1С
гуру
18.05.20
✎
22:05
|
Можно вообще сделать
Выбрать различные ... Из договоры Левое соединение контрагенты |
|||
26
zladenuw
18.05.20
✎
23:44
|
(25) а зачем левое ?
можно таблицу договоров. с контрагентами и так будет неявное, если выбирать еще какие то реквизиты |
|||
27
Ненавижу 1С
гуру
19.05.20
✎
08:34
|
(26) ну или так, соединение чтобы псевдонимы полей не править потом
|
|||
28
kumena
19.05.20
✎
10:01
|
> прочитали все возможные типы, реализовали работу галочек типов договоров, а дальше?
дальше другим запросом выбираем нужных контрагентов, с учетом выставленных флажков (типов договоров). |
|||
29
kumena
19.05.20
✎
10:05
|
> Справочник.Продукты КАК Продукты
> {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеРеквизитыПродуктов КАК ДополнительныеРеквизитыПродуктов > ПО Продукты.Ссылка = ДополнительныеРеквизитыПродуктов.Объект} > > + У меня по этому запросу ситуация описанная в (0) отработала корректно. если я правильно понимаю, то в этом случае левое соединение наплодит продукты (контрагентов), в случае более 1 соединенного дополнительного реквизита (договора). |
|||
30
ДенисЧ
19.05.20
✎
10:06
|
Добавил
{ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК Договоры ПО СправочникКонтрагенты.Ссылка = Договоры.Владелец } { ГДЕ Договоры.ТипДоговора.* КАК ТипДоговора } При установке отбора по типу - получаю дублирование ссылок (( Что, получается ничего, кроме временной тз никак? |
|||
31
kumena
19.05.20
✎
10:09
|
(30) рекомендую обратить внимание на 10 пост, там на мой взгляд вполне удобное для пользователя решение.
|
|||
32
ДенисЧ
19.05.20
✎
10:12
|
(31) Не, там плохой вариант. У меня этих типов только активных 30 штук...
Мне лучше штатным отбором динсписка... |
|||
33
Fedor-1971
19.05.20
✎
10:26
|
(30) Погоди отбрасывать решение у тебя несколько договоров одного типа у контрагента
Переделай своё соединение, например, так: Выбрать Количество(Различные таб.ТипДоговора) как Сколько, таб.Владелец из Справочник.ДоговорыКонтрагентов как таб) |
|||
34
Fedor-1971
19.05.20
✎
10:30
|
33+ т.е. соединяй не с таблицей справочника, а с количеством договоров определённого типа у владельца - это гарантирует одну запись на Контрагента
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |