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

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

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


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

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

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

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

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

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

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

Автор новостей об 1С, налогах и бухучете на INFOSTART.RU
Санкт-Петербург
По совместительству

Программист 1С
Екатеринбург
зарплата от 50 000 руб.
По совместительству

Ведущий разработчик 1С (техлид внутреннего учета)
Новосибирск
зарплата от 230 000 руб.
Полный день

Программист 1С
Рязань
зарплата от 150 000 руб. до 250 000 руб.
Полный день