К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Странная проблема с запросом к регистру сведений

0 - 19.02.2015 - 01:05
Сломал все мозги - то ли глаза замылились, то ли в отпуск пора...
Вобщем имеется простой независимый периодический регистр сведений с периодичностью "день":
Одно измерение - "Номер", тип фикс. строка, 11
и два ресурса:
"ДатаВыработки" - тип Дата,
"Технолог" - тип СправочникСсылка.ФизическиеЛица.

Проблема в том, что в запрос по периоду, по срезу последних, всегда попадает только самая первая запись регистра сведений, а не срез на заданный момент.
Код запроса в следующем посте.



1 - 19.02.2015 - 01:08
Код:
			Запрос = Новый Запрос(
			"ВЫБРАТЬ
			|	УдостоверенияКачестваСрезПоследних.Номер,
			|	УдостоверенияКачестваСрезПоследних.ДатаВыработки,
			|	УдостоверенияКачестваСрезПоследних.Технолог
			|ИЗ
			|	РегистрСведений.УдостоверенияКачества.СрезПоследних(&НаДату, ) КАК УдостоверенияКачестваСрезПоследних"
			);
			Запрос.УстановитьПараметр("НаДату", ТекущийДокумент.Дата);
			Выборка = Запрос.Выполнить().Выбрать();
			ПредставлениеТехнолог	= "";
			Если Выборка.Следующий() Тогда
		
				НомерКУ 				= Выборка.Номер;
				ДатаВыработки			= Выборка.ДатаВыработки;
				УправлениеНебольшойФирмойСервер.ФамилияИнициалыПоНаименованию(ПредставлениеТехнолог, Строка(Выборка.Технолог));
				ПредставлениеТехнолог	= "/" + ПредставлениеТехнолог + "/";
				
			Иначе	
				
				НомерКУ 				= "_________";
				ДатаВыработки			= Шапка.ДатаДокумента;
				ПредставлениеТехнолог	= "/                 /";
				
			КонецЕсли;
2 - 19.02.2015 - 01:45
смысл в том, что нужно просто получить значение регистра сведений на заданную дату без использования ключа, т.е. не по заданному измерению.
3 - 19.02.2015 - 01:59
хмм..., перенёс единственное измерение в ресурсы (т.е. измерений не осталось), и всё заработало. Чего-то моя нипанимаит...
Гость
4 - 19.02.2015 - 09:05
Чего-то ты не понимаешь... Срез последних как-раз и есть выборка всех ключей (комбинаций измерений), с актуальными для указунного моента значениями
Uho
5 - 19.02.2015 - 10:12
+4 поэтому и записей с одинаковыми ключевыми полями быть не может
6 - 19.02.2015 - 19:24
2 (4,5)
Смысл всего, что выше, и вывод из этого - когда есть измерения, то выборка из регистра возможна только по этим измерениям, и, если нужна просто строка значений регистра на конкретный момент времени, то её, без указания измерений, не получить. А нужно было именно это. Если измерений нет, а ресурсы имеются, то выборка возможна только по периоду, т.е. именно период в данном варианте и является ключевым полем, и возможна единственная запись с таким значением периода. Я об этом не знал, т.к. ранее подобной задачи никогда не стояло. При наличии измерений в регистре выполнить отбор по их комбинации - это без проблем ;)
Uho
7 - 20.02.2015 - 14:19
6-oops! > немного не так, просто если ты не указываешь отбор по имеющимся измерениям, то в выборку попадают срезы ВСЕХ ПОСЛЕДНИХ КОМБИНАЦИЙ на указанную тобой дату
Uho
8 - 20.02.2015 - 14:22
+7 а если тебе нужна запись с определенным значением ПЕРИОДА, то зачем же тебе СРЕЗ? делай запрос к основной таблице, где Период = НужнаяДата
9 - 20.02.2015 - 16:30
(7) т.е., если у меня в измерении будет каждый день новое значение, то в выборку попадет вся таблица?
(8) нужна не запись с определенным значением ПЕРИОДА, а действующее значение регистра на заданную дату - к примеру, запрос я делаю на 5 февраля, а последнее изменение до 5 февраля было сделано 23 января, а следующее - 10 февраля :) Поэтому и срез ;)
Uho
10 - 20.02.2015 - 16:36
вот это я понял, как запись с определенным значением периода:
Цитата:
Сообщение от oops! Посмотреть сообщение
и возможна единственная запись с таким значением периода.
Цитата:
Сообщение от oops! Посмотреть сообщение
т.е., если у меня в измерении будет каждый день новое значение, то в выборку попадет вся таблица?
если не поставишь отбор по измерениям, то да, вся таблица до указанной тобой даты (при условии, что измерения не повторяются). Теоретически ты можешь отсортировать по периоду (в обратном порядке) и взять нужную тебе запись через "Первые 1"
Uho
11 - 20.02.2015 - 16:39
+10 тебе вернется таблица содержащие все срезы последних по всем измерениям, т.е. если какое-то измерение (комбинация измерений) в регистре повторяется два раза, то в результате запроса запись по этому измерению (комбинации измерений) будет только одна (и так же по всем остальным измерениям (комбинациям))
12 - 20.02.2015 - 21:22
(10,11) Ну да, это всё понятно. Получается, что в моём случае наиболее рациональное решение по проектированию РС - это регистр без измерений. Тогда всё работает так, как надо. Смысл задачи - РС в данном случае представляет собой журнал выданных документов (сами эти документы не создаются в этой ИБ), каждый из которых действителен до того момента времени, пока не будет выдан следующий документ. И мне, запросом на заданную дату, нужно получать значение действующего на эту дату документа.
Uho
13 - 25.02.2015 - 10:25
12-oops! > тогда зачем периодический РС? достаточно непериодического, получай последнюю запись по дате и все


К списку вопросов






Copyright ©, Все права защищены