Имя: Пароль:
1C
1С v8
Не могу вывести ответственного в отчете СКД
0 slafor
 
11.02.22
15:51
Делаю простой отчет по РТУ (БП 3.0), хочу вывести поле "Ответственный". Ввожу его как отдельное поле в запросе - в отчет оно не выводится. Вот как выглядит запрос в наборе данных:

ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка КАК Документ,
    РеализацияТоваровУслуг.Дата КАК ДатаДок,
    РеализацияТоваровУслуг.Ответственный КАК Ответственный
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

Смотрю в процедуре ПриКомпоневкеРезультата - там итоговый запрос получается уже почему-то без поля Ответственный.

Пробую в пользовательском режиме, через расширенные настройки отчета, сам выбрать это поле через ссылку Документ.Ответственный, но там такого реквизита ваще нет... Где я могу ошибаться?
1 youalex
 
11.02.22
15:54
ФО ИспользоватьНесколькоОтветственных (одноименная константа) например
2 slafor
 
11.02.22
15:56
(1) Да, но в консоли запросов этот же запрос выдает правильные данные - с этим реквизитом )
3 dmt
 
11.02.22
15:57
(0) кинь отчет
4 Beduin
 
11.02.22
16:00
(0) А ты как выводишь, через группировку или детальные записи?
5 youalex
 
11.02.22
16:12
(2) консоль запросов не учитывает ФО, а СКД учитывает (по дефолту)
6 slafor
 
11.02.22
16:43
(4) Через группировку. Пробовал и через детальные записи.
Главное - в запросе, допустим, если поле - ссылка на документ РТУ. А в настройках отчета в пользовательском режиме я через эту ссылку могу найти что угодно, только не нужный мне реквизит: https://disk.yandex.ru/i/wboe7rVq_GTyhQ .
Структура отчет, конечно, обильно изменена, но смысл понятен ) . Реквизит в документе есть, а здесь его нет.

(5) А как можно исключить эту ФО в СКД?
7 youalex
 
11.02.22
16:45
(6)
ПроверятьДоступностьПолей, по идее (сам не проверял) :

КомпоновщикМакетаКомпоновкиДанных (DataCompositionTemplateComposer)
Выполнить (Execute)
Синтаксис:
Выполнить(<Схема>, <Настройки>, <ДанныеРасшифровки>, <МакетОформления>, <ТипГенератора>, <ПроверятьДоступностьПолей>, <ПараметрыФункциональныхОпций>)

<ПроверятьДоступностьПолей> (необязательный)
Тип: Булево.
Определяет, выполнять ли проверку прав на просмотр полей и проверку доступности поля во включенных функциональных возможностях.
Значение по умолчанию: Истина.
8 slafor
 
11.02.22
17:04
(7) Спасибо, поскольку у меня основной отчет как раз пишется в процедуре ПриКомпоновкеРезультата, я тоже очень понадеялся на этот параметр. Но получается вот как.

У меня пишется текст запроса, потом выполняется код:

СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Запрос = ТекстЗапроса;

где в тексте запроса есть поле Ответственный, потом выполняется другой код:
    
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпоновщикНастроек.ПолучитьНастройки(),ДанныеРасшифровки,,,Ложь);

где ПроверятьДоступностьПолей устанавливается уже в Ложь, и в результате МакетКомпоновки (МакетКомпоновки.НаборыДанных.НаборДанных1.Запрос) выводит мне текст запроса, но уже БЕЗ поля Ответственный...

Еще какие-то варианты возможны?
9 youalex
 
11.02.22
17:24
(8) явное соединение  с таблицей Пользователи, и Ответственного доставать оттуда Ссылка как Ответственный.
но я бы в качестве эксперимента все же попробовал бы переткнуть эту константу/ФО, чтобы убедиться, что дело в ней.
10 slafor
 
11.02.22
17:29
(9) И это тоже попробовал - в результирующем запросе получается так:
"ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Спр
ПО Док.Ответственный = Спр.Ссылка" остается, а поле Спр.Ссылка из конечного запроса куда-то испаряется...
11 youalex
 
11.02.22
17:41
(10) может у тебя этого поля просто нет в выбранных?
12 slafor
 
11.02.22
19:45
(11) Чудо! Выяснил, что в этой константе действительно не стоит галка "Использовать несколько ответственных", установил - все заработало!

Но все же удивительно - почему другие способы не работают, может, ПроверятьДоступностьПолей - это вообще для другого?
Независимо от того, куда вы едете — это в гору и против ветра!