Имя: Пароль:
1C
 
Какое условие выбрать для соединения таблиц?
0 ДНН
 
04.06.19
11:17
Есть 2 таблицы.
В первой 2 колонки: Номенклатура и Серия.
Во второй 4 колонки: Серия, Номер сертификата, Дата начала действия, Дата окончания действия. При этом у одной серии может быть несколько номеров сертификата. Для того чтобы получить последний номер таблица упорядочена по датам окончания и начала действия сертификата.
Теперь нужно связать эти 2 таблицы таким образом, чтобы к первой таблице присоединился только последний номер сертификата. Какое условие указать?
Кстати, это СКД может быть через несколько наборов данных можно это сделать?
Спасибо.
1 RomanYS
 
04.06.19
11:21
Убрать из второй таблицы не актуальные сертификаты
2 ДНН
 
04.06.19
11:24
(1) Как? Сертификаты получаются на дату, то есть выбираю все сертификаты, у которым дата начала меньше или равно текущей даты и дата окончания больше или равно текущей. Затем сортирую по датам. Вот пример запроса из типовой КА 1.1

ТекстЗапроса = "
        |ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    СертификацияНоменклатуры.ДатаСертификата,
        |    СертификацияНоменклатуры.НомерСертификата,
        |    СертификацияНоменклатуры.ДатаНачала,
        |    СертификацияНоменклатуры.ДатаОкончания,
        |    ВЫБОР
        |        КОГДА СертификацияНоменклатуры.ДатаОкончания = &ПустДата
        |            ТОГДА &ДатаМакс
        |        ИНАЧЕ СертификацияНоменклатуры.ДатаОкончания
        |    КОНЕЦ КАК ДатаСортКон,
        |    ВЫБОР
        |        КОГДА СертификацияНоменклатуры.ДатаНачала = &ПустДата
        |            ТОГДА &ДатаМакс
        |        ИНАЧЕ СертификацияНоменклатуры.ДатаНачала
        |    КОНЕЦ КАК ДатаСортНач,
        |    СертификацияНоменклатуры.Регистратор КАК Регистратор,
        |    СертификацияНоменклатуры.Период КАК Период
        |ИЗ
        |    РегистрСведений.СертификацияНоменклатуры КАК СертификацияНоменклатуры
        |ГДЕ
        |    (СертификацияНоменклатуры.ДатаНачала <= &КонДата
        |            ИЛИ СертификацияНоменклатуры.ДатаНачала = &ПустДата)
        |    И (СертификацияНоменклатуры.ДатаОкончания >= &КонДата
        |            ИЛИ СертификацияНоменклатуры.ДатаОкончания = &ПустДата)
        |    И СертификацияНоменклатуры.СерияНоменклатуры = &Серия
        |    И СертификацияНоменклатуры.ВидСертификата = &ВидСертификата
        |    И СертификацияНоменклатуры.СостояниеСертификации = &Состояние
        |
        |УПОРЯДОЧИТЬ ПО
        |    ДатаСортКон УБЫВ,
        |    ДатаСортНач УБЫВ";
3 mistеr
 
04.06.19
11:24
(0) Это фактически срез последних. Схема:

1) для каждой серии выбрать последнюю дату сретификата;
2) получить всю строку с серитфикатом по этой дате;
3) соединить с первой таблицей.
4 bootini
 
04.06.19
11:24
Максимум (ДатаСертификата)
5 ДНН
 
04.06.19
11:24
Но там для одной серии, а я хочу запросом сразу для всех серий
6 mistеr
 
04.06.19
11:31
(5) Что мешает?

  ГДЕ Серия В (ВЫБРАТЬ Серия ИЗ Таблица1)
7 catena
 
04.06.19
11:31
(5)Запросом для всех серий
1) для каждой серии выбрать последнюю дату сретификата;
2) получить всю строку с серитфикатом по этой дате;
3) соединить с первой таблицей.
8 RomanYS
 
04.06.19
11:32
(2) Регистр СертификацияНоменклатуры в УПП/КА1 периодический - можно просто взять срез
9 ДНН
 
04.06.19
12:33
(7) спасибо, так и сделал