Выборка "СрезПоследних" включая неактивные записи регистра сведений

1. Angealtor 32 16.02.17 17:52 Сейчас в теме
Всем добрый вечер!
Как запросом выбрать последние записи в периодическом регистре сведений, чтобы получить все записи, включая записи с Активность = ЛОЖЬ?
По теме из базы знаний
Найденные решения
2. user633533_encantado 11 16.02.17 18:06 Сейчас в теме
Можно, правда при большом объеме данных может тормозить:
ВЫБРАТЬ
	МАКСИМУМ(МестонахождениеОСБухгалтерскийУчет.Период) КАК Период,
	МестонахождениеОСБухгалтерскийУчет.Регистратор,
	МестонахождениеОСБухгалтерскийУчет.ОсновноеСредство,
	МестонахождениеОСБухгалтерскийУчет.Организация
ПОМЕСТИТЬ ВТ_МаксимальныеПериоды
ИЗ
	РегистрСведений.МестонахождениеОСБухгалтерскийУчет КАК МестонахождениеОСБухгалтерскийУчет

СГРУППИРОВАТЬ ПО
	МестонахождениеОСБухгалтерскийУчет.Регистратор,
	МестонахождениеОСБухгалтерскийУчет.ОсновноеСредство,
	МестонахождениеОСБухгалтерскийУчет.Организация
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	МестонахождениеОСБухгалтерскийУчет.Период,
	МестонахождениеОСБухгалтерскийУчет.Регистратор,
	МестонахождениеОСБухгалтерскийУчет.НомерСтроки,
	МестонахождениеОСБухгалтерскийУчет.Активность,
	МестонахождениеОСБухгалтерскийУчет.ОсновноеСредство,
	МестонахождениеОСБухгалтерскийУчет.Организация,
	МестонахождениеОСБухгалтерскийУчет.МОЛ,
	МестонахождениеОСБухгалтерскийУчет.Местонахождение,
	МестонахождениеОСБухгалтерскийУчет.АдресМестонахождения
ИЗ
	ВТ_МаксимальныеПериоды КАК ВТ_МаксимальныеПериоды
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.МестонахождениеОСБухгалтерскийУчет КАК МестонахождениеОСБухгалтерскийУчет
		ПО ВТ_МаксимальныеПериоды.Период = МестонахождениеОСБухгалтерскийУчет.Период
			И ВТ_МаксимальныеПериоды.Регистратор = МестонахождениеОСБухгалтерскийУчет.Регистратор
			И ВТ_МаксимальныеПериоды.ОсновноеСредство = МестонахождениеОСБухгалтерскийУчет.ОсновноеСредство
			И ВТ_МаксимальныеПериоды.Организация = МестонахождениеОСБухгалтерскийУчет.Организация
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. vovan_victory 63 17.02.17 09:14 Сейчас в теме
(1)может , конечно , я чего то не понимаю...
Так последняя дата на период:
Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	КурсыВалютСрезПоследних.Период,
		|	КурсыВалютСрезПоследних.Курс
		|ИЗ
		|	РегистрСведений.КурсыВалют.СрезПоследних(&Период, Валюта = &Валюта) КАК КурсыВалютСрезПоследних";
	
	Запрос.УстановитьПараметр("Валюта", Валюта);
	Запрос.УстановитьПараметр("Период", Период);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		// Вставить обработку выборки ВыборкаДетальныеЗаписи
	КонецЦикла;
Показать


Так 5 последних записей на период:

	Запрос = Новый Запрос;
	         Запрос.Текст = "
		|ВЫБРАТЬ ПЕРВЫЕ 5
		|	КурсыВалют.Валюта КАК Валюта,
		|	КурсыВалют.Период КАК Период
		|ИЗ
		|	РегистрСведений.КурсыВалют КАК КурсыВалют
		|ГДЕ
		|	КурсыВалют.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
		|	И КурсыВалют.Валюта = &Валюта
		|
		|УПОРЯДОЧИТЬ ПО
		|	Период УБЫВ"
		|";
	
	Запрос.УстановитьПараметр("Валюта", Валюта);
	Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
	Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		// Вставить обработку выборки ВыборкаДетальныеЗаписи
	КонецЦикла;
Показать


Или я не правильно понял вопрос?
6. user633533_encantado 11 17.02.17 10:33 Сейчас в теме
(4)

Так 5 последних записей на период:


Речь идет о периодическом регистре подчиненном регистратору, метод "срез последних" не выберет неактивные записи.
8. vovan_victory 63 17.02.17 13:31 Сейчас в теме
(6)А разве в примере в запросе есть обращение к виртуальной таблице СрезПоследних?
Что есть срез последних? Это последняя запись в регистре на определенную дату. Берем все записи физической таблицы на определенную дату, сортируем эти записи по убыванию и получаем самую первую, т.е ВЫБРАТЬ ПЕРВЫЕ 1
9. user633533_encantado 11 17.02.17 14:25 Сейчас в теме
"Берем все записи физической таблицы на определенную дату, сортируем эти записи по убыванию и получаем самую первую, т.е ВЫБРАТЬ ПЕРВЫЕ "

(8) Если в вашем регистре несколько валют, как вы таким макаром получите только последние ? А если измерений у регистра больше чем одно ?
10. vovan_victory 63 17.02.17 14:32 Сейчас в теме
(9)смотрим пример. Там все написано..
12. user633533_encantado 11 17.02.17 14:40 Сейчас в теме
(10) Пример неудачный, слишком много условий и допущений и регистр не подчинен регистратору, убираем отбор по валюте и все уже не сработает. Посмотрите на регистр в моем примере, как с помощью вашего способа вытащить ВСЕ последние записи из регистра, без каких-то отборов.
14. vovan_victory 63 17.02.17 14:46 Сейчас в теме
(12)Уважаемый, спорить с Вами я не буду! Приме показывает один из пути решений, а не готовое решение. В постановке вопроса прозвучало
выбрать последние записи в периодическом регистре сведений
и ни слова ни про регистратор, ни про регистр подчиненный регистратору.
16. user633533_encantado 11 17.02.17 14:48 Сейчас в теме
11. vovan_victory 63 17.02.17 14:38 Сейчас в теме
(9)
Как запросом выбрать последние записи в периодическом регистре сведений, чтобы получить все записи, включая записи с Активность = ЛОЖЬ?


Не пойму... с чего вдруг взялось
Речь идет о периодическом регистре подчиненном регистратору
- это из чего следует? И еще .. из (2) как там получаются запиСИ , а не 1 запись?
13. user633533_encantado 11 17.02.17 14:42 Сейчас в теме
(11) Допустим не следует, но с чего вы взяли что в регистре только одно измерение. И с чего в друг отбор в таблице установлен, нужны записи по всем измерениям,а не по одному какому-то. Мой пример сработает с любым регистром и без всяких отбор,в ваш только в определенном узком условии.
15. user633533_encantado 11 17.02.17 14:46 Сейчас в теме
(11)Вообще понятие "активность" имеет смысл только для регистров подчиненных регистратору.
2. user633533_encantado 11 16.02.17 18:06 Сейчас в теме
Можно, правда при большом объеме данных может тормозить:
ВЫБРАТЬ
	МАКСИМУМ(МестонахождениеОСБухгалтерскийУчет.Период) КАК Период,
	МестонахождениеОСБухгалтерскийУчет.Регистратор,
	МестонахождениеОСБухгалтерскийУчет.ОсновноеСредство,
	МестонахождениеОСБухгалтерскийУчет.Организация
ПОМЕСТИТЬ ВТ_МаксимальныеПериоды
ИЗ
	РегистрСведений.МестонахождениеОСБухгалтерскийУчет КАК МестонахождениеОСБухгалтерскийУчет

СГРУППИРОВАТЬ ПО
	МестонахождениеОСБухгалтерскийУчет.Регистратор,
	МестонахождениеОСБухгалтерскийУчет.ОсновноеСредство,
	МестонахождениеОСБухгалтерскийУчет.Организация
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	МестонахождениеОСБухгалтерскийУчет.Период,
	МестонахождениеОСБухгалтерскийУчет.Регистратор,
	МестонахождениеОСБухгалтерскийУчет.НомерСтроки,
	МестонахождениеОСБухгалтерскийУчет.Активность,
	МестонахождениеОСБухгалтерскийУчет.ОсновноеСредство,
	МестонахождениеОСБухгалтерскийУчет.Организация,
	МестонахождениеОСБухгалтерскийУчет.МОЛ,
	МестонахождениеОСБухгалтерскийУчет.Местонахождение,
	МестонахождениеОСБухгалтерскийУчет.АдресМестонахождения
ИЗ
	ВТ_МаксимальныеПериоды КАК ВТ_МаксимальныеПериоды
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.МестонахождениеОСБухгалтерскийУчет КАК МестонахождениеОСБухгалтерскийУчет
		ПО ВТ_МаксимальныеПериоды.Период = МестонахождениеОСБухгалтерскийУчет.Период
			И ВТ_МаксимальныеПериоды.Регистратор = МестонахождениеОСБухгалтерскийУчет.Регистратор
			И ВТ_МаксимальныеПериоды.ОсновноеСредство = МестонахождениеОСБухгалтерскийУчет.ОсновноеСредство
			И ВТ_МаксимальныеПериоды.Организация = МестонахождениеОСБухгалтерскийУчет.Организация
Показать
3. buganov 200 17.02.17 08:02 Сейчас в теме
(2) а проиндексировать по соединяемым полям?
5. user633533_encantado 11 17.02.17 10:23 Сейчас в теме
(3) Да надо, конечно, но для примера и так сойдет.
17. Angealtor 32 20.02.17 20:49 Сейчас в теме
(2) Все получилось, спасибо.
7. корум 287 17.02.17 10:38 Сейчас в теме
вот так Активность отрабатывает нормально:

ВЫБРАТЬ * ИЗ РегистрСведений.КурсыВалют.СрезПоследних()

а вот так Активность вообще не учитывает:
ВЫБРАТЬ * ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&ПараметрДата,)
Оставьте свое сообщение

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