Нашёл такие грабли – когда делаешь параметр списком значений, СКД зачем-то сама в этот список вставляет строку с пустым значением.
Я этот параметр передаю в запрос, и если тип параметра является иерархическим справочником, это пустое значение похоже отбирает любого родителя в иерархии, и как следствие, все значения справочника. Кстати, такой же косяк можно увидеть в отборах, если сделать вид сравнения “в группе из списка” и в список добавить строку с пустым значением.
А так как юзер тупо заполняет этот список подбором, то ему по фигу, что там какие-то пустые значения. Объяснять, что пустых значения в списке надо удалять – бесполезно. Виноват-то программист!
Нашёл, как это лечить, может кому-то пригодится.
Посты от Июль 12th, 2010
В данной статье мы попробуем объяснить устройство системы компоновки данных понятным языком.
Фактически, формирование отчета средствами СКД разбито на несколько этапов. Причем нужно понимать, что разработчик может внести свои изменения во время любого из этапов.
Для того, чтобы программно установить схему их XML файла, необходимо выполнить следующее:
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Фильтр = "Файлы XML (*.xml) |*.xml"; Если НЕ Диалог.Выбрать() Тогда Возврат; КонецЕсли; ЧтениеXML = Новый ЧтениеXML; Попытка ЧтениеXML.ОткрытьФайл(Диалог.ПолноеИмяФайла); Исключение Сообщить("Невозможно открыть xml-файл"); Возврат; КонецПопытки; СхемаКомпоновкиДанных = СериализаторXDTO.ПрочитатьXML(ЧтениеXML, ,Тип("СхемаКомпоновкиДанных")); ЧтениеXML.Закрыть();
Теперь в переменной СхемаКомпоновкиДанных содержится схема, с которой можно делать что угодно. Например сформировать отчет по примеру отсюда.