Запрос. Отбор данных по виду объекта.

1. XiPyPg 30.11.17 13:45 Сейчас в теме
Люди добрые может кто что подскажет. Конфигурация УТ 10.3 релиз от 11 года полностью переработана. В ней доработано версионирование объектов. И есть соответственно регистр "Версии объекта" там измерение "объект" который может быть как объект из справочника, так и документ. Вот и теперь вопрос, как мне сделать запрос и выбрать оттуда только все документы.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. BackinSoda 30.11.17 14:20 Сейчас в теме
(1) Строить текст запроса в цикле типа
Запрос = Новый Запрос();
Для Каждого Док ИЗ Метаданные.Документы Цикл
		
		Запрос.текст = Запрос.текст + "ВЫбрать Т.Объект из регистрСведений.ВерсииОбъектов как Т Где Объект Ссылка Документ." + Док.Имя + " ОБЪЕДИНИТЬ ";
		
	КонецЦикла;
Запрос.текст = Сред(Запрос.текст, 1, СТрдлина(Запрос.текст) -11); //убираем последнее слово "объединить"
ТабДокументов = Запрос.Выполнить().Выгрузить();
Показать

Явно не быстрый способ, но всё же )
2. гаврюша 2 30.11.17 14:11 Сейчас в теме
Выбор ... когда Объект Ссылка Документ.<Наименование документа>
3. Onwardv 64 30.11.17 14:13 Сейчас в теме
Можно выбрать конкретные документы используя оператор проверки ссылочного значение "ССЫЛКА". С указанием всех видов

...
ГДЕ ВерсииОбъектов.Объект ССЫЛКА Документ.СчетФактураВыданный
       ИЛИ ВерсииОбъектов.Объект ССЫЛКА Документ.СчетФактураПолученный
...

И так далее по каждому типу.
GHbass; гаврюша; +2 Ответить
5. user633533_encantado 11 30.11.17 14:25 Сейчас в теме
Только если документов много, то лучше сгенерировать текст условия, которое будет добавлено в запрос перебирая метаданные.
6. Ildar13 30.11.17 15:16 Сейчас в теме
Можно вот так попробовать сделать:
ВЫБРАТЬ
	ВерсииОбъектов.Объект,
	ВерсииОбъектов.Объект.Проведен КАК Проведен
ПОМЕСТИТЬ ВтВерсии
ИЗ
	РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВтВерсии.Объект,
	ВЫБОР
		КОГДА ВтВерсии.Проведен ЕСТЬ NULL
			ТОГДА "Справочник"
		ИНАЧЕ "Документ"
	КОНЕЦ КАК ТипОбъекта
ИЗ
	ВтВерсии КАК ВтВерсии
Показать


Смысл запроса: проверяем наличие реквизита, который есть только у документов. В данном запросе проверяем наличие поля "Проведен". Если оно есть, значит, это документ
7. XiPyPg 30.11.17 15:18 Сейчас в теме
(6) Во спасибо, чтото типо такого и нужно было.
8. spacecraft 30.11.17 15:23 Сейчас в теме
(6) и что, работает?
Как запрос сможет вернуть поле, которого нет? Это не соединение.
9. platon_ 10 30.11.17 15:25 Сейчас в теме
(8) так и проверяется на NULL.
10. spacecraft 30.11.17 15:27 Сейчас в теме
(9)
так и проверяется на NULL.


ВЫБРАТЬ
    ВерсииОбъектов.Объект,
    ВерсииОбъектов.Объект.Проведен КАК Проведен
ПОМЕСТИТЬ ВтВерсии
ИЗ
    РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов

Тут никак не может быть NULL. Просто даст ошибку что-то вроде: поле не найдено.
11. Ildar13 30.11.17 15:31 Сейчас в теме
(10)
Вернет либо Истина, либо Ложь, либо Null
13. spacecraft 30.11.17 15:46 Сейчас в теме
(11) проверили?
Это же простой запрос sql.
SEL ECT Id, Name, Fignia FR OM Firms;
14. antz 30.11.17 15:50 Сейчас в теме
(13) я проверил, прав он. Неявное соединение там все-таки будет, когда выбирается поле "Проведен"
16. гаврюша 2 30.11.17 15:56 Сейчас в теме
17. spacecraft 30.11.17 16:02 Сейчас в теме
(11) Значит был не прав.
(14) хмм. значит таки происходит неявное соединение.
15. гаврюша 2 30.11.17 15:54 Сейчас в теме
(10) Никакой ошибки. Или "Да" или NULL.

Только виснет, если большое количество записей. Луше, если можно ограничить по времени изменения
Прикрепленные файлы:
12. гаврюша 2 30.11.17 15:45 Сейчас в теме
(6) Консоль запросов "вешается" даже на первой части запроса, даже если отсечь по периодам... В то время как:
ВЫБРАТЬ
	ВерсииОбъектов.Объект
ИЗ
	РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
ГДЕ
	ВерсииОбъектов.Объект ССЫЛКА Документ.элдУсловияИзмерения

отрабатывает за секунды...
Лучше воспользоваться циклом как предлагает (4)
18. Ildar13 30.11.17 17:08 Сейчас в теме
Еще вариант: добавить в конфигураторе Журнал документов, потом в запросе соединить его с регистром сведений Версии объектов
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот