Добрый день!
Отчет на СКД, есть Форма. В СКД добавлен отбор по полю Организация. Требуется скрывать этот отбор, если в базе только 1 организация. Как это сделать? Что-то никак не получается. Пробовал и через установку РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный и через удаление пользовательских полей...
---
Разобрался. В ПриСозданииНаСервере() не получилось. Сделал в ПриОткрытии():

```1c
    Для каждого Эл из Элементы.КомпоновщикНастроекПользовательскиеНастройки.ПодчиненныеЭлементы Цикл
    Для каждого ЭлПодч из Эл.ПодчиненныеЭлементы Цикл
    Если ЭлПодч.Заголовок = "Организация" Тогда
    ЭлПодч.Видимость = Ложь;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
```
---
Отчет на СКД, есть Форма. В СКД добавлен отбор по полю Организация. Требуется скрывать этот отбор, если в базе только 1 организация. Как это сделать?Обычно не скрывают отбор, а не используют. Или в тексте указывают условие:
```1c
    т.Организация = &Организация ИЛИ &Организация=Справочник.Организации.ПустаяСсылка....
```
---
задача именно скрыть, т.к. для баз с одной организацией выводить данный отбор смысла не имеет...
---
для баз с одной организацией это обычно делается через функциональную опцию
---
Попробуй так
---
нет, вы не поняли - мне нужно скрыть поле, выводимое в отбор на форме при помощи флага Включать в пользовательские настройки.
---
up
---
В модуле формы отчета можно поместить такой код:
```1c
    &НаСервере
    Функция КоличествоОрганизацийВИнфБазе()

    //Здесь посчитать количество организаций в инф.базе и
    //поместить его в переменную КоличествоОрганизацийВИнфБазе

    Возврат КоличествоОрганизацийВИнфБазе;
    КонецФункции

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

    ПараметрКомпоновкиДанных = Новый ПараметрКомпоновкиДанных("Организация");

    КоличествоОрганизацийВИнфБазе = КоличествоОрганизацийВИнфБазе();

    Для Каждого Элемент Из ПользовательскиеНастройки.Элементы Цикл
    Если Элемент.Параметр = ПараметрКомпоновкиДанных Тогда
    Элемент.Использование = (КоличествоОрганизацийВИнфБазе > 1);
    Прервать;
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
```
---
Не работает.
И у вас про использование, а не про видимость.
---
Заменяем

```1c
    Элемент.Использование = (КоличествоОрганизацийВИнфБазе > 1);
```

На

```1c
    Если КоличествоОрганизацийВИнфБазе = 1 Тогда
    Элемент.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
    Иначе
    Элемент.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
    КонецЕсли;
```
---
up2
---
Разобрался. В ПриСозданииНаСервере() не получилось. Сделал в ПриОткрытии():

```1c
    Для каждого Эл из Элементы.КомпоновщикНастроекПользовательскиеНастройки.ПодчиненныеЭлементы Цикл
    Для каждого ЭлПодч из Эл.ПодчиненныеЭлементы Цикл
    Если ЭлПодч.Заголовок = "Организация" Тогда
    ЭлПодч.Видимость = Ложь;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
```
---
- Ты суслика видишь?
- Нет.
- А он есть.

Вот так и появляются потом непонятные артефакты. "У меня отчет какую-то ерунду выводит. Все настройки проверил ничего нет, а выводит не все". Это не решение, это проблема на будущее.
Да и обращение по порядку элементов это жесть, а вдруг отбор по организации будет не первым?
---
Исходное условие вполне приемлемое.
---
А потом люди поиском натыкаясь на этот вопрос будут сразу видеть решение и делать точно также "через жопу".
---
это не моя хотелка, имеются привередливые бизнес-пользователи.
проблема того, кто выхватывает из контекста - на его стороне, и это никак не связано с 1С и с данной темой в принципе, сабж описан.
---
Проблема не в хотелке, а в ее реализации. Сама по себе хотелка нормальная.

Если где-то капает и тебя попросили устранить, можно пойти двумя путями.
1. Найти где протекает и устранить. Правильный путь.
2. Приделать трубку. Оно все равно капает, но теперь не видно.
---
что не так с реализацией?
если вопрос был к обращению к элементу по номеру, то этот момент я скорректировал - просто изначально написал путь к решению, а не само решение. В (10) уже поправил.
---
Смотри на свой алгоритм. Сам отбор ты из пользовательских настроек не убрал, он там как был так и остался. Ты просто выключил его видимость. Т.е. отбор есть, но его не видно. И если вдруг каким-то образом он будет включен, и в нем не будет выбрана не та единственная организация, то отчет будет всегда пустой. А вот найти что происходит будет очень трудно.
Поэтому воздействуем на отбор. Можно ставить "Использовать = Ложь". Можно поставить "РежимОтображения - Обычный", чтоб он на форме не мозолил глаза. Можно совсем удалить из пользовательских настроек, но тогда при появлении второй организации его надо будет восстановить.
Но оставлять отбор и при этом его не показывать это путь создания "магических проблем". Потому что отбор есть и он воздействует на отчет, но что там в нем ты никак не можешь увидеть пользовательскими средствами.
---
c РежимомОтображения не взлетело... Возможно, ещё нужно как-то обновлять настройки.
---
Ну потому что пользователь уже открывал отчет и у него есть сохраненные "пользовательские настройки", поэтому надо всю эту фигню отлавливать в событиях "ПередЗагрузкойПользовательскихНастроекНаСервере" и "ПередЗагрузкойВариантаНаСервере".
---
можно поподробнее?
---
подробнее что именно? что такое ФО? посмотреть по-моему можно в любой типовой - если в базе ведется учет по одной организации, то справочник (вроде целиком) включен в ФО, которая отключена. соот-но во всех отчетах организация недоступна. ну или можно реквизит какого-то объекта включить в эту ФО
---
Судя по тому как стоит задача, у него как раз включено "Несколько организаций". Но при этом добавлена только одна организация.
---
Не об этом речь. Пользователю мешает лишний параметр отбора на форме. На данный момент организация одна - и выводить параметр как бы смысла не имеет, т.к. в разрезе одной этой организации выводим отчет. Но в перспективе организаций в базе потенциально может стать больше. Пользователь хочет заложиться сразу в отчете на это. И соответственно, когда организаций станет больше одной - уже нужен отбор.
---
Вообще по хорошему это "пользовательские настройки". Если пользователю мешает лишний отбор, пользователь открывает "Настройки", заходит в отборы, нажимает "Удалить элемент" (или как там оно точно называется). И все больше он не видит этот дополнительный отбор.
---
Похоже кто-то не в курсе что такое фо. Ну и ладно. Колесо изобретать - любимое занятие ограниченно осведомлённых
---
"знание надмевает, а любовь назидает"... (1 Кор. 8:1)
Я в курсе про ФО. Речь не про ФО в целом, а про то, каким образом вы предлагаете привязать видимость конкретного элемента отбора СКД дополнительного внешнего отчета к ФО? С удовольствием вас выслушаю.