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

Своеобразный срез последних в запросе

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

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

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

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

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

Двоит иностранца.
Что не так?
Спасибо.
   lodger
 
1 - 29.07.20 - 15:41
очевидно, в одном из измерений
   ГражданствоФизЛиц.НеИмеетПравоНаПенсию,
    ГражданствоФизЛиц.НеЯвляетсяНалоговымРезидентомРФ,
    ГражданствоФизЛиц.НеИмеетПравоНаМедицинскоеСтрахование,
    ГражданствоФизЛиц.Страна,
    ГражданствоФизЛиц.ВидЗастрахованногоЛица,
есть 2 разных записи по ФЛ (при условии, что элемент спр ФЛ совпадает)
   Масянька
 
2 - 29.07.20 - 15:46
(1) Нет, ФЛ одно.
А вообще - отбой: есть стандартный срез последних.
   mikecool
 
3 - 29.07.20 - 15:46
(1) соглашусь с оратором
   mikecool
 
4 - 29.07.20 - 15:46
(2) рука - лицо, мать! )))
   mikecool
 
5 - 29.07.20 - 15:48
(2) все равно дубли?
   Масянька
 
6 - 29.07.20 - 15:49
(3) Просто поверь - нет.
(4) МАТЬ?! Какого банана в СЗВ не используется? Правда, старая УПП, но тем не менее.
(%) В отдельном запросе - нет. Щас, воткну в километровый...
   mikecool
 
7 - 29.07.20 - 15:51
(6) у тебя база на какой скуле?
   acht
 
8 - 29.07.20 - 15:51
(2) Стандартный, он по полю Период. А ты хочешь по ДатаРегистрацииИзменений, которая неизвестно что - измерение/ресурс/реквизит.
   mikecool
 
9 - 29.07.20 - 15:51
я сталкивался - срез последних РС на мс выдает верные данные, на постгри - нет
   Ёпрст
 
10 - 29.07.20 - 15:53
(8) так и есть..и выдает ей кучку записей, ибо ДатаРегистрацииИзменений одна, а вот Период разный..
   Ёпрст
 
11 - 29.07.20 - 15:53
Ничего, допетрит как-нить потом, сама
   dezss
 
12 - 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) ФЛ одно (в справочнике ФЛ).
   mikecool
 
16 - 29.07.20 - 16:01
(14) нет
   mikecool
 
17 - 29.07.20 - 16:02
+16 можно в соединении источников данных скд
   mikecool
 
18 - 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)
   acht
 
23 - 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
   acht
 
27 - 29.07.20 - 16:14
(25) Сделай выборку всего из регистра по этому человеку
   acht
 
28 - 29.07.20 - 16:14
и ты увидишь две строки ДатаРегистрацииИзменений = 17 марта
   Ёпрст
 
29 - 29.07.20 - 16:15
Проще открыть список регистра сведений и установить отбор по этому фл
   Ёпрст
 
30 - 29.07.20 - 16:15
и там оно, наглядно будет, что ле :)
 
 Рекламное место пустует
   acht
 
31 - 29.07.20 - 16:16
(29) Эт если в форму все поля вынесены
   Ёпрст
 
32 - 29.07.20 - 16:17
А так, непонятно. Раз у тебя одно измерение, то нафига ты в первый запрос пихаешь ресурсы ?
   Ёпрст
 
33 - 29.07.20 - 16:18
они у тя разные, вот и видишь ты 2 строки..всегда
   acht
 
34 - 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(ГражданствоФизЛиц.ВидЗастрахованногоЛица, ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ГражданеРФ)) В (ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВысококвалифицированныеСпециалистыИзЕАЭС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыСтрахуемыеФСС), ЗНАЧЕНИЕ(Перечисление.ВидыЗастрахованныхЛицОбязательногоСтрахования.ВременноПребывающиеИностранцыНестрахуемые))
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ КАК ЗастрахованПФР
ПОМЕСТИТЬ ВТГражданство
ИЗ
    (ВЫБРАТЬ
        ВТПериоды.Период КАК ПериодРегистрации,
        ГражданствоФизЛиц.ФизЛицо КАК Физлицо,
        ГражданствоФизЛиц.Период КАК Период
    ИЗ
        ВТПериоды КАК ВТПериоды
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛиц
            ПО (КОНЕЦПЕРИОДА(ВТПериоды.Период, МЕСЯЦ) >= ГражданствоФизЛиц.ДатаРегистрацииИзменений)
    ГДЕ
        ГражданствоФизЛиц.ФизЛицо В
                (ВЫБРАТЬ
                    Организации.ФизЛицо
                ИЗ
                    ВТФизЛицаОрганизаций КАК Организации)
    
    СГРУППИРОВАТЬ ПО
        ГражданствоФизЛиц.ФизЛицо,
        ГражданствоФизЛиц.Период,
        ВТПериоды.Период) КАК СрезПоследнихДат
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛиц
        ПО СрезПоследнихДат.Период = ГражданствоФизЛиц.ДатаРегистрацииИзменений
            И СрезПоследнихДат.Физлицо = ГражданствоФизЛиц.ФизЛицо

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

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


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