|
Как получить список используемых документов | ☑ | ||
---|---|---|---|---|
0
sidalexsandr
28.02.17
✎
11:56
|
Поделитесь если кто имеет отчетом который выводит список используемых документов в 1с8.
|
|||
1
Ёпрст
28.02.17
✎
12:00
|
Базопузомеров как грязи, на том же нимфостарте
|
|||
2
Ёпрст
28.02.17
✎
12:00
|
Можно и через Инструменты разработчика (вроде, не помню ужо)
|
|||
3
DrShad
28.02.17
✎
12:05
|
запрос пишется пять минут
|
|||
4
sidalexsandr
28.02.17
✎
12:11
|
(3) Запрос насколько я знаю не может обратиться к метаданным
|
|||
5
DrShad
28.02.17
✎
12:13
|
(4) а зачем?
|
|||
6
Naf2017
28.02.17
✎
12:16
|
(4) запрос собирается из метаданных программно
|
|||
7
sidalexsandr
28.02.17
✎
12:16
|
(5) Только что пришел на работу и дали базы чтобы я разбирался. Вот поэтому и хочу узнать какие документы есть, чтобы дальше изучать только введенные документы
|
|||
8
sidalexsandr
28.02.17
✎
12:18
|
(6) Нашел часть запроса, которая выводит список просто всех документов. Дальше я так понимаю надо цикл и в цикле проверять есть ли хотя бы один документ указанного вида. Вот текст запроса:
ШаблонЗапроса = " |ВЫБРАТЬ | #Таблица.Ссылка КАК Ссылка |ИЗ | #Таблица |"; ТекстЗапроса = ""; Для каждого ТекДанные из Метаданные.Документы Цикл ТекстЗапроса = ТекстЗапроса + ?(ПустаяСтрока(ТекстЗапроса), "", " |ОБЪЕДИНИТЬ ВСЕ |") + СтрЗаменить(ШаблонЗапроса, "#Таблица", "Документ." + ТекДанные.Имя); КонецЦикла; Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Ссылка); КонецЦикла; |
|||
9
sidalexsandr
28.02.17
✎
12:19
|
Подскажите теперь как во вложенном цикле проверить есть ли хоть один документ указанного вида?
|
|||
10
Timon1405
28.02.17
✎
12:21
|
ВЫБРАТЬ ПЕРВЫЕ 1 же
|
|||
11
sidalexsandr
28.02.17
✎
12:23
|
(10) Спасибо. А как проверить, что в выборке есть хоть один документ?
|
|||
12
Dmitrii
гуру
28.02.17
✎
12:23
|
(7) >> Только что пришел на работу...
В качестве кого?... если ты не способен переделать уже готовое из (8) в то, что тебе нужно? |
|||
13
Dmitrii
гуру
28.02.17
✎
12:24
|
(11) Ты чукча?
Перечитывай внимательно (10) вплоть до просветления. |
|||
14
sidalexsandr
28.02.17
✎
12:28
|
(13) Не чукча. Просто не знаю что вернет (10) если нет ни одного документа данного вида
|
|||
15
Aleksey
28.02.17
✎
12:29
|
(14) Ровно тоже что и без этой строки
|
|||
16
sidalexsandr
28.02.17
✎
12:31
|
(15) А что именно вернет запрос когда нет ни одной записи указанного документа? Может NULL?
|
|||
17
Aleksey
28.02.17
✎
12:31
|
можно и без ПЕРВЫЕ 1. Это просто тупо ускорение запроса
Представь что у тебя 100500 реализаций. Запрос по реализациям вернет тебе 100500 строк, а с доп строкой " ПЕРВЫЕ 1" только 1 строку. Меньше результат - быстрее отработает код Соответсвенно если в пустой базе, где нет реализаций сделать запрос то что хоть с ПЕРВЫЕ 1, хоть без, хоть первые 100500 - результат одинаковый |
|||
18
Aleksey
28.02.17
✎
12:32
|
(16) нет он вернет то же что и всегда - результат выполнения запроса
|
|||
19
Aleksey
28.02.17
✎
12:33
|
Запрос.Выполнить (Query.Execute)
Запрос (Query) Выполнить (Execute) Синтаксис: Выполнить() Возвращаемое значение: Тип: РезультатЗапроса; Неопределено. Результатом исполнения запроса на уничтожение временной таблицы является значение Неопределено. Описание: Выполняет запрос к базе данных. |
|||
20
Aleksey
28.02.17
✎
12:34
|
А вот у типа РезультатЗапроса есть метод Пустой()
РезультатЗапроса (QueryResult) Пустой (IsEmpty) Синтаксис: Пустой() Возвращаемое значение: Тип: Булево. Истина - нет ни одной записи; Ложь - в противном случае. Описание: Определяет, есть ли в результате записи (без учета общих итогов). Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). Пример: Если Запрос.Выполнить().Пустой() Тогда Возврат Ложь; КонецЕсли; |
|||
21
sidalexsandr
28.02.17
✎
12:46
|
Вложенный запрос в цикле говорят нехорошо. Подскажите как в цикле перебрать документы и узнать если документы?
|
|||
22
h-sp
28.02.17
✎
12:48
|
(21) в (8) ведь сам подсказал. Причем божился, что не чукча.
|
|||
23
sidalexsandr
28.02.17
✎
12:54
|
(22) Это я нашел пример на другом сайте
|
|||
24
h-sp
28.02.17
✎
13:09
|
(23) ну и пользуйся
|
|||
25
sidalexsandr
28.02.17
✎
13:13
|
Сформулирую вопрос по другому: как зная название документа получить конкретные документы за весь период?
|
|||
26
sidalexsandr
28.02.17
✎
13:16
|
Для каждого Док из Документы.+Выборка.Ссылка Цикл
Сообщить(Док); КонецЦикла; Вопрос: подскажите как правильно. |
|||
27
Aleksey
28.02.17
✎
13:16
|
(21) Тебе шашечки или ехать?
|
|||
28
h-sp
28.02.17
✎
13:18
|
(26) как в (8) - добавь переиод туда. типа
ШаблонЗапроса = " |ВЫБРАТЬ | #Таблица.Ссылка КАК Ссылка |ИЗ | #Таблица |ГДЕ | #Таблица.Дата МЕЖДУ &Дата1 И &Дата2 "; |
|||
29
mistеr
28.02.17
✎
13:34
|
Групповая обработка справочников и документов. Получаешь список, перекидываешь в Excel, делаешь сводную таблицу.
Это если "ехать". |
|||
30
sidalexsandr
28.02.17
✎
13:36
|
(29) Спасибо
|
|||
31
Йохохо
28.02.17
✎
13:48
|
ШаблонЗапроса = "
|ВЫБРАТЬ | МАКСИМУМ(#Таблица.Дата), | КОЛИЧЕСТВО(1), | "#Таблица", |ИЗ | #Таблица |"; |
|||
32
sidalexsandr
28.02.17
✎
15:06
|
(31) А зачем МАКСИМУМ?
|
|||
33
Лефмихалыч
28.02.17
✎
15:12
|
select t.name as TableName, Min(t.create_date) as CreateDate, ds.name as FileGroupName, SUM(u.total_pages) * 8 / 1024 as SizeMB
from sys.tables as t inner join sys.partitions as p on t.object_id = p.object_id inner join sys.allocation_units as u on p.partition_id = u.container_id inner join sys.data_spaces as ds on u.data_space_id = ds.data_space_id where t.name like '%Document%' group by t.name, ds.name having SUM(u.total_pages)>0 order by SizeMB desc |
|||
34
sidalexsandr
28.02.17
✎
17:32
|
(33) Спасибо. Хорошо пришлось поломать мозги, не понял зачем
* 8 / 1024 as SizeMB ? |
|||
35
Волшебник
модератор
28.02.17
✎
17:32
|
из журнала регистрации можно всё вытащить
|
|||
36
Лефмихалыч
28.02.17
✎
17:35
|
(35) это если он включен и регистрирует то, что надо, и не был обрезан
|
|||
37
piter3
28.02.17
✎
17:36
|
(34)ты явно не IT-к
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |