Имя: Пароль:
1C
1С v8
Своеобразный срез последних в запросе
,
0 Масянька
 
29.07.20
15:39
День добрый!
Есть РС (периодический, независимый) - ГражданствоФизЛиц.
Запрос:

ВЫБРАТЬ
    ГражданствоФизЛиц.ФизЛицо,
    ГражданствоФизЛиц.НеИмеетПравоНаПенсию,
    ГражданствоФизЛиц.НеЯвляетсяНалоговымРезидентомРФ,
    ГражданствоФизЛиц.НеИмеетПравоНаМедицинскоеСтрахование,
    ГражданствоФизЛиц.Страна,
    ГражданствоФизЛиц.ВидЗастрахованногоЛица,
    МАКСИМУМ(ГражданствоФизЛиц.ДатаРегистрацииИзменений) КАК ДатаРегистрацииИзменений
ПОМЕСТИТЬ СрезПоследних
ИЗ
    РегистрСведений.ГражданствоФизЛиц КАК ГражданствоФизЛиц
ГДЕ
    ГражданствоФизЛиц.ДатаРегистрацииИзменений <= &ДатаСреза

СГРУППИРОВАТЬ ПО
    ГражданствоФизЛиц.ФизЛицо,
    ГражданствоФизЛиц.НеИмеетПравоНаПенсию,
    ГражданствоФизЛиц.НеЯвляетсяНалоговымРезидентомРФ,
    ГражданствоФизЛиц.НеИмеетПравоНаМедицинскоеСтрахование,
    ГражданствоФизЛиц.Страна,
    ГражданствоФизЛиц.ВидЗастрахованногоЛица

ИНДЕКСИРОВАТЬ ПО
    ГражданствоФизЛиц.ФизЛицо,
    ДатаРегистрацииИзменений
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СрезПоследних.ФизЛицо,
    СрезПоследних.ДатаРегистрацииИзменений
ИЗ
    СрезПоследних КАК СрезПоследних
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц КАК ГражданствоФизЛиц
        ПО СрезПоследних.ФизЛицо = ГражданствоФизЛиц.ФизЛицо
            И СрезПоследних.ДатаРегистрацииИзменений = ГражданствоФизЛиц.ДатаРегистрацииИзменений

Двоит иностранца.
Что не так?
Спасибо.
1 lodger
 
29.07.20
15:41
очевидно, в одном из измерений
   ГражданствоФизЛиц.НеИмеетПравоНаПенсию,
    ГражданствоФизЛиц.НеЯвляетсяНалоговымРезидентомРФ,
    ГражданствоФизЛиц.НеИмеетПравоНаМедицинскоеСтрахование,
    ГражданствоФизЛиц.Страна,
    ГражданствоФизЛиц.ВидЗастрахованногоЛица,
есть 2 разных записи по ФЛ (при условии, что элемент спр ФЛ совпадает)
2 Масянька
 
29.07.20
15:46
(1) Нет, ФЛ одно.
А вообще - отбой: есть стандартный срез последних.
3 mikecool
 
29.07.20
15:46
(1) соглашусь с оратором
4 mikecool
 
29.07.20
15:46
(2) рука - лицо, мать! )))
5 mikecool
 
29.07.20
15:48
(2) все равно дубли?
6 Масянька
 
29.07.20
15:49
(3) Просто поверь - нет.
(4) МАТЬ?! Какого банана в СЗВ не используется? Правда, старая УПП, но тем не менее.
(%) В отдельном запросе - нет. Щас, воткну в километровый...
7 mikecool
 
29.07.20
15:51
(6) у тебя база на какой скуле?
8 acht
 
29.07.20
15:51
(2) Стандартный, он по полю Период. А ты хочешь по ДатаРегистрацииИзменений, которая неизвестно что - измерение/ресурс/реквизит.
9 mikecool
 
29.07.20
15:51
я сталкивался - срез последних РС на мс выдает верные данные, на постгри - нет
10 Ёпрст
 
29.07.20
15:53
(8) так и есть..и выдает ей кучку записей, ибо ДатаРегистрацииИзменений одна, а вот Период разный..
11 Ёпрст
 
29.07.20
15:53
Ничего, допетрит как-нить потом, сама
12 dezss
 
29.07.20
15:53
Структуру регистра в студию!
13 Масянька
 
29.07.20
16:00
(7) МС.
14 Масянька
 
29.07.20
16:01
А в стандартном срезе последних можно дата среза задавать из ВТ (временной таблицы)?
15 Масянька
 
29.07.20
16:01
(1) ФЛ одно (в справочнике ФЛ).
16 mikecool
 
29.07.20
16:01
(14) нет
17 mikecool
 
29.07.20
16:02
+16 можно в соединении источников данных скд
18 mikecool
 
29.07.20
16:04
а в (0)надо брать максимум от периода
19 Масянька
 
29.07.20
16:04
(17) Вот кусок километрового:

ВЫБРАТЬ
    СрезПоследнихДат.ПериодРегистрации КАК ПериодРегистрации,
    СрезПоследнихДат.Физлицо КАК Физлицо,
    ГражданствоФизЛиц.Страна,
    ВЫБОР
        КОГДА ГражданствоФизЛиц.ВидЗастрахованногоЛица В (ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыСтрахуемыеФСС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцы), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВысококвалифицированныеСпециалистыПостоянноПроживающие), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВысококвалифицированныеСпециалистыВременноПроживающие))
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК НеИмеетПравоНаСтрахованиеФОМС,
    ВЫБОР
        КОГДА СрезПоследнихДат.ПериодРегистрации < &ДатаСтрахованияВсехВременноПребывающих
            ТОГДА ГражданствоФизЛиц.НеИмеетПравоНаПенсию
        КОГДА ЕСТЬNULL(ГражданствоФизЛиц.ВидЗастрахованногоЛица, ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ГражданеРФ)) В (ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВысококвалифицированныеСпециалистыИзЕАЭС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыСтрахуемыеФСС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые))
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК НеИмеетПравоНаСтрахованиеПФР,
    ВЫБОР
        КОГДА СрезПоследнихДат.ПериодРегистрации < &ДатаСтрахованияВсехВременноПребывающих
            ТОГДА ГражданствоФизЛиц.НеИмеетПравоНаПенсию
        КОГДА ЕСТЬNULL(ГражданствоФизЛиц.ВидЗастрахованногоЛица, ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ГражданеРФ)) = ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые)
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК НеИмеетПравоНаСтрахованиеФСС,
    ГражданствоФизЛиц.ВидЗастрахованногоЛица,
    ВЫБОР
        КОГДА ЕСТЬNULL(ГражданствоФизЛиц.ВидЗастрахованногоЛица, ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ГражданеРФ)) В (ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыПризнанныеБеженцами), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыСтрахуемыеФСС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцы), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые))
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ КАК ЗастрахованФСС,
    ВЫБОР
        КОГДА СрезПоследнихДат.ПериодРегистрации <= &ДатаСтрахованияВсехВременноПребывающих
            ТОГДА ЛОЖЬ
        КОГДА ЕСТЬNULL(ГражданствоФизЛиц.ВидЗастрахованногоЛица, ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ГражданеРФ)) В (ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцы), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыПризнанныеБеженцами), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыСтрахуемыеФСС))
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК ЗастрахованФССкакИностранец,
    ВЫБОР
        КОГДА ЕСТЬNULL(ГражданствоФизЛиц.ВидЗастрахованногоЛица, ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ГражданеРФ)) В (ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВысококвалифицированныеСпециалистыВременноПроживающие), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВысококвалифицированныеСпециалистыПостоянноПроживающие), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцы), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыСтрахуемыеФСС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые))
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ КАК ЗастрахованФОМС,
    ВЫБОР
        КОГДА СрезПоследнихДат.ПериодРегистрации <= &ДатаСтрахованияВсехВременноПребывающих
                И ЕСТЬNULL(ГражданствоФизЛиц.ВидЗастрахованногоЛица, ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ГражданеРФ)) В (ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыПризнанныеБеженцами), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцы), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВысококвалифицированныеСпециалистыИзЕАЭС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыСтрахуемыеФСС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые))
            ТОГДА ЛОЖЬ
        КОГДА СрезПоследнихДат.ПериодРегистрации > &ДатаСтрахованияВсехВременноПребывающих
                И ЕСТЬNULL(ГражданствоФизЛиц.ВидЗастрахованногоЛица, ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ГражданеРФ)) В (ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВысококвалифицированныеСпециалистыИзЕАЭС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыСтрахуемыеФСС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые))
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ КАК ЗастрахованПФР
ПОМЕСТИТЬ ВТГражданство
ИЗ
    (ВЫБРАТЬ
        ВТПериоды.Период КАК ПериодРегистрации,
        ГражданствоФизЛиц.ФизЛицо КАК Физлицо,
        ГражданствоФизЛиц.Период КАК Период
    ИЗ
        ВТПериоды КАК ВТПериоды
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛиц
            ПО (КОНЕЦПЕРИОДА(ВТПериоды.Период, МЕСЯЦ) >= ГражданствоФизЛиц.ДатаРегистрацииИзменений)
    ГДЕ
        ГражданствоФизЛиц.ФизЛицо В
                (ВЫБРАТЬ
                    Организации.ФизЛицо
                ИЗ
                    ВТФизЛицаОрганизаций КАК Организации)
    
    СГРУППИРОВАТЬ ПО
        ГражданствоФизЛиц.ФизЛицо,
        ГражданствоФизЛиц.Период,
        ВТПериоды.Период) КАК СрезПоследнихДат
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛиц
        ПО СрезПоследнихДат.Период = ГражданствоФизЛиц.ДатаРегистрацииИзменений
            И СрезПоследнихДат.Физлицо = ГражданствоФизЛиц.ФизЛицо

ИНДЕКСИРОВАТЬ ПО
    Физлицо,
    ПериодРегистрации


РегистрСведений.ГражданствоФизЛиц.СрезПоследних нужно дату среза сделать по КОНЕЦПЕРИОДА(ВТПериоды.Период, МЕСЯЦ).
Как?
20 Ёпрст
 
29.07.20
16:05
(0) во второй запрос добавь, получишь ответ о задвоении

ГражданствоФизЛиц.Период,
21 Масянька
 
29.07.20
16:07
(18) ВЫБРАТЬ
    ГражданствоФизЛиц.ФизЛицо,
    ГражданствоФизЛиц.НеИмеетПравоНаПенсию,
    ГражданствоФизЛиц.НеЯвляетсяНалоговымРезидентомРФ,
    ГражданствоФизЛиц.НеИмеетПравоНаМедицинскоеСтрахование,
    ГражданствоФизЛиц.Страна,
    ГражданствоФизЛиц.ВидЗастрахованногоЛица,
    МАКСИМУМ(ГражданствоФизЛиц.Период) КАК ДатаРегистрацииИзменений
ПОМЕСТИТЬ СрезПоследних
ИЗ
    РегистрСведений.ГражданствоФизЛиц КАК ГражданствоФизЛиц
ГДЕ
    ГражданствоФизЛиц.ДатаРегистрацииИзменений <= &ДатаСреза

СГРУППИРОВАТЬ ПО
    ГражданствоФизЛиц.ФизЛицо,
    ГражданствоФизЛиц.НеИмеетПравоНаПенсию,
    ГражданствоФизЛиц.НеЯвляетсяНалоговымРезидентомРФ,
    ГражданствоФизЛиц.НеИмеетПравоНаМедицинскоеСтрахование,
    ГражданствоФизЛиц.Страна,
    ГражданствоФизЛиц.ВидЗастрахованногоЛица

ИНДЕКСИРОВАТЬ ПО
    ГражданствоФизЛиц.ФизЛицо,
    ДатаРегистрацииИзменений
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СрезПоследних.ФизЛицо,
    СрезПоследних.ДатаРегистрацииИзменений
ИЗ
    СрезПоследних КАК СрезПоследних
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц КАК ГражданствоФизЛиц
        ПО СрезПоследних.ФизЛицо = ГражданствоФизЛиц.ФизЛицо
            И СрезПоследних.ДатаРегистрацииИзменений = ГражданствоФизЛиц.ДатаРегистрацииИзменений

Двоит...
22 Ёпрст
 
29.07.20
16:07
(21) см. (20)
23 acht
 
29.07.20
16:10
(21) > Двоит
Данные одинаковые показывает?
24 Масянька
 
29.07.20
16:10
25 Масянька
 
29.07.20
16:11
+ (24) Первые две строки - это один человек. Россиянином стал 17.03.2020
26 Масянька
 
29.07.20
16:12
Структура регистра - http://pics.rsh.ru/img/_r6x04r68.jpg
27 acht
 
29.07.20
16:14
(25) Сделай выборку всего из регистра по этому человеку
28 acht
 
29.07.20
16:14
и ты увидишь две строки ДатаРегистрацииИзменений = 17 марта
29 Ёпрст
 
29.07.20
16:15
Проще открыть список регистра сведений и установить отбор по этому фл
30 Ёпрст
 
29.07.20
16:15
и там оно, наглядно будет, что ле :)
31 acht
 
29.07.20
16:16
(29) Эт если в форму все поля вынесены
32 Ёпрст
 
29.07.20
16:17
А так, непонятно. Раз у тебя одно измерение, то нафига ты в первый запрос пихаешь ресурсы ?
33 Ёпрст
 
29.07.20
16:18
они у тя разные, вот и видишь ты 2 строки..всегда
34 acht
 
29.07.20
16:19
(32) Все там понятно. Период - дополнительное измерение. По физику есть две записи с ДатаРегистрацииИзменений == 17 марта, причем у одной из них скорей всего Период тоже 17 марта.
35 Масянька
 
29.07.20
16:21
(28) Одна строка.
36 Масянька
 
29.07.20
16:23
(32) Это не я пихаю.
Расчет РСВ (регламент).
Фигни до фига. Половину фигни выгребла.
Вот иностранец - двоит...
Это -

ВЫБРАТЬ
    СрезПоследнихДат.ПериодРегистрации КАК ПериодРегистрации,
    СрезПоследнихДат.Физлицо КАК Физлицо,
    ГражданствоФизЛиц.Страна,
    ВЫБОР
        КОГДА ГражданствоФизЛиц.ВидЗастрахованногоЛица В (ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыСтрахуемыеФСС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцы), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВысококвалифицированныеСпециалистыПостоянноПроживающие), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВысококвалифицированныеСпециалистыВременноПроживающие))
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК НеИмеетПравоНаСтрахованиеФОМС,
    ВЫБОР
        КОГДА СрезПоследнихДат.ПериодРегистрации < &ДатаСтрахованияВсехВременноПребывающих
            ТОГДА ГражданствоФизЛиц.НеИмеетПравоНаПенсию
        КОГДА ЕСТЬNULL(ГражданствоФизЛиц.ВидЗастрахованногоЛица, ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ГражданеРФ)) В (ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВысококвалифицированныеСпециалистыИзЕАЭС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыСтрахуемыеФСС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые))
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК НеИмеетПравоНаСтрахованиеПФР,
    ВЫБОР
        КОГДА СрезПоследнихДат.ПериодРегистрации < &ДатаСтрахованияВсехВременноПребывающих
            ТОГДА ГражданствоФизЛиц.НеИмеетПравоНаПенсию
        КОГДА ЕСТЬNULL(ГражданствоФизЛиц.ВидЗастрахованногоЛица, ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ГражданеРФ)) = ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые)
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК НеИмеетПравоНаСтрахованиеФСС,
    ГражданствоФизЛиц.ВидЗастрахованногоЛица,
    ВЫБОР
        КОГДА ЕСТЬNULL(ГражданствоФизЛиц.ВидЗастрахованногоЛица, ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ГражданеРФ)) В (ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыПризнанныеБеженцами), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыСтрахуемыеФСС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцы), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые))
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ КАК ЗастрахованФСС,
    ВЫБОР
        КОГДА СрезПоследнихДат.ПериодРегистрации <= &ДатаСтрахованияВсехВременноПребывающих
            ТОГДА ЛОЖЬ
        КОГДА ЕСТЬNULL(ГражданствоФизЛиц.ВидЗастрахованногоЛица, ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ГражданеРФ)) В (ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцы), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыПризнанныеБеженцами), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыСтрахуемыеФСС))
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК ЗастрахованФССкакИностранец,
    ВЫБОР
        КОГДА ЕСТЬNULL(ГражданствоФизЛиц.ВидЗастрахованногоЛица, ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ГражданеРФ)) В (ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВысококвалифицированныеСпециалистыВременноПроживающие), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВысококвалифицированныеСпециалистыПостоянноПроживающие), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцы), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыСтрахуемыеФСС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые))
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ КАК ЗастрахованФОМС,
    ВЫБОР
        КОГДА СрезПоследнихДат.ПериодРегистрации <= &ДатаСтрахованияВсехВременноПребывающих
                И ЕСТЬNULL(ГражданствоФизЛиц.ВидЗастрахованногоЛица, ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ГражданеРФ)) В (ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыПризнанныеБеженцами), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцы), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВысококвалифицированныеСпециалистыИзЕАЭС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыСтрахуемыеФСС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые))
            ТОГДА ЛОЖЬ
        КОГДА СрезПоследнихДат.ПериодРегистрации > &ДатаСтрахованияВсехВременноПребывающих
                И ЕСТЬNULL(ГражданствоФизЛиц.ВидЗастрахованногоЛица, ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ГражданеРФ)) В (ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВысококвалифицированныеСпециалистыИзЕАЭС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыСтрахуемыеФСС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые))
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ КАК ЗастрахованПФР
ПОМЕСТИТЬ ВТГражданство
ИЗ
    (ВЫБРАТЬ
        ВТПериоды.Период КАК ПериодРегистрации,
        ГражданствоФизЛиц.ФизЛицо КАК Физлицо,
        ГражданствоФизЛиц.Период КАК Период
    ИЗ
        ВТПериоды КАК ВТПериоды
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛиц
            ПО (КОНЕЦПЕРИОДА(ВТПериоды.Период, МЕСЯЦ) >= ГражданствоФизЛиц.ДатаРегистрацииИзменений)
    ГДЕ
        ГражданствоФизЛиц.ФизЛицо В
                (ВЫБРАТЬ
                    Организации.ФизЛицо
                ИЗ
                    ВТФизЛицаОрганизаций КАК Организации)
    
    СГРУППИРОВАТЬ ПО
        ГражданствоФизЛиц.ФизЛицо,
        ГражданствоФизЛиц.Период,
        ВТПериоды.Период) КАК СрезПоследнихДат
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛиц
        ПО СрезПоследнихДат.Период = ГражданствоФизЛиц.ДатаРегистрацииИзменений
            И СрезПоследнихДат.Физлицо = ГражданствоФизЛиц.ФизЛицо

ИНДЕКСИРОВАТЬ ПО
    Физлицо,
    ПериодРегистрации
;

кусок запроса (большой), где как раз двоит.
Повторю - это расчет страховых...
37 acht
 
29.07.20
16:23
(35) Ну тогда смотри на свою времянку для "среза". (32) прав - разные комбинации ресурсов регистра дают тебе две строки с однаковой максимальной для них датой
38 Ёпрст
 
29.07.20
16:32
(36) короче, в первом запросе получай просто физлицо и дату свою, во втором все остальные ресурсы. Усё
39 Ёпрст
 
29.07.20
16:33
Наслаждайся, кушай печенки
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший