Имя: Пароль:
1C
1С v8
В коллекцию доступных полей компоновки данных попадают "лишние поля"
0 kovalev_oleg
 
26.01.21
12:00
Бухгалтерия
В коллекцию доступных полей компоновки данных попадают кроме реквизитов справочника "Организации".  
еще и реквизиты связанные по дополнительным характеристикам объектов метаданных

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

Картинка
https://ibb.co/CvNCvSy
https://ibb.co/61X1RRx
1 ДенисЧ
 
26.01.21
12:04
Автозаполнение убери и руками добавляй то, что нужно
2 kovalev_oleg
 
26.01.21
13:43
(1) Не корректно сформулировал вопрос
все формируется программно, формы нет.

    
    ОбъектВыбораЗначение="РегистрыНакопления";
    ОбъектВыбора="АвансовыеПлатежиИностранцевПоНДФЛ";
    
    
    СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных;
    НовыйИсточник = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
    НовыйИсточник.Имя = "ИсточникДанных1";
    НовыйИсточник.ТипИсточникаДанных = "Local";
    
    НовыйНаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
    НовыйНаборДанных.ИсточникДанных = "Local";
    
    НовыйНаборДанных.Имя = "Основной";
    НовыйНаборДанных.ИмяОбъекта = "Основной";     
    НовыйНаборДанных.ИсточникДанных = "ИсточникДанных1";
    
    ТаблицаМетаданных.Очистить();
    
        
    Для Каждого ОбъектМетаданных Из Метаданные[ОбъектВыбораЗначение][Строка(ОбъектВыбора)].Измерения Цикл
        
        НоваяСтрока = ТаблицаМетаданных.Добавить();
        
        НоваяСтрока.ИмяРеквизита = ОбъектМетаданных.Имя;
        НоваяСтрока.СинонимРеквизита = ОбъектМетаданных.Синоним;
        НоваяСтрока.ОписаниеТипов = ИсключитьНедопустимыеТипы(ОбъектМетаданных.Тип);
        НоваяСтрока.ОбъектМетаданных = ОбъектВыбораЗначение;
        
        
    КонецЦикла;
    
    
    
    Для Каждого ЭлементРеквизит Из ТаблицаМетаданных Цикл
        
        ИмяРеквизита=СтрЗаменить(ЭлементРеквизит.ИмяРеквизита,".","*$");
        //ИмяРеквизита=ЭлементРеквизит.ИмяРеквизита;
        
        НовоеПолеНабораДанных = НовыйНаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
        НовоеПолеНабораДанных.Заголовок = ЭлементРеквизит.СинонимРеквизита;
        
        
        
        НовоеПолеНабораДанных.Поле = ИмяРеквизита;
        НовоеПолеНабораДанных.ТипЗначения = ЭлементРеквизит.ОписаниеТипов;
        НовоеПолеНабораДанных.ПутьКДанным = ИмяРеквизита;
        
        Если ЭлементРеквизит.ИмяРеквизита = "ИмяТЧ" Тогда
            
            НовоеПолеНабораДанных.ОграничениеИспользования.Условие = Истина;
            НовоеПолеНабораДанных.ОграничениеИспользования.Порядок = Истина;
            
        КонецЕсли;
        
    КонецЦикла;
    
    НастройкиКомпоновки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
    

        
    АдресСКД = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных,ЭтаФорма.УникальныйИдентификатор);
    
    ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСКД);
    
    Объект.Компоновщик.Инициализировать(ИсточникНастроек);
    
    Объект.Компоновщик.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
3 kovalev_oleg
 
26.01.21
13:54
Грубо говоря  если Отбор поместить на форму то пользователю вылезает к примеру поле "Email"  которого нет в реквизитах справочника,  оно каким то образом лезет из характеристик
4 Сергиус
 
26.01.21
14:07
(3)Как вариант, после загрузки настроек, можно сделать обход полей компоновщика и убрать лишние.
5 Андроны едут
 
26.01.21
14:12
У компоновщика настроек есть метод Восстановить(Способ)

Вызов метода с параметром <Способ> = ПроверятьДоступность:
удалит из настроек все элементы, которые содержат поля, не доступные для текущих функциональных опций и прав.
6 kovalev_oleg
 
26.01.21
16:30
(4) Нужно удалять уже из поля - Организация.Email поле это "Организация"  а удалять отбор надо уже из организации  
К Примеру поле Организация.Код - это существующий реквизит -ОК ,  а Организация.Email  -нет     -
если удалить Характеристики в справочнике Организации,  то конечно выводит только реквизиты,  но хочется универсальности

(5) к сожалению не удалось, все равно выводит
7 LoneBull
 
26.01.21
16:34
(0) Если задать секцию {ХАРАКТЕРИСТИКИ  ...} в запросе то они не будут браться из метаданных.
Я так понял хочется именно этого (не понял, правда, зачем).
Можно вписать в {ХАРАКТЕРИСТИКИ  ...} какой-нибудь левый запрос и характеристик (в этом отчёте) не будет совсем.
8 kovalev_oleg
 
26.01.21
16:39
(7) Это нужно для генерации запроса,   когда пользователь выбирает несуществующий реквизит, то возникает ошибка