Добрый день!
Отчет на СКД, есть Форма. В СКД добавлен отбор по полю Организация. Требуется скрывать этот отбор, если в базе только 1 организация. Как это сделать? Что-то никак не получается. Пробовал и через установку РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный и через удаление пользовательских полей...
Отчет на СКД, есть Форма. В СКД добавлен отбор по полю Организация. Требуется скрывать этот отбор, если в базе только 1 организация. Как это сделать? Что-то никак не получается. Пробовал и через установку РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный и через удаление пользовательских полей...
По теме из базы знаний
Найденные решения
Разобрался. В ПриСозданииНаСервере() не получилось. Сделал в ПриОткрытии():
Для каждого Эл из Элементы.КомпоновщикНастроекПользовательскиеНастройки.ПодчиненныеЭлементы Цикл
Для каждого ЭлПодч из Эл.ПодчиненныеЭлементы Цикл
Если ЭлПодч.Заголовок = "Организация" Тогда
ЭлПодч.Видимость = Ложь;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Отчет на СКД, есть Форма. В СКД добавлен отбор по полю Организация. Требуется скрывать этот отбор, если в базе только 1 организация. Как это сделать?
Обычно не скрывают отбор, а не используют. Или в тексте указывают условие:т.Организация = &Организация ИЛИ &Организация=Справочник.Организации.ПустаяСсылка....
В модуле формы отчета можно поместить такой код:
&НаСервере
Функция КоличествоОрганизацийВИнфБазе()
//Здесь посчитать количество организаций в инф.базе и
//поместить его в переменную КоличествоОрганизацийВИнфБазе
Возврат КоличествоОрганизацийВИнфБазе;
КонецФункции
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПользовательскиеНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки;
ПараметрКомпоновкиДанных = Новый ПараметрКомпоновкиДанных("Организация");
КоличествоОрганизацийВИнфБазе = КоличествоОрганизацийВИнфБазе();
Для Каждого Элемент Из ПользовательскиеНастройки.Элементы Цикл
Если Элемент.Параметр = ПараметрКомпоновкиДанных Тогда
Элемент.Использование = (КоличествоОрганизацийВИнфБазе > 1);
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать
(8) Заменяем
На
Элемент.Использование = (КоличествоОрганизацийВИнфБазе > 1);
На
Если КоличествоОрганизацийВИнфБазе = 1 Тогда
Элемент.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
Иначе
Элемент.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
КонецЕсли;
Разобрался. В ПриСозданииНаСервере() не получилось. Сделал в ПриОткрытии():
Для каждого Эл из Элементы.КомпоновщикНастроекПользовательскиеНастройки.ПодчиненныеЭлементы Цикл
Для каждого ЭлПодч из Эл.ПодчиненныеЭлементы Цикл
Если ЭлПодч.Заголовок = "Организация" Тогда
ЭлПодч.Видимость = Ложь;
КонецЕсли;
КонецЦикла;
КонецЦикла;
(10) - Ты суслика видишь?
- Нет.
- А он есть.
Вот так и появляются потом непонятные артефакты. "У меня отчет какую-то ерунду выводит. Все настройки проверил ничего нет, а выводит не все". Это не решение, это проблема на будущее.
Да и обращение по порядку элементов это жесть, а вдруг отбор по организации будет не первым?
- Нет.
- А он есть.
Вот так и появляются потом непонятные артефакты. "У меня отчет какую-то ерунду выводит. Все настройки проверил ничего нет, а выводит не все". Это не решение, это проблема на будущее.
Да и обращение по порядку элементов это жесть, а вдруг отбор по организации будет не первым?
(15) Проблема не в хотелке, а в ее реализации. Сама по себе хотелка нормальная.
Если где-то капает и тебя попросили устранить, можно пойти двумя путями.
1. Найти где протекает и устранить. Правильный путь.
2. Приделать трубку. Оно все равно капает, но теперь не видно.
Если где-то капает и тебя попросили устранить, можно пойти двумя путями.
1. Найти где протекает и устранить. Правильный путь.
2. Приделать трубку. Оно все равно капает, но теперь не видно.
(18) Смотри на свой алгоритм. Сам отбор ты из пользовательских настроек не убрал, он там как был так и остался. Ты просто выключил его видимость. Т.е. отбор есть, но его не видно. И если вдруг каким-то образом он будет включен, и в нем не будет выбрана не та единственная организация, то отчет будет всегда пустой. А вот найти что происходит будет очень трудно.
Поэтому воздействуем на отбор. Можно ставить "Использовать = Ложь". Можно поставить "РежимОтображения - Обычный", чтоб он на форме не мозолил глаза. Можно совсем удалить из пользовательских настроек, но тогда при появлении второй организации его надо будет восстановить.
Но оставлять отбор и при этом его не показывать это путь создания "магических проблем". Потому что отбор есть и он воздействует на отчет, но что там в нем ты никак не можешь увидеть пользовательскими средствами.
Поэтому воздействуем на отбор. Можно ставить "Использовать = Ложь". Можно поставить "РежимОтображения - Обычный", чтоб он на форме не мозолил глаза. Можно совсем удалить из пользовательских настроек, но тогда при появлении второй организации его надо будет восстановить.
Но оставлять отбор и при этом его не показывать это путь создания "магических проблем". Потому что отбор есть и он воздействует на отчет, но что там в нем ты никак не можешь увидеть пользовательскими средствами.
(22) подробнее что именно? что такое ФО? посмотреть по-моему можно в любой типовой - если в базе ведется учет по одной организации, то справочник (вроде целиком) включен в ФО, которая отключена. соот-но во всех отчетах организация недоступна. ну или можно реквизит какого-то объекта включить в эту ФО
(23) Не об этом речь. Пользователю мешает лишний параметр отбора на форме. На данный момент организация одна - и выводить параметр как бы смысла не имеет, т.к. в разрезе одной этой организации выводим отчет. Но в перспективе организаций в базе потенциально может стать больше. Пользователь хочет заложиться сразу в отчете на это. И соответственно, когда организаций станет больше одной - уже нужен отбор.
(24) Вообще по хорошему это "пользовательские настройки". Если пользователю мешает лишний отбор, пользователь открывает "Настройки", заходит в отборы, нажимает "Удалить элемент" (или как там оно точно называется). И все больше он не видит этот дополнительный отбор.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот