Что-то вроде FAQ

Как изменить отбор программно

Ваш отзывFavoriteLoadingВ закладки

Эта тема тоже достаточна распространена. Нюанс программного изменения отбора заключается в том, что коллекция:

КомпоновщикНастроек.Настройки.Отбор.Элементы

в отличие от аналогичной коллекции параметров, не имеет метода Найти(). Можно конечно изменять отбор “в лоб”, т.е. по индексу, но это не есть хорошо. Самый оптимальный вариант, обходить все поля отбора в цикле.

Приведу пример универсальной функции для изменения отбор компоновки данных:

Эта тема тоже достаточна распространена. Нюанс программного изменения отбора заключается в том, что коллекция: КомпоновщикНастроек.Настройки.Отбор.Элементы в отличие от аналогичной коллекции параметров, не имеет метода Найти(). Можно конечно изменять отбор “в лоб”, т.е. по индексу, но это не есть хорошо. Самый оптимальный вариант, обходить все поля отбора в цикле. Приведу пример универсальной функции для изменения отбор компоновки данных: //Ищет отбор в компоновщике настроек по параметрам, заданным через //"СоответствиеПоискаОтбора", и заменяет //на отбор с параметрами, указанными в "СоответствиеНовогоОтбора" Процедура ИзменитьОтбор(ЭлементСтруктуры, СоответствиеПоискаОтбора = Неопределено, СоответствиеНовогоОтбора) Экспорт Если ТипЗнч(ЭлементСтруктуры) = Тип("КомпоновщикНастроекКомпоновкиДанных")  Тогда Отбор = ЭлементСтруктуры.Настройки.Отбор; Иначе Отбор = ЭлементСтруктуры; КонецЕсли; Если ТипЗнч(СоответствиеНовогоОтбора["ЛевоеЗначение"]) = Тип("Строка") Тогда нПоле = Новый ПолеКомпоновкиДанных(СоответствиеНовогоОтбора.ЛевоеЗначение); Иначе нПоле = СоответствиеНовогоОтбора["ЛевоеЗначение"]; КонецЕсли; Если СоответствиеНовогоОтбора.Получить("ВидСравнения") = Неопределено Тогда нВидСравнения = ВидСравненияКомпоновкиДанных.Равно; Иначе нВидСравнения = СоответствиеНовогоОтбора["ВидСравнения"]; КонецЕсли; Если СоответствиеНовогоОтбора.Получить("Использование") = Неопределено Тогда нИспользование = Истина; Иначе нИспользование = СоответствиеНовогоОтбора["Использование"]; КонецЕсли; нЗначение = СоответствиеНовогоОтбора["Значение"]; ТолькоПоЛевомуЗначению = Ложь; Если СоответствиеПоискаОтбора = Неопределено Тогда ТолькоПоЛевомуЗначению = Истина; КонецЕсли; сЛевоеЗначение = СоответствиеПоискаОтбора.Получить("ЛевоеЗначение"); Если сЛевоеЗначение = Неопределено Тогда сЛевоеЗначение = нПоле; КонецЕсли; сВидСравнения = СоответствиеПоискаОтбора.Получить("ВидСравнения"); Если ВидСравнения = Неопределено Тогда сВидСравнения = ВидСравнения; КонецЕсли; сИспользование = СоответствиеПоискаОтбора.Получить("Использование"); Если сИспользование = Неопределено Тогда сИспользование = нИспользование; КонецЕсли; Для каждого ЭлементОтбора Из Отбор.Элементы Цикл Если ТолькоПоЛевомуЗначению Тогда НайденныйОтбор = ЭлементОтбора; Прервать; Иначе Если (ЭлементОтбора.ЛевоеЗначение = сЛевоеЗначение) И (ЭлементОтбора.ВидСравнения = сВидСравнения) И (ЭлементОтбора.Использование = сИспользование) Тогда НайденныйОтбор = ЭлементОтбора; Прервать; КонецЕсли; КонецЕсли; КонецЦикла; Если НайденныйОтбор <> Неопределено Тогда НайденныйОтбор.ЛевоеЗначение = нПоле; НайденныйОтбор.Использование = нИспользование; НайденныйОтбор.ВидСравнения = нВидСравнения; НайденныйОтбор.ПравоеЗначение = нЗначение; КонецЕсли; КонецПроцедуры Пример вызова процедуры: СоответствиеПоискаОтбора = Новый Соответствие; СоответствиеПоискаОтбора.Вставить("ЛевоеЗначение",Новый ПолеКомпоновкиДанных("Наименование")); СоответствиеПоискаОтбора.Вставить("ВидСравнения",ВидСравненияКомпоновкиДанных.Содержит); СоответствиеПоискаОтбора.Вставить("Использование",Истина); СоответствиеНовогоОтбора = Новый Соответствие; СоответствиеНовогоОтбора.Вставить("ЛевоеЗначение",Новый ПолеКомпоновкиДанных("Наименование")); СоответствиеНовогоОтбора.Вставить("ВидСравнения",ВидСравненияКомпоновкиДанных.Содержит); СоответствиеНовогоОтбора.Вставить("Использование",Истина); СоответствиеНовогоОтбора.Вставить("Значение","бла-бла-бла"); ИзменитьОтбор(КомпоновщикНастроек,СоответствиеПоискаОтбора,СоответствиеНовогоОтбора);...

Далее

Как добавить отбор программно

Отзывов (4)FavoriteLoadingВ закладки

НовыйЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.
                     Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

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

НовыйЭлементОтбора.ЛевоеЗначение  = ПолеОтбора;
НовыйЭлементОтбора.Использование  = Истина;
НовыйЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
НовыйЭлементОтбора.ПравоеЗначение = Значение;

НовыйЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы. Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ПолеОтбора = Новый ПолеКомпоновкиДанных("ИмяПоляКомпоновки"); НовыйЭлементОтбора.ЛевоеЗначение = ПолеОтбора; НовыйЭлементОтбора.Использование = Истина; НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; НовыйЭлементОтбора.ПравоеЗначение = Значение; Перейти к...

Далее

Как установить параметр в СКД программно

Отзывов (11)FavoriteLoadingВ закладки

О рубрике

Данный цикл статей, по сути, будет обычным FAQ по вопросам СКД. Здесь вы найдете ответы на самые часто задаваемые вопросы по компоновке. Думаю, данный раздел будет очень полезным.

Естественно, первым вопросом, на который мы дадим ответ, будет тот, что указан в заголовке. Этот вопрос задавался на 1с-ных форумах миллионы раз, но новички упорно спрашивают вновь и вновь. Так зафиксируем же ответ, и будем кидаться в новичков этой ссылкой.

Как же установить параметр в СКД программно

Устанавливать параметр будем в ПриОткрытии:

Процедура ПриОткрытии()
   ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.
                                 Элементы.Найти("ИмяПараметра")
   ПараметрСКД.Использование = Истина;
   ПараметрСКД.Значение  = Значение;
КонецПроцедуры
О рубрике Данный цикл статей, по сути, будет обычным FAQ по вопросам СКД. Здесь вы найдете ответы на самые часто задаваемые вопросы по компоновке. Думаю, данный раздел будет очень полезным. Естественно, первым вопросом, на который мы дадим ответ, будет тот, что указан в заголовке. Этот вопрос задавался на 1с-ных форумах миллионы раз, но новички упорно спрашивают вновь и вновь. Так зафиксируем же ответ, и будем кидаться в новичков этой ссылкой. Как же установить параметр в СКД программно Устанавливать параметр будем в ПриОткрытии: Процедура ПриОткрытии() ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных. Элементы.Найти("ИмяПараметра") ПараметрСКД.Использование = Истина; ПараметрСКД.Значение = Значение; КонецПроцедуры Перейти к...

Далее
Страница 6 из 6« Первая...23456

Авторизация

Логин:
Пароль:
Регистрация

Архивы

Закладки

  • Your favorites will be here.