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

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

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

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

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

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

//Организация - реквизит отчета
...Показать Скрыть
9. Виктор Александров (docerman) 42 11.01.17 13:57 Сейчас в теме
10. Дмитрий (user667308_icscloud) 11.01.17 15:23 Сейчас в теме
(6)
НайтиПоКоду или НайтиПоНаименованию - это не кошерно. И код и наименование пользователи могут поменять.

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


Подскажите, как тогда в приведенном Вами примере, задать отбор по конкретной организации из справочника (не прибегая к выбору пользователем и предопределенному значению)?
11. Виктор Александров (docerman) 42 11.01.17 15:58 Сейчас в теме
(10) Делаем сами настройки в режиме предприятия, а пользователь пользуется нашими настройками. В результате пользователь не делает выбор.
12. Виктор Александров (docerman) 42 11.01.17 16:01 Сейчас в теме
Или добавляем свою константу с соответствующим типом и обращаемся к ней - это в том случае если СКД используется не для отчета.
13. Дмитрий (user667308_icscloud) 12.01.17 07:55 Сейчас в теме
(12)
Или добавляем свою константу с соответствующим типом и обращаемся к ней - это в том случае если СКД используется не для отчета.

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