Имя: Пароль:
1C
 
Регистр сведений. Срез последних
0 Vitello
 
05.12.08
15:17
Сильно не ругайтесь, знаю что боян, но никак не могу найти.

Есть регистр сведений с 3мя измерениями, срез последних возвращает несколько записей, мне нужно получить последнюю из них. Делаю так:

ВЫБРАТЬ ПЕРВЫЕ 1
   ОформленныеБСОСрезПоследних.Номер КАК Номер,
   ОформленныеБСОСрезПоследних.Серия КАК Серия,
   ОформленныеБСОСрезПоследних.Договор КАК Договор
ИЗ
   РегистрСведений.ОформленныеБСО.СрезПоследних(
   ,
   Вид.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыБСО.ПолисОсаго)
   И Наличие = ИСТИНА) КАК ОформленныеБСОСрезПоследних
УПОРЯДОЧИТЬ ПО
   ОформленныеБСОСрезПоследних.Период УБЫВ

Договор, Вид - измерения, все остальное реквизиты.
Возвращает - пусто.
1 Vitello
 
05.12.08
15:19
Забыл добавить, этот запрос - вложенный, связь идет по измерению договор.
2 Шурик71
 
05.12.08
15:26
> Договор, Вид - измерения, все остальное реквизиты.

реквизиты или ресурсы?
3 Vitello
 
05.12.08
15:33
(2)Ресурсы.
4 gr13
 
05.12.08
15:35
а на какую дату ты срез делаешь?
5 Mitriy
 
05.12.08
15:37
(4) на сейчас...
6 gr13
 
05.12.08
15:38
а разве это на сейчас?
7 Vitello
 
05.12.08
15:40
(4)На конечную, параметром задается. Пробовал и указывать и не указывать, один хрен null, хотя записи точно есть.
8 Mitriy
 
05.12.08
15:40
(0) что значит последняя запись? если по периоду, то там все будут последними, это же срез последних...
9 Vitello
 
05.12.08
15:41
Там вот такой кусок:

...
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1
   ОформленныеБСОСрезПоследних.Договор КАК Договор,
   ОформленныеБСОСрезПоследних.Номер КАК Номер,
   ОформленныеБСОСрезПоследних.Серия КАК Серия
ИЗ
   РегистрСведений.ОформленныеБСО.СрезПоследних(
           &КонДата,
           Вид.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыБСО.ПолисОсаго)
               И Наличие = ИСТИНА) КАК ОформленныеБСОСрезПоследних

УПОРЯДОЧИТЬ ПО
   ОформленныеБСОСрезПоследних.Период УБЫВ) КАК ОформленныеБСОСрезПоследних
ПО ДопсДСП.ИсходныйДоговор = ОформленныеБСОСрезПоследних.Договор
...
10 Vitello
 
05.12.08
15:42
(8)Ну мне возвращается несколько записей, хочу первую с конца, одну только.
11 Mitriy
 
05.12.08
15:43
(10) дык ты определись сначала, что в твоем понимании конец...
12 gvido
 
05.12.08
15:46
Вид.тип - это измерение или ресурс?
13 Vitello
 
05.12.08
15:50
(12)Вид - измерение.
(11)Я метод просто не знаю как правильно это сделать.

Как мне получить последнюю запись из регистра по моим условиям?
Регистр, периодический: 3 измерения: Договор, Вид, Объект. 3 ресурса: Серия,Номер,Наличие.
14 НЕА123
 
05.12.08
15:51
(12) по ресурсу низя, кажется.
(9) вроде все правильно.
КонДата - действетельно сегодня?
Точно есть такие записи.
15 Mitriy
 
05.12.08
15:51
(13) тебе надо наложить условие на все три измерения, тогда получишь одну-единственную запись...
16 Vitello
 
05.12.08
16:00
(14)Записи по периоду меньше чем КонДата
(15)Не могу на все 3. Вид разный может быть...Объект в пределах договора одинаков.
17 Mitriy
 
05.12.08
16:03
(16) ну хорошо, смотри, на определенную дату у тебя выйдет, например, три записи, которые будут отличаться только ресурсами и измерением Вид (период у них будет совершенно одинаковый)... какая из этих записей, по-твоему, должна быть последней? Если ты не сможешь ответить, то чего ты хочешь от запроса?
18 Vitello
 
05.12.08
16:05
(17)Я понял, поэтому в (13) и спрашиваю, как подобные вещи делаются? К реальной таблице обратиться?
19 НЕА123
 
05.12.08
16:06
прав (15). Попробуй так.

ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1
  ОформленныеБСОСрезПоследних.Договор КАК Договор,

   ОформленныеБСОСрезПоследних.Номер КАК Номер,
   ОформленныеБСОСрезПоследних.Серия КАК Серия
ИЗ
   РегистрСведений.ОформленныеБСО.СрезПоследних(
           &КонДата,
           ) КАК ОформленныеБСОСрезПоследних
ГДЕ
Вид.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыБСО.ПолисОсаго)
               И Наличие = ИСТИНА

УПОРЯДОЧИТЬ ПО
   ОформленныеБСОСрезПоследних.Период УБЫВ) КАК ОформленныеБСОСрезПоследних
ПО ДопсДСП.ИсходныйДоговор = ОформленныеБСОСрезПоследних.Договор

...
20 Mitriy
 
05.12.08
16:07
да обращайся к чему хочешь, только сначала скажи, чем последняя запись отличается от непоследней в твоем понимании...
21 Mort
 
05.12.08
16:07
(18) Никак. В базе не хранится что ты последним ввел, курс доллара на 10 число или курс евро на 10 число.
22 НЕА123
 
05.12.08
16:07
(15) а он и так 1 получает (даже без первых)
23 НЕА123
 
05.12.08
16:09
+(22) ...или нет? пятница....
24 Mitriy
 
05.12.08
16:10
(23) пятница ))
25 Vitello
 
05.12.08
16:13
(20)
На примере, по одному договору:

Период      Вид Номер Серия Наличие
20.04.2007    1   123     А Истина
20.03.2008    1   123     А Ложь
20.03.2008    2   456     А Истина

Хочу получить только эту запись:
20.03.2008    2   456     А Истина
26 Шурик71
 
05.12.08
16:14
(17) У него не та проблема.

А проблема в том, что надо сначала получить срез по всем договорам и по нескольким видам, потом (!) соединить с договорами и только после этого (!) отобрать последний вид...

Автор же в самой ВТ пытается отобрать последний вид, поэтому и не отрабатывает соединение по договорам (последняя запись по другому договору).

(0) Не парься. Без извратов через срез последних не сделаешь.  Делай запрос к самому рег. сведений, и сам организуй срез.
27 Mitriy
 
05.12.08
16:15
(25) здесь я вижу, что можно отсортировать по Номер или по Серия Убыв и взять Первые 1
28 Vitello
 
05.12.08
16:16
(27)Номер и серия могут быть какие угодно, мне их получить надо.
29 Mitriy
 
05.12.08
16:18
(26) значит скорее всего неправильная постановка задачи, читай (26), м.б. это поможет... но взять последнее из того, что фиг знает как сортировать - невозможно, можно взять только то, что попадется...
30 НЕА123
 
05.12.08
16:30
(27) "первые" надо убирать, т.к. будет только 1 строка только с одним договором.
правда в (26).
31 Mitriy
 
05.12.08
16:34
(29) к (28)
32 Vitello
 
08.12.08
11:59
Продолжаю тупить, уважаемые, помогите плз.

Необходимо из РС выдернуть последюю (по периоду) запись, полностью см. выше.

Написал такой вложенный запрос:
...
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1
   ОформленныеБСО.Договор КАК Договор,
   ОформленныеБСО.Серия КАК Серия,
   ОформленныеБСО.Номер КАК Номер
ИЗ
   РегистрСведений.ОформленныеБСО КАК ОформленныеБСО
ГДЕ
   ОформленныеБСО.Наличие
   И ОформленныеБСО.Вид.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыБСО.ПолисОсаго)

УПОРЯДОЧИТЬ ПО
   ОформленныеБСО.Период УБЫВ) КАК ОформленныеБСО
ПО ДопсДСП.ИсходныйДоговор = ОформленныеБСО.Договор
...
Выводит все равно нулл. Убираю ПЕРВЫЕ и Сортировку - берет все записи. Я безнадежен?
33 hhhh
 
08.12.08
12:08
(32) про ПЕРВЫЕ почитай. Вроде должна возвратить одну единственную строчку на весь запрос.
34 Vitello
 
08.12.08
13:07
(33)Так мне того и надо. Только мне не первую, а последнюю надо взять, какая попадется (исходя из условий ес-но).
35 Vitello
 
08.12.08
13:40
мдя...
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.