Имя: Пароль:
1C
1С v8
Срез последних возвращает несколько значений. Как получить последнее значение в запросе
0 lg2marvel
 
11.04.19
17:29
Добрый день, запрос:

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

Как получить текущий документ?
1 1Сергей
 
11.04.19
17:31
Надо все измерения указать. В том числе и ВидДокумента
2 lg2marvel
 
11.04.19
17:37
(1) Хорошо:

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

В данном случае получу я всех у кого паспорт, что делать с теми у кого вид на жительство, военный билет и прочие документы?
3 lg2marvel
 
11.04.19
17:37
Брать перебирать все варианты с приоритетом, если результат есть то дальше не выполняем а берем текущее значение?
4 lg2marvel
 
11.04.19
17:38
Может можно как-то по дате добавления записи в регистр сведений отсортировать и выбрать последнее?
5 Вафель
 
11.04.19
17:39
ВЫБРАТЬ ПЕРВЫЕ 1
6 sqr4
 
11.04.19
17:41
Делаешь таблицу приоритетов
1 паспорт
2 вид на жительство
3 военный билет
4 еще чтото
5 ....
грузишь ее в запрос
Затем соединяешь с основной таблицей.
Далее отбираешь по минимальным приоритетам по физ лицам
затем еще раз соединяешь с основной таблицей.

Но т.к у тебя идет отбор по физ лицу, я не пойму что ты паришься
7 Asmody
 
11.04.19
17:42
А кто, позвольте спросить, ДокументыФизическихЛиц в регистр запихал?
8 lg2marvel
 
11.04.19
17:42
(7) ЗУП
9 Вафель
 
11.04.19
17:43
(7) у вас в самописке не так?
10 lg2marvel
 
11.04.19
17:43
(5) ВЫБРАТЬ ПЕРВЫЕ 1
    ДокументыФизическихЛиц.Серия КАК Серия,
    ДокументыФизическихЛиц.Номер КАК Номер,
    ДокументыФизическихЛиц.ДатаВыдачи КАК ДатаВыдачи
    ИЗ
    РегистрСведений.ДокументыФизическихЛиц.срезпоследних(,Физлицо = &Физлицо) КАК ДокументыФизическихЛиц

выдает первое значение

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

выдает первое значение
11 lg2marvel
 
11.04.19
17:44
(9) нет штатный зуп 3.1.8.246
12 sqr4
 
11.04.19
17:44
(7) они же вроде меняются с течением времени
13 lg2marvel
 
11.04.19
17:45
(6) "Но т.к у тебя идет отбор по физ лицу, я не пойму что ты паришься"

Для каждого сотрудника выдает по 3-4 документа (у нас много иностранцев) - в итоге получаю кучу дублированных записей сотрудников в отчет
14 lg2marvel
 
11.04.19
17:46
Можно как-то получить срез на дату?
15 sqr4
 
11.04.19
17:46
(10) сортируй по датевыдачи по убыванию
16 sqr4
 
11.04.19
17:47
(14) можно)
17 lg2marvel
 
11.04.19
17:49
(15) ну это как-то "неправильно" что-ли
18 craxx
 
11.04.19
17:50
(0) Вот знаете, когда ко мне приходят на собеседование программисты, первое тестовое задание, отсекающее дураков - сделать срез последних по произвольному набору реквизитов из произвольной таблицы с полем типа "Дата". Это как раз тот случай
19 sqr4
 
11.04.19
17:50
(17) сформулируй нормально, со всеми буквами, даже нелюбимыми, что нужно.
20 lg2marvel
 
11.04.19
17:50
(16) сп молчит зараза
21 sqr4
 
11.04.19
17:51
(18) я помнится на одном собеседовании так переволновался, что не сделал.
22 sqr4
 
11.04.19
17:52
(18) Причем помнил, что будучи стажером на первом рабочем месте, я решал эту задачу и когда не мог решить, помнил что решал, но совладать с собой не смог.
23 lg2marvel
 
11.04.19
17:53
(18) и как быть? сортировать по датевыдачи и выбирать ПЕРВЫЕ 1?
24 banco
 
11.04.19
17:54
Объясните, что конкретно то хотите получить?
25 lg2marvel
 
11.04.19
17:54
ВЫБРАТЬ ПЕРВЫЕ 1
    ДокументыФизическихЛиц.Серия КАК Серия,
    ДокументыФизическихЛиц.Номер КАК Номер,
    ДокументыФизическихЛиц.ДатаВыдачи КАК ДатаВыдачи
ИЗ
    РегистрСведений.ДокументыФизическихЛиц.СрезПоследних(, Физлицо = &Физлицо) КАК ДокументыФизическихЛиц

УПОРЯДОЧИТЬ ПО
    ДатаВыдачи УБЫВ
26 sqr4
 
11.04.19
17:55
делай как в (6)
27 lg2marvel
 
11.04.19
17:56
(24) (19)  Хочу получить по сотруднику текущие серию, номер и дату выдачи документа. Данные хранятся в периодическом регистре сведений ДокументыФизическихЛиц
28 lg2marvel
 
11.04.19
17:57
(26) если по другому никак, придется
29 banco
 
11.04.19
17:58
(27) какого документа? у физ лица может быть несколько документов, вот вам и программа выдает все последние документы физ лица
30 lg2marvel
 
11.04.19
17:59
(29) хочется конкретно из последнего добавленного
31 sqr4
 
11.04.19
17:59
Перечисли хотябы что там измерения, а что ресурсы, я честно говоря не помню
32 lg2marvel
 
11.04.19
18:03
(31) Измерения Сотрудник и ВидДокумента, остальное ресурсы
33 hhhh
 
11.04.19
18:34
(32) ну тогда только как в (6) других вариантов нет
34 singlych
 
11.04.19
18:41
Вы все еще получаете данные из регистров?
Тогда мы идем к вам.
35 lg2marvel
 
11.04.19
18:53
(33) понял, спасибо
36 ЧессМастер
 
11.04.19
20:03
(18) "сделать срез последних по произвольному набору реквизитов из произвольной таблицы с полем типа "Дата"

Какая то задача странная. Причем тут дата.

Берем запрос

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


Что подставили в &ДатаСреза (на какую дату срез) то и получили в Серия, Номер, ДатаВыдачи.

Как эту задачу можно неправильно решить ?
37 Фрэнки
 
11.04.19
20:14
ну как... Если у регистра несколько измерений, но та срезе будет несколько записей, отличающиеся друг от друга значениями в полях измерений. Это без оглядки на конкретный регистр, а чисто в теории.