|
Проверить заполнение параметров СКД | ☑ | ||
---|---|---|---|---|
0
NikePopov
11.08.14
✎
14:37
|
Доброго всем дня!
Озадачился вопросом: у отчета есть "ОбработкаПроверкиЗаполнения", реквизиты плодить не хочу - буду проверять параметры прямо через саму СКД. В модуле объекта увидел переменную "КомпоновщикНастроек" и испугался. Забыл зачем пришел. Что собственно не устраивает: окошко с надписью "Ошибка исполнения отчета по причине: Не установлено значение параметра "Параметр1"" и красным крестиком. Что хочу: Заменить вышеуказанное окно привычным для ОбработкиПроверкиЗаполнения сообщением с учетом, что некоторые параметры могут использоваться не всегда(в зависимость от настройки параметров СКД). Подскажите, Люди добрые! |
|||
1
NikePopov
11.08.14
✎
15:31
|
Ап!
|
|||
2
sapphire
11.08.14
✎
15:35
|
И?
|
|||
3
NikePopov
11.08.14
✎
15:39
|
Есть ли идеи, что именно требуется проверять в реквизите "КомпоновщикНастроек", чтобы учитывать параметры данных СКД?
|
|||
4
Defender aka LINN
11.08.14
✎
15:44
|
(0) Если "некоторые параметры могут использоваться не всегда", то они должны быть необязательными в схеме.
|
|||
5
NikePopov
11.08.14
✎
16:01
|
Это понятно. Где мне найти коллекцию параметров СКД с их значениями?
Есть "ЭтотОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы", но там не указано, обязательный параметр для заполнения или нет. Есть "ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы" там тоже. Есть "ЭтотОбъект.КомпоновщикНастроек.ФиксированныеНастройки.ПараметрыДанных.Элементы" и тут нет. Не могу найти свойство компановщика, где собраны все интересующие меня данные. |
|||
6
NikePopov
11.08.14
✎
16:06
|
Хотелось бы узнать, как именно должен выглядеть код:
Для каждого ПараметрСКД из КомпоновщикНастроек.??? Цикл Если ПараметрСКД.Использование = ВидыИспользований.Авто Тогда Продолжить; ИначеЕсли ЗначениеЗаполнено(ПараметрСКД.Значение) Тогда Продолжить; КонецЕсли; Отказ = Истина; Сообщение = Новый СообщениеПользователю; Сообщение.Текст = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку("Не заполнен параметр [ПредставлениеПараметра]!", новый Структура("ПредставлениеПараметра", ПараметрСКД.ПредставлениеПараметра); Сообщение.Поле = "Отчет." + ПараметрСКД.ИмяПараметра; КонецЦикла |
|||
7
NikePopov
11.08.14
✎
16:09
|
Up!
|
|||
8
NikePopov
11.08.14
✎
16:16
|
Меня полностью устраивает "СхемаКомпоновкиДанных", но в ней на этапе "ОбработкаПроверкиЗаполнения" не указаны значения параметров
|
|||
9
NikePopov
12.08.14
✎
09:39
|
Благодарю участников обсуждения. Выкрутился следующим образом:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Параметры = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы; ПараметрыСКД = СхемаКомпоновкиДанных.Параметры; Для каждого Параметр Из Параметры Цикл СтрокаПараметра = ПараметрыСКД.Найти(Строка(Параметр.Параметр)); Если СтрокаПараметра = Неопределено Тогда Продолжить; // Это не параметр ИначеЕсли ЗначениеЗаполнено(Параметр.Значение) Тогда Продолжить; // Параметр заполнен - все хорошо ИначеЕсли СтрокаПараметра.Использование = ИспользованиеПараметраКомпоновкиДанных.Авто Тогда Продолжить; // ПараметрЗаполнять не обязательно КонецЕсли; Отказ = Истина; Сообщение = Новый СообщениеПользователю; Сообщение.Текст = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку("Не заполнено значение ""[ПредставлениеПараметра]""!", Новый Структура("ПредставлениеПараметра", СтрокаПараметра.Заголовок)); Сообщение.Поле = "Параметр_Значение_" + СтрЗаменить(Параметр.ИдентификаторПользовательскойНастройки, "-", ""); Сообщение.Сообщить(); КонецЦикла; КонецПроцедуры У кого-нибудь есть идеи, какие тут могут быть подводные камни? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |