Открытие формы отчёта (на СКД) с установленными отборами

1. 834 12.01.22 13:20 Сейчас в теме
Есть рабочий код открытия отчета на СКД
	ПользовательскиеНастройкиКомпоновкиДанных = Новый ПользовательскиеНастройкиКомпоновкиДанных;
//*** ...
	НовыйОтбор                                        = ПользовательскиеНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ОтборКомпоновкиДанных"));
	НовыйОтбор.ИдентификаторПользовательскойНастройки = "Отбор";    
	ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина,ВидСравненияКомпоновкиДанных.Равно,"ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры", текДоговор);
	
	
	//*** ...
Процедура ЗаполнитьЭлементОтбораКомпоновкиДанных(ОтборНастройкиКомпоновкиДанных,Использование,ВидСрав,ИмяПоля,ЗначениеОтбора)
	
	НовыйЭлемент = ОтборНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	
	НовыйЭлемент.Использование  = Использование;
	НовыйЭлемент.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных(ИмяПоля);
	НовыйЭлемент.ВидСравнения   = ВидСрав;
	Если ВидСрав = ВидСравненияКомпоновкиДанных.ВСписке Тогда
		НовыйЭлемент.ПравоеЗначение = НОВЫЙ СписокЗначений;
		НовыйЭлемент.ПравоеЗначение.ЗагрузитьЗначения(ЗначениеОтбора);
	Иначе
		НовыйЭлемент.ПравоеЗначение = ЗначениеОтбора;
	КонецЕсли;
	
КонецПроцедуры
Показать


Всё отрабатывает нормально, но если я меняю вид сравнения на "ВСписке" и передаю Список договоров (Пробовал СписокЗначений и Массив) отбор в отчёте остаётся пустым (Выводятся все значения).

Что не так? Чего не хватает?

З.Ы. Процедура "ЗаполнитьЭлементОтбораКомпоновкиДанных" в обоих случаях возвращает нормальные данные:
- Если "Равно" то "Правое значение" = СсылкаДоговор
- Если "ВСписке" то "Правое значение" = СписокЗначений, в котором Ссылки на договора.
Вознаграждение за ответ
Показать полностью
Найденные решения
5. SlavaKron 12.01.22 13:39 Сейчас в теме +1 $m
(1)
"ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры"
Сомневаюсь что это корректное имя поля компоновки данных.
AnryMc; andy_zhav; +2 Ответить
12. SlavaKron 12.01.22 14:19 Сейчас в теме
(11) Левое значение – обычно это поле данных, а не константное значение, как у вас. То есть слева у вас ссылка на предопределенное значение видов субконто "Договоры", а справа список ссылок справочника Договоры. Такое сравнение всегда вернёт Ложь. Повторюсь, где-то ошибка с определением левого значения в отборе.
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
5. SlavaKron 12.01.22 13:39 Сейчас в теме +1 $m
(1)
"ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры"
Сомневаюсь что это корректное имя поля компоновки данных.
AnryMc; andy_zhav; +2 Ответить
6. AnryMc 834 12.01.22 13:50 Сейчас в теме
(5)
Сомневаюсь что это корректное имя поля компоновки данных.


Но при ВидСравненияКомпоновкиДанных.Равно - РАБОТАЕТ!!!
11. AnryMc 834 12.01.22 14:15 Сейчас в теме
(5) Договоры - это предопределенное
Прикрепленные файлы:
12. SlavaKron 12.01.22 14:19 Сейчас в теме
(11) Левое значение – обычно это поле данных, а не константное значение, как у вас. То есть слева у вас ссылка на предопределенное значение видов субконто "Договоры", а справа список ссылок справочника Договоры. Такое сравнение всегда вернёт Ложь. Повторюсь, где-то ошибка с определением левого значения в отборе.
14. AnryMc 834 12.01.22 14:35 Сейчас в теме
(12) Почему работает при РАВНО?
15. AnryMc 834 12.01.22 14:42 Сейчас в теме
(12) Стандартный отчет ("на замочке" из https://www.bas-soft.eu/soft/bas-mass/bas-accounting-korp/) "Анализ субконто". Субконто: Контрагенты, Договора.
Всё работает (Контрагенты и договора) если "Равно", если ставишь "ВСписке" не работает.
Прикрепленные файлы:
АнализСубконто.erf
16. AnryMc 834 12.01.22 16:18 Сейчас в теме +1 $m
(12)
Пторюсь, где-то ошибка с определением левого значения в отборе.


Сбило что с Равно работало...
А работало т.к. этот отбор устанавливается при выборе состава субконто для анализа, а я его просто заполнял значением...
2. andy_zhav 189 12.01.22 13:29 Сейчас в теме
(1) а видСрав какой тип? точно ВидСравненияКомпоновкиДанных?
3. AnryMc 834 12.01.22 13:32 Сейчас в теме
(2)
ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина,ВидСравненияКомпоновкиДанных.Равно,"ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры", текДоговор);
4. user5300 793 12.01.22 13:36 Сейчас в теме
ЗначениеОтбора - Массив? Не пустой ?

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


Показать
7. AnryMc 834 12.01.22 13:52 Сейчас в теме
(4) Не пустой
Ссылки на Договора
9. AnryMc 834 12.01.22 14:11 Сейчас в теме
(4) Ваш вариант тоже не срабатывает...
В обеих случаях см. рис.

Вся разница:
Если "РАВНО" - то 1 Ссылка
Если "ВСПИСКЕ" - Список Значений в котором несколько Ссылок
Прикрепленные файлы:
8. vadim.semyonov.rzn 12.01.22 14:09 Сейчас в теме
А БСПшный "ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка" тоже не работает?
10. AnryMc 834 12.01.22 14:12 Сейчас в теме
(8)
БСПшный "ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка" тоже не работает?


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

Работает с любыми видами отбора, как "равно", так и "в списке".
17. AnryMc 834 12.01.22 16:21 Сейчас в теме
Запутался с постами и забрал вознаграждение...
Добавляю снова и отдаю в (5)
Оставьте свое сообщение
Вакансии
Бизнес-аналитик 1С
Санкт-Петербург
зарплата от 150 000 руб. до 200 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 180 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Программист 1С
Нижний Новгород
зарплата от 170 000 руб.
Полный день

Администратор 1C
Москва
зарплата до 110 000 руб.
Полный день