Имя: Пароль:
1C
1С v8
Не срабатывают необязательные условия из компоновки данных
0 slafor
 
14.07.22
15:33
УНФ 1.6. Конфигурация доработанная.

Есть запрос на СКД, в котором я использую необязательные условия в компоновке данных (с фигурными скобками). Но они почему-то не срабатывают. Если пишу этот же запрос в консоли запросов и ставлю эти условия как обычные с оператором ГДЕ, то все работает правильно. А через СКД - нет. Что я делаю не так?

Вот скрины:
1. Не срабатывают условия по дате и по сотрудникам https://disk.yandex.ru/i/sYniu-D3wlu-qw
2. Параметры необязательных условий указаны в параметрах СКД: https://disk.yandex.ru/i/2YC-YnIrrnP_jQ
https://disk.yandex.ru/i/pdvWfyRpbM9qEw

Вот сам запрос, условия задаются во второй временной таблице:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    НаличиеФайлов.ОбъектСФайлами.Ссылка КАК ДокументУчастника,
    ДвоичныеДанныеФайлов.ДвоичныеДанныеФайла КАК ИзображенияДокументов
ПОМЕСТИТЬ ДвоичныеДанныеИзображения
ИЗ
    РегистрСведений.НаличиеФайлов КАК НаличиеФайлов
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДвоичныеДанныеФайлов КАК ДвоичныеДанныеФайлов
        ПО НаличиеФайлов.ОбъектСФайлами = ДвоичныеДанныеФайлов.Файл.ВладелецФайла
ГДЕ
    ТИПЗНАЧЕНИЯ(НаличиеФайлов.ОбъектСФайлами.Ссылка) = ТИП(Документ.ДОП_ДокументУчастника)
    И НаличиеФайлов.ЕстьФайлы = ИСТИНА
    И ДвоичныеДанныеФайлов.Файл.ПометкаУдаления = ЛОЖЬ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДвоичныеДанныеИзображения.ИзображенияДокументов КАК ИзображенияДокументов,
    ДОП_ДокументУчастника.Ссылка КАК ДокументУчастника,
    ДОП_ДокументУчастника.Сотрудник КАК Сотрудник,
    ДОП_ДокументУчастника.НаправлениеДеятельности КАК НаправлениеДеятельности,
    ДОП_ДокументУчастника.Описание КАК Описание,
    ДОП_ДокументУчастника.БессрочныйДокумент КАК БессрочныйДокумент,
    ДОП_ДокументУчастника.ДействуетС КАК ДействуетС,
    ДОП_ДокументУчастника.ДействуетПо КАК ДействуетПо,
    ДОП_ДокументУчастника.НеИспользовать КАК НеИспользовать
ПОМЕСТИТЬ ДвоичныеДанные
ИЗ
    Документ.ДОП_ДокументУчастника КАК ДОП_ДокументУчастника
        ЛЕВОЕ СОЕДИНЕНИЕ ДвоичныеДанныеИзображения КАК ДвоичныеДанныеИзображения
        ПО (ДвоичныеДанныеИзображения.ДокументУчастника = ДОП_ДокументУчастника.Ссылка)
ГДЕ
    ДОП_ДокументУчастника.НеИспользовать = ЛОЖЬ
{ГДЕ
    (ДОП_ДокументУчастника.Сотрудник = &Сотрудник) КАК Сотрудник,
    (ДОП_ДокументУчастника.НаправлениеДеятельности = &НаправлениеДеятельности) КАК НаправлениеДеятельности,
    (ВЫБОР
            КОГДА ДОП_ДокументУчастника.БессрочныйДокумент = ЛОЖЬ
                ТОГДА ДОП_ДокументУчастника.ДействуетС <= &ДатаОтчета
                        И ДОП_ДокументУчастника.ДействуетПо >= &ДатаОтчета
            ИНАЧЕ ДОП_ДокументУчастника.ДействуетС <= &ДатаОтчета
        КОНЕЦ) КАК ДатаОтчета}
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДвоичныеДанные.ИзображенияДокументов КАК ИзображенияДокументов,
    ДвоичныеДанные.ДокументУчастника КАК ДокументУчастника,
    ДвоичныеДанные.ДействуетПо КАК ДействуетПо,
    ДвоичныеДанные.Сотрудник КАК Сотрудник,
    ДвоичныеДанные.Описание КАК Описание,
    ДОП_НаправленияИДолжности.СтажСпециальность КАК СтажСпециальность,
    ДОП_НаправленияИДолжности.Должность КАК Должность
ИЗ
    ДвоичныеДанные КАК ДвоичныеДанные
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДОП_НаправленияИДолжности КАК ДОП_НаправленияИДолжности
        ПО ДвоичныеДанные.Сотрудник = ДОП_НаправленияИДолжности.Сотрудник
            И ДвоичныеДанные.НаправлениеДеятельности = ДОП_НаправленияИДолжности.НаправлениеДеятельности
1 6awkup_true
 
14.07.22
15:37
Убери Как сотрудник, Как НаправлениеДеятельности и Как ДатаОтчета
2 youalex
 
14.07.22
15:43
А Отбор ты устанавливаешь на ДатаОтчета?
3 slafor
 
14.07.22
15:46
(1) Спасибо, другие результаты стал выдавать.
А почему, если не секрет? :) Просто я брал из примера, там так и было. И если в условиях на закладке компоновка данных пишешь Представление, то он сам эти КАК туда добавляет.

(2) Отбор я вообще убрал, у меня все в необязательных параметрах задается.
4 6awkup_true
 
14.07.22
15:47
(3) Скорее всего из за пересечения имен. проблема старая и постоянно встречается
5 youalex
 
14.07.22
15:59
Я так понимаю, когда указываешь в {ГДЕ} псевдоним КАК - ты определяешь поле отбора, и обязательность параметров зависит от того, есть ли отбор по этому полю.
Т.е. твое условие преобразуется (сокращаю)  в ГДЕ ДОП_ДокументУчастника.ДействуетПо >= &ДатаОтчета = Истина //Истина - значение элемента отбора
А если псевдоним не указывать - то будет просто ДОП_ДокументУчастника.ДействуетПо >= &ДатаОтчета