Программно задать отборы в СКД

1. Nadushka74 5 11.01.17 12:19 Сейчас в теме
Как Задать В СКД программно данные для отбора. Если это значение предопредленное то там все проще не бывает, а если это обычное значение справочника, и нужно чтоб было оно заполнено и пользователь не задавал его сам.
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. docerman 71 11.01.17 12:31 Сейчас в теме
Заполнить нужно один раз - затем сохранить настройки и использовать сохраненные настройки. Или сохраните настройки под собой, а пользователь пусть пользуется вашими настройками.
+
3. user667308_icscloud 11.01.17 12:36 Сейчас в теме
НайтиПоКоду или НайтиПоНаименованию
+
4. Nadushka74 5 11.01.17 13:43 Сейчас в теме
(3) где указать это?
+
5. user667308_icscloud 11.01.17 13:45 Сейчас в теме
там же, где вы указываете предопределенное значение.
+
6. docerman 71 11.01.17 13:52 Сейчас в теме
НайтиПоКоду или НайтиПоНаименованию - это не кошерно. И код и наименование пользователи могут поменять.
+
10. user667308_icscloud 11.01.17 15:23 Сейчас в теме
(6)
НайтиПоКоду или НайтиПоНаименованию - это не кошерно. И код и наименование пользователи могут поменять.

Согласен, поменять могут, но вроде условие топикстартера было:
и пользователь не задавал его сам.


Подскажите, как тогда в приведенном Вами примере, задать отбор по конкретной организации из справочника (не прибегая к выбору пользователем и предопределенному значению)?
+
11. docerman 71 11.01.17 15:58 Сейчас в теме
(10) Делаем сами настройки в режиме предприятия, а пользователь пользуется нашими настройками. В результате пользователь не делает выбор.
+
7. bad_wag 48 11.01.17 13:54 Сейчас в теме
Примерно так:

НастройкиКомпоновкиДанных = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

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

Элемент1 = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Элемент1.ВидСравнения = ВидСравненияКомпоновкиДанных.Содержит;
Элемент1.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование");
Элемент1.ПравоеЗначение = ЗначениеОтбора;
Показать
+
8. docerman 71 11.01.17 13:56 Сейчас в теме
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	Если ЗначениеЗаполнено(Организация) Тогда
		УстановитьОтборСКД("Организация", ВидСравненияКомпоновкиДанных.Равно, Организация);
	Иначе
		УстановитьОтборСКД("Организация", ВидСравненияКомпоновкиДанных.Равно, Неопределено);
	КонецЕсли;
	
КонецПроцедуры

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

//Организация - реквизит отчета
Показать
user636541_jabokryak; dm1try; +2
9. docerman 71 11.01.17 13:57 Сейчас в теме
12. docerman 71 11.01.17 16:01 Сейчас в теме
Или добавляем свою константу с соответствующим типом и обращаемся к ней - это в том случае если СКД используется не для отчета.
+
13. user667308_icscloud 12.01.17 07:55 Сейчас в теме
(12)
Или добавляем свою константу с соответствующим типом и обращаемся к ней - это в том случае если СКД используется не для отчета.

Тогда уж если развивать эту тему, то плодить константы тоже не кошерно, кошернее будет создать РС или ПВХ под настройки. :-)
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот