Имя: Пароль:
1C
1С v8
СКД. Использование функций общих модулей в выражениях параметра отчета
0 kirillkr
 
16.09.16
11:22
Есть самописная конфигурация. Справочники Организации (для одной роли есть ограничения на чтение записей, но для рассматриваемых ролей ниже никаких ограничений по записям нет) и Иерархия - иерархический справочник только элементов (без ограничений).
В справочнике Иерархии 2 корневых элемента Отчет 1 и Отчет2 с кодами 0000000000 и 1000000000 соответственно (не предопределенные). Пользователю доступен параметр ВидОтчета - Строка(10) в котором перечислены эти два кода и на выбор Отчет 1 или Отчет 2, а также Период и СписокОрагнизаций. Также есть параметры по датам периода и ВидОтчетаСпр - ИерархияPLСсылка и задается как ЗагрузкаДанных.НайтиСтатью(&ВидОтчета). Т.е. общий модуль ЗагрузкаДанных с пометкой выполнения на сервере и в ней функция НайтиСтатью экспортируемая.

В отчете 3 источника данных: Иерархия
ВЫБРАТЬ
    ИерархияPL.Ссылка КАК Статья,
    ИерархияPL.Родитель
ИЗ
    Справочник.ИерархияPL КАК ИерархияPL
ГДЕ
    НЕ ИерархияPL.ПометкаУдаления
    И ИерархияPL.Родитель В ИЕРАРХИИ (&ВидОтчетаСпр)

УПОРЯДОЧИТЬ ПО
    ИерархияPL.Ссылка ИЕРАРХИЯ


Организации

ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ ПЕРВЫЕ 2
    Организации.Ссылка
ИЗ
    Справочник.Организации КАК Организации
ГДЕ
    Организации.Ссылка В(&СписокОрганизаций)


и сам набор данных

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ДанныеВыгрузкиОбороты.Организация,
    ДанныеВыгрузкиОбороты.Статья,
    ДанныеВыгрузкиОбороты.СуммаОборот,
    ДанныеВыгрузкиОбороты.СуммаНУОборот
ИЗ
    РегистрНакопления.ДанныеВыгрузки.Обороты({(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ))}, {(КОНЕЦПЕРИОДА(&ОкончаниеПериода, ДЕНЬ))}, Авто, ) КАК ДанныеВыгрузкиОбороты


При формировании отчета под полными правами - отчет прекрасно формируется по выбранным организациям, за выбранный период и строит иерархию по выбранному корневому элементу иерархии. Но под правами экономиста (у него нет ограничений на организации и РН) ругается с ошибкой не найдена функция ЗагрузкаДанных.НайтиСтатью(&ВидОтчета).

Решил проверить чем схема для ПП отличается от Э. Запустил Консоль системы компоновки данных и попытался выполнить и под ПП, и под Э. Но и там, и там пишет Синтаксическая ошибка "Загрузкаданных.НайтиСтатью"
1 kirillkr
 
16.09.16
11:39
Да, забыл написать. Нагуглил код

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

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиСКД, ДанныеРасшифровки);

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);

    ДокументРезультат.Очистить();

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);    
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры

После этого ошибка на ненайденную функцию пропала, но в отчет выводится только заголовок, даже шапки нет. Под ПП по-прежнему все красиво.
2 kirillkr
 
16.09.16
12:31
Отчет сформировался. Не хватало галки в Просмотр для регистра накопления ДанныеВыгрузки. Почему для отчета в СКД необходимы права на интерактивный просмотр ролью этого регистра?
3 sapphire
 
16.09.16
12:45
(2) Так по-жизни, считатется, что если данные попали в "область видимости" СКД, то проверяется право "Просмотр".
Например, есть право "Чтение" на какой-то справочник, и это добро выводится, допустим в колонку А результата, тогда, если у пользователя нет права "Просмотр", пользователь эту колонку даже не увидит.
4 kirillkr
 
16.09.16
12:47
(3). К сожалению, этого не знал. До этого все отчеты писал через запросы и программном выводе результата. Сейчас решил параллельно изучать СКД, и не подозревал о такой тонкости.
Ошибка? Это не ошибка, это системная функция.