Имя: Пароль:
1C
 
как в запросе получить все существующие документы за период?
,
0 vde69
 
13.08.20
09:26
Собственно вопрос в том как собрать текст запроса для всех документов?

Понятно, что можно через Метаданные.Документы, но в конфигурации слишком много не используемых видов документов, и не хочется собирать запрос на 500 таблиц когда реально надо 30.

Понятно, что можно составить текстовый список нужных и идти по нему, но тогда решение будет не универсальным (при добавлении нового вида документа придется этот список расширять)

Можно пробовать фильтрануть по подсистемам, или по пользовательским типам, но и там есть исключения...

Как лучше сделать?
1 Lokli
 
13.08.20
09:29
База файловая или серверная?
2 ДенисЧ
 
13.08.20
09:29
По метаданным иди. И нефигу тут выделываться )))
3 vde69
 
13.08.20
09:30
(1) прямые запросы не расматриваем, решение должно быть универсальным
4 Beduin
 
13.08.20
09:31
Если без метаданных, я бы взял какой-то регистр сведений из типовых(типа ключи учета) и по нему получил все возможные типы.
5 polosov
 
13.08.20
09:31
(0) Универсальное решение - динамическое построение запроса по метаданным.
6 vde69
 
13.08.20
09:36
(4) этот вариант мне нравится
7 Lokli
 
13.08.20
09:39
(3) Как хочешь. :) Тогда получай список документов через метаданные, потом рассчитывай размер таблиц под этими документами и если они не ноль, то формируй к ним запрос.
8 acht
 
13.08.20
09:40
(7) >  рассчитывай размер таблиц под этими документами
Эт зачем?
9 PR
 
13.08.20
09:46
(0) Мда
Как бы оно сделать запрос только к тем документам, которые есть в базе, не смотря, есть ли документы в базе
Ну, пригласи телепата

PS: всякие гадания на кофейной гуще типа запрос ко всяким регистрам может и не прокатить, потому что легко может оказаться так, что документа нигде нет, кроме как в таблице документов
10 Lokli
 
13.08.20
09:57
Думаю сформированный по метаданным запрос на количество записей в шапках документов будет достаточно быстрым. А на основании этого уже можно сформировать запрос по нужным типам документов за период.
Это будет более правильный вариант, чем в (7).
11 Garykom
 
гуру
13.08.20
10:10
"ВЫБРАТЬ ПЕРВЫЕ 1 ... " разве не шустрее?
12 Garykom
 
гуру
13.08.20
10:13
(11)+ В смысле я бы сначала все по метаданным, затем полный запрос по всем докам (запросы в цикле или можно один с ОБЪЕДИНИТЬ ВСЕ) на первые 1, затем только полученные типы документов делаем за период запрос
13 Garykom
 
гуру
13.08.20
10:14
(12) *", затем" = "-"
14 lodger
 
13.08.20
10:23
(0) собирать запрос на 500 таблиц все равно придётся.
рецепт в (12)
(10) зачем нагружать СУБД расчётом количества, когда нас интересует вообще факт наличия записей в периоде?
15 acht
 
13.08.20
10:26
(12) А зачем там выбрать первые 1, если ты все равно полезешь туда за данными и получишь пустую выборку? Ты хочешь разделить "документ вообще не используется" от "документов за период нет"?
16 Garykom
 
гуру
13.08.20
10:31
(15) угу просто первый попавшийся документ дернуть и если есть значит документ в конфе используется и надо по нему делать за период нужный
причем можно список используемых документов один раз получить и сохранить а все за период много раз делать на его основе
17 kolts23381
 
13.08.20
10:35
Конфигурацию можно менять? Может сделать журнал по все документам?
18 acht
 
13.08.20
10:40
(16) Гм. Ну вот нашелся там какой-нибудь один "Установка параметров учета номенклатуры" 5 летней давности. А за запрашиваемый период их гарантировано не будет.

В общем, пока ТС не расскажет, как он в "слишком много не используемых видов документов" отличает используемые от неиспользуемых, все это телепатия
19 Вафель
 
13.08.20
10:42
запрос по пустой таблице никакой нагрузки не дает
20 vde69
 
13.08.20
10:55
(19) раньше точно было ограничение на количество таблиц в запросе...
21 acht
 
13.08.20
11:14
(20) В 2008 скуле уже отменили. 12 лет назад, есчличо