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