Вход | Регистрация
 

как в запросе получить все существующие документы за период?

как в запросе получить все существующие документы за период?
Я
   vde69
 
13.08.20 - 09:26
Собственно вопрос в том как собрать текст запроса для всех документов?

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

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

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

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.