|
|
|
v8: Динамический список Табличная часть | ☑ | ||
|---|---|---|---|---|
|
0
TeNTeN
11.05.11
✎
12:51
|
В форме списка есть динамический список. В нем произвольный запрос, выбирается табличная часть документа:
ВЫБРАТЬ УправляющийДокументКонтроль.ДатаКонтроля, УправляющийДокументКонтроль.Комментарий, УправляющийДокументКонтроль.Ссылка.Наименование ИЗ Документ.УправляющийДокумент.Контроль КАК УправляющийДокументКонтроль ГДЕ УправляющийДокументКонтроль.Пользователь = &Пользователь Пока основная таблица в динамическом списке не задана, все отрабатывается корректно. При задании основной таблицы "Документ.УправляющийДокумент" выдается ошибка: Ошибка при выполнении запроса. Ошибка при выполнении запроса. по причине: {(1, 29)}: Поле не найдено "УправляющийДокументКонтроль.Дата" УправляющийДокументКонтроль.<<?>>Дата Как изменить запрос, что бы не вываливалась ошибка. Что бы была задана основная таблица, то есть отрабатывались стандартные команды на динамическом списке: открытие документа по enter, ввод нового документа и пр. |
|||
|
1
Mitriy
11.05.11
✎
12:54
|
динамический список с указанием основной таблицы не может содержать повторяющиеся ключи этой таблицы...
|
|||
|
2
TeNTeN
11.05.11
✎
13:06
|
(1) Хм. Понятно.
Можно скорректировать задачу. Как можно отобрать в запросе допустим по одной строке таб части (тогда как я понимаю не будет дублей ключей). В таб части есть реквизит ДатаКонтроля, тип дата. Надо вывести документы с самой ранней датой. |
|||
|
3
nbIx
11.05.11
✎
13:12
|
Выбирай из основной таблицы документа и соединяй с табличной частью с условием отбора какой-нить конкретной строки.
ТаблицаДокумента КАК Таблица ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаДокумента.ТабличнаяЧасть ПО КАК ТабЧасть ПО ТачЧасть.Ссылка = Таблица.Ссылка И ТачЧасть.НомерСтроки = 1 |
|||
|
4
TeNTeN
11.05.11
✎
13:19
|
(3) "с условием отбора какой-нить конкретной строки"
вот это как делается подскажите? |
|||
|
5
nbIx
11.05.11
✎
13:19
|
ТачЧасть.НомерСтроки = 1
|
|||
|
6
TeNTeN
11.05.11
✎
13:21
|
(5) Не много не так вопрос задал. Как отсортироватся в таб части и взять строчку с самой ранней датой (реквизит ДатаКонтроля, тип дата)
|
|||
|
7
Mitriy
11.05.11
✎
13:21
|
я бы сделал связь документа по ссылке с вложенным запросом по табчасти, в свою очередь сгруппированным по ссылке и с минимумом по дате...
|
|||
|
8
TeNTeN
11.05.11
✎
13:22
|
(7) Можно пример?
|
|||
|
9
Mitriy
11.05.11
✎
13:24
|
ВЫБРАТЬ
ОтчетОРозничныхПродажах.Ссылка, ВложенныйЗапрос.Цена ИЗ Документ.ОтчетОРозничныхПродажах КАК ОтчетОРозничныхПродажах ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ОтчетОРозничныхПродажахТовары.Ссылка КАК Ссылка, МИНИМУМ(ОтчетОРозничныхПродажахТовары.Цена) КАК Цена ИЗ Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары СГРУППИРОВАТЬ ПО ОтчетОРозничныхПродажахТовары.Ссылка) КАК ВложенныйЗапрос ПО ВложенныйЗапрос.Ссылка = ОтчетОРозничныхПродажах.Ссылка |
|||
|
10
nbIx
11.05.11
✎
13:29
|
(9) Ага и на больших объемах данных ты получишь тормоза.
|
|||
|
11
Mitriy
11.05.11
✎
13:32
|
(10) есть вариант завести реквизит документа с минимальной датой в табчасти... другого не вижу...
|
|||
|
12
nbIx
11.05.11
✎
13:33
|
Сколько этих документов всего?
Если немного то подойдет (9), если десятки-сотни тысяч то (10) |
|||
|
13
Mitriy
11.05.11
✎
13:33
|
(11)+ если не обсуждать вариант, а на фига это вообще нужно...
|
|||
|
14
nbIx
11.05.11
✎
13:34
|
(13) В принципе да))
|
|||
|
15
TeNTeN
11.05.11
✎
13:34
|
(13) Порядок документов - тысячи
(11) Для меня не вариант. В таб части есть реквизит пользователь. То есть дата контроля для каждого пользователя своя. |
|||
|
16
Mitriy
11.05.11
✎
13:36
|
(15) ну сделай (9)... потом поделишься впечатлениями...
|
|||
|
17
TeNTeN
11.05.11
✎
13:37
|
Суть. Каждый пользователь ставит себе несколько точек контроля (ДатаКонтроля, Пользователь, Комментарий).
Надо для каждого конкретного пользователя вывести список всех его точек контроля. После пофильтровать как захочет. |
|||
|
18
TeNTeN
11.05.11
✎
13:39
|
Хотелось все это сделать в динамическом списке. Есть канечно варианты выводить по другому, но это менее удобно в рамках общей задачи.
|
|||
|
19
detec
11.05.11
✎
13:44
|
(18) Всё в динамическом списке в итоге сводится к построению правильного запроса. И не нужно ничего мудрить. Да, если использовать МАКСИМУМ или дргуие аггрегирующие функции, то на 3-4 тысячах записей динамический список открывается 2-3 секунды на файловой базе.
|
|||
|
20
TeNTeN
11.05.11
✎
13:53
|
(19) постгресс
поковыряюсь с запросом, поглядим что получится |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |