Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Срез последних возвращает несколько значений. Как получить последнее значение в запросе

Срез последних возвращает несколько значений. Как получить последнее значение в запросе
Я
   lg2marvel
 
11.04.19 - 17:29
Добрый день, запрос:

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

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

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

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

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

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

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

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

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

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

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

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


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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.