Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Передача в запрос параметра для отображения в динамическом списке

Передача в запрос параметра для отображения в динамическом списке
Я
   Bilkinbill
 
11.10.18 - 12:11
Всем привет!
Есть запрос, одним из полем которого (Ознакомление) определяется открывался ли документ пользователем (запись в регистре сведений).
Необходимо в динамическом списке документов в соответствующем поле выводить запись "Прочитано" или "не прочитано".

Вопрос: В процедуре ПриОткрытии() пишу:
СписокДокументыДляСогласования.Параметры.УстановитьЗначениеПараметра("Пользователь",ПараметрыСеанса.КанцТекущееДолжностноеЛицо);
СписокДокументыДляСогласования.Параметры.УстановитьЗначениеПараметра("ЭтотДок",ТекСтр(Элементы.СписокДокументыДляСогласования.ТекущиеяДанные));

Но в динам.списке в колонке "Ознакомление" пишется неверная запись (из регистра)...Что я делаю не так?


ВЫБРАТЬ РАЗЛИЧНЫЕ
    Канц_РКК.Ссылка КАК Ссылка,
    Канц_РКК.ВидДокумента КАК ВидДокумента,
    Канц_РККМаршрут.Получатель КАК Получатель,
    Канц_РККСогласование.ДолжностноеЛицо КАК ДолжностноеЛицо,
    Канц_РКК.СтатусСогласования КАК СтатусСогласования,
    Канц_РККСогласование.Решение КАК Решение,
    ВложенныйЗапрос.Ознакомление КАК Ознакомление
ИЗ
    Документ.Канц_РКК КАК Канц_РКК
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Канц_РКК.Маршрут КАК Канц_РККМаршрут
        ПО Канц_РКК.Ссылка = Канц_РККМаршрут.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Канц_РКК.Согласование КАК Канц_РККСогласование
        ПО Канц_РКК.Ссылка = Канц_РККСогласование.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ВЫБОР
                КОГДА Канц_ОзнакомлениеСДокументами.ДолжностноеЛицо <> &Пользователь
                        И Канц_ОзнакомлениеСДокументами.Документ = &ЭтотДок
                    ТОГДА "Не прочитано"
                ИНАЧЕ "прочитано"
            КОНЕЦ КАК Ознакомление,
            Канц_ОзнакомлениеСДокументами.Документ КАК Документ
        ИЗ
            РегистрСведений.Канц_ОзнакомлениеСДокументами КАК Канц_ОзнакомлениеСДокументами) КАК ВложенныйЗапрос
        ПО Канц_РКК.Ссылка = ВложенныйЗапрос.Документ.Ссылка
ГДЕ
    (Канц_РККМаршрут.Получатель = &Пользователь
            ИЛИ Канц_РККСогласование.ДолжностноеЛицо = &Пользователь)
 
 
   Bilkinbill
 
1 - 11.10.18 - 12:13
(1)  В процедуре ПриОткрытии() пишу:
СписокДокументыДляСогласования.Параметры.УстановитьЗначениеПараметра("Пользователь",ПараметрыСеанса.КанцТекущееДолжностноеЛицо);
СписокДокументыДляСогласования.Параметры.УстановитьЗначениеПараметра("ЭтотДок",Элементы.СписокДокументыДляСогласования.ТекущиеДанные));
   hhhh
 
2 - 11.10.18 - 12:15
(1) ну Элементы.СписокДокументыДляСогласования.ТекущиеДанные - это не документ. Почему вы это в ЭтотДок пихаете?
   Bilkinbill
 
3 - 11.10.18 - 12:17
(2) Пробовал Элементы.СписокДокументыДляСогласования.ТекущиеДанные.ссылка
Ошибка
   hhhh
 
4 - 11.10.18 - 12:19
(3) значит забыли колонку "Ссылка" добавить в этот список.
   aleks_default
 
5 - 11.10.18 - 12:20
Зачем вам вообще нужен ЭтотДок? Нужно просто соединить список документов с записями регистров по ссылке и вывести поле Ознакомление - все.
   catena
 
6 - 11.10.18 - 12:27
Параметр запроса - из строки результата запроса? Это не серьезно.
   Bilkinbill
 
7 - 11.10.18 - 16:30
(5) в этом случае (если убрать условие по ЭтомуДоку) возникает ошибка "Обнаружено дублирование ключевых значений в колонках Ссылка"....если кончено запрос корректный

ВЫБРАТЬ РАЗЛИЧНЫЕ
    Канц_РКК.Ссылка КАК Ссылка,
    Канц_РКК.ВидДокумента КАК ВидДокумента,
    Канц_РКК.ВидДокумента.Родитель КАК ВидДокументаРодитель,
    Канц_РККМаршрут.Получатель КАК Получатель,
    Канц_РККСогласование.ДолжностноеЛицо КАК ДолжностноеЛицо,
    Канц_РКК.СтатусСогласования КАК СтатусСогласования,
    Канц_РККСогласование.Решение КАК Решение,
    ВложенныйЗапрос.Ознакомление КАК Ознакомление
ИЗ
    Документ.Канц_РКК КАК Канц_РКК
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Канц_РКК.Маршрут КАК Канц_РККМаршрут
        ПО Канц_РКК.Ссылка = Канц_РККМаршрут.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Канц_РКК.Согласование КАК Канц_РККСогласование
        ПО Канц_РКК.Ссылка = Канц_РККСогласование.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ВЫБОР
                КОГДА Канц_ОзнакомлениеСДокументами.ДолжностноеЛицо <> &Пользователь
                    ТОГДА "Не прочитано"
                ИНАЧЕ "прочитано"
            КОНЕЦ КАК Ознакомление,
            Канц_ОзнакомлениеСДокументами.Документ КАК Документ
        ИЗ
            РегистрСведений.Канц_ОзнакомлениеСДокументами КАК Канц_ОзнакомлениеСДокументами) КАК ВложенныйЗапрос
        ПО Канц_РКК.Ссылка = ВложенныйЗапрос.Документ.Ссылка
ГДЕ
    (Канц_РККМаршрут.Получатель = &Пользователь
            ИЛИ Канц_РККСогласование.ДолжностноеЛицо = &Пользователь)
   Bilkinbill
 
8 - 11.10.18 - 16:31
(4) не забыл
   Bilkinbill
 
9 - 11.10.18 - 16:32
(6) предложите более серьезное решение
   catena
 
10 - 12.10.18 - 08:04
(7)Условием связи на левое соединение. Дублирование записей - это уже другой вопрос, смотрите, из-за каких значений дублируется и какие связи нужно добавить
 
 Рекламное место пустует
   Bilkinbill
 
11 - 12.10.18 - 09:33
(10) дублируется полем ссылка видимо..т.к. без условия с ЭтотДок появляются 2 записи...условие связи по полю ссылка на документ из дух таблиц
   catena
 
12 - 12.10.18 - 09:43
(11)Вопрос не в том, ЧТО дублируется, а в том ИЗ-ЗА ЧЕГО. Значит у вас один документ встречается в регистре ознакомления несколько раз. Определитесь, какой из этих разов вам нужен.
   Bilkinbill
 
13 - 12.10.18 - 09:57
(12) естественно несколько раз.....в регистре сведений записываются записи в Измерения Документ и пользователь..один документ могут открывать разные пользователи
   catena
 
14 - 12.10.18 - 10:03
(13)Ну так выбирайте только по текущему пользователю, а свое прочитано/непрочитано вынесите в основные поля
Выбор когда ВложенныйЗапрос.Документ естьNULL тогда "Непрочитано" иначе "Прочитано" конец
   Bilkinbill
 
15 - 12.10.18 - 10:36
(14) спасибо...всё работает....

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