Имя: Пароль:
1C
 
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) постгресс
поковыряюсь с запросом, поглядим что получится