Имя: Пароль:
1C
1С v8
Как получить список используемых документов
,
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-к
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn