Имя: Пароль:
1C
1С v8
Помогите сформировать запрос 1С 8.2 Дописанная
0 ils108
 
18.02.16
07:00
Всем добра!
Помогите написать оптимальный запрос. Изначально надо из
РегистрСведений, в котором есть измерение "слот" (элемент справочника), ресурс "включен" (булево),  и "дата" выбрать те элементе у которых включен = ложь и нет более поздних записей по "слоту" с включен = истина.
1 mehfk
 
18.02.16
07:01
Покажи что уже написал.
2 ils108
 
18.02.16
07:06
ВЫБРАТЬ
    ГУ_СостояниеСлотовОборудования.СлотОборудования
ИЗ
    РегистрСведений.ГУ_СостояниеСлотовОборудования КАК ГУ_СостояниеСлотовОборудования
ГДЕ
    ГУ_СостояниеСлотовОборудования.Регистратор.Дата = &Период
    И ГУ_СостояниеСлотовОборудования.Включен = &Нет

:) пока только это и не могу понять куда шагнуть.
3 mehfk
 
18.02.16
07:08
4 patria0muerte
 
18.02.16
07:13
Читай про срез последних регистра сведений
5 vip03
 
18.02.16
07:37
"дата" - это ресурс или период?
6 ils108
 
18.02.16
07:42
ВЫБРАТЬ
    ГУ_СостояниеСлотовОборудованияСрезПоследних.СлотОборудования
ИЗ
    РегистрСведений.ГУ_СостояниеСлотовОборудования.СрезПоследних(, Включен = &Нет) КАК ГУ_СостояниеСлотовОборудованияСрезПоследних
ГДЕ
    ГУ_СостояниеСлотовОборудованияСрезПоследних.Регистратор.Дата = &Период
7 ils108
 
18.02.16
07:44
(4) спасибо :)
8 ils108
 
18.02.16
07:48
(3) спасибо за ссылку на хорошую книгу!

(5) это ресурс
9 ils108
 
18.02.16
08:03
что-то не то, все равно есть такие слоты где "включен" более поздний
10 patria0muerte
 
18.02.16
08:03
(6) Неправильно.

Правильно - убрать нафиг дату из ресурса. Если РС периодический - то она там не нужна.

И запрос будет выглядеть как:

ВЫБРАТЬ
    ГУ_СостояниеСлотовОборудованияСрезПоследних.СлотОборудования
ИЗ
    РегистрСведений.ГУ_СостояниеСлотовОборудования.СрезПоследних(&Период) КАК ГУ_СостояниеСлотовОборудованияСрезПоследних
ГДЕ
    НЕ ГУ_СостояниеСлотовОборудованияСрезПоследних.Включен
11 2S
 
18.02.16
08:04
а где условие на дату?
12 patria0muerte
 
18.02.16
08:06
(9) Внимательней читай про Регистры сведений и Срез последних. Особенно про то - чем отличаются условия в параметрах виртуальной таблицы и условия в секции ГДЕ.
13 ils108
 
18.02.16
08:14
(10) но при таком варианте если я правильно понимаю не факт, что в интервал от периода до текущей даты не будет включения (т.е. мы это никак не учитываем) просто берем те, что были выключены до наступления "период"
14 ils108
 
18.02.16
08:42
ВЫБРАТЬ
    ГУ_СостояниеСлотовОборудованияСрезПоследних.СлотОборудования,
    ГУ_ДанныеКоммуникацийСрезПоследних.SIMКарта1,
    ГУ_ДанныеКоммуникацийСрезПоследних.SIMКарта2,
    ГУ_СостояниеСлотовОборудованияСрезПоследних.Период
ИЗ
    РегистрСведений.ГУ_СостояниеСлотовОборудования.СрезПоследних КАК ГУ_СостояниеСлотовОборудованияСрезПоследних
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГУ_ДанныеКоммуникаций.СрезПоследних КАК ГУ_ДанныеКоммуникацийСрезПоследних
        ПО ГУ_СостояниеСлотовОборудованияСрезПоследних.СлотОборудования = ГУ_ДанныеКоммуникацийСрезПоследних.СлотОборудования
ГДЕ
    НЕ ГУ_СостояниеСлотовОборудованияСрезПоследних.Включен
    И (ГУ_ДанныеКоммуникацийСрезПоследних.SIMКарта1.ОтключенGPRS = &Нет
            ИЛИ ГУ_ДанныеКоммуникацийСрезПоследних.SIMКарта1.ОтключенGPRS = &Нет)
    И ГУ_СостояниеСлотовОборудованияСрезПоследних.Регистратор.Дата < &Период
    И (ГУ_ДанныеКоммуникацийСрезПоследних.SIMКарта1.ПолнаяБлокировка = &Нет
            ИЛИ ГУ_ДанныеКоммуникацийСрезПоследних.SIMКарта2.ПолнаяБлокировка = &Нет)
15 ils108
 
18.02.16
08:43
Вот так хорошо работает
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший