Имя: Пароль:
1C
1С v8
v8.3.Сводный отчет из двух справочников
0 smartem
 
25.06.14
16:14
Добрый день!

Коллеги, прошу подсказать, весь день разбирался, но видимо начальных знаний не хватает.
В чем суть: Есть два справочника: "Компетенции" и "Сотрудники".
В справочнике "Сотрудники" есть табличная часть "ТекущиеКомпетенции", в котором есть реквизит наименование как ссылка на Справочник.Компетенции.
Необходимо создать отчет (табличный), в котором левая крайняя колонка, это перечень всех компетенций из справочника "Компетенции", остальные колонки это все сотрудники из справочника "Сотрудники". На пересечении строк с компетенцией и конкретного сотрудника ставить "1", в случае, если указанная компетенция есть у сотрудника в табличной части.
Интересует, есть ли возможность создать такой отчет? Если да, то каким способом?
Готовое решение не прошу, но вот от подсказки: в каком направлении смотреть, не отказался бы )
1 Azverin
 
25.06.14
16:20
2 Azverin
 
25.06.14
16:26
+(1)
    Макет = ПолучитьМакет("Макет");
    Макет.ПолучитьОбласть("Шапка|ПервыйСтолбец");
    ТабДок.Вывести(Макет.ПолучитьОбласть("Шапка|ПервыйСтолбец"));
    Для Каждого Роль из Метаданные.Роли Цикл
        Область = Макет.ПолучитьОбласть("Шапка|Столбец");
        Область.Параметры.Роль = Роль;
        ТабДок.Присоединить(Область);
    КонецЦикла;
    ТабДок.Присоединить(Макет.ПолучитьОбласть("Шапка|ПоследнийСтолбец"));
    
    ТабПользователей = Новый ТаблицаЗначений;
    ТабПользователей.Колонки.Добавить("Пользователь");
    ТабПользователей.Колонки.Добавить("Имя");
    Для Каждого Пользователь из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
        НоваяСтрока = ТабПользователей.Добавить();
        НоваяСтрока.Пользователь = Пользователь;
        НоваяСтрока.Имя = Пользователь.Имя;
    КонецЦикла;
    ТабПользователей.Сортировать("Имя");    
    
    Для Каждого СтрокаТЗ из ТабПользователей Цикл
        Пользователь = СтрокаТЗ.Пользователь;
        
        Область = Макет.ПолучитьОбласть("Строка|ПервыйСтолбец");
        Область.Параметры.Пользователь = Пользователь.Имя;
        ТабДок.Вывести(Область);
        Для Каждого Роль из Метаданные.Роли Цикл
            
            Область = Макет.ПолучитьОбласть("Строка|Столбец");
            Область.Параметры.РольДоступна = Пользователь.Роли.Содержит(Роль);
            Область.Параметры.ПользовательРоль = Новый Структура("Пользователь, Роль", Пользователь, Роль);
            
            ТабДок.Присоединить(Область);
        КонецЦикла;
        ТабДок.Присоединить(Макет.ПолучитьОбласть("Строка|ПоследнийСтолбец"));
    КонецЦикла;
    
    ТабДок.Вывести(Макет.ПолучитьОбласть("Подвал|ПервыйСтолбец"));
    Для Каждого Роль из Метаданные.Роли Цикл
        Область = Макет.ПолучитьОбласть("Подвал|Столбец");
        ТабДок.Присоединить(Область);
    КонецЦикла;
    ТабДок.Присоединить(Макет.ПолучитьОбласть("Подвал|ПоследнийСтолбец"));
3 SUA
 
25.06.14
16:38
скд сама нарисует
компетенции + характеристиками к ним сотрудники
ну и простая таблица
4 SUA
 
25.06.14
16:38
ну или джойном даже лучше