Версия для печати темы (https://pro1c.org.ua/index.php?showtopic=18297)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Система компоновки данных _ Проблема при отборе в СКД

Автор: rpodgornyy 11.06.14, 19:05

Коллеги, помогите, плз, со следующей проблемой.

Конфигурация УТ. Создаю новый отчёт с использованием СКД. Отчёт формируется без проблем. Для удобства использования хочу сделать форму настроек, в которой будет программно устанавливаться параметр. Создал реквизит "Номенклатура" - "СправочникСсылка.Номенклатура", затем создаю обычную ФормуОтчета, где устанавливаю поле "Номенклатура" и задаю событие "При изменении".

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


При выполнении отчёта, когда выбираю параметр "Номенклатура", получаю следующую ошибку:

{Форма.ФормаОтчета.Форма(5)}: Ошибка при вызове метода контекста (Получить)
ЭлементОтбора = Настройки.Отбор.Элементы.Получить(0);
по причине:
Значение индекса выходит за границы диапазона

В чём может быть проблема? upset.gif

Автор: logist 11.06.14, 19:06

В СКД на вкладке Отбор нет ни одного поля отбора, а должно быть Номенклатура.

Автор: Rayne 12.06.14, 7:51

Цитата
ЭлементОтбора.ПравоеЗначение = Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура);


Доставило... Для поля типа СправочникСсылка поискать в справочнике по наименованию, хотя Номенклатура - и так уже СправочникСсылка.

По поводу отбора - либо в самой СКД добавьте такой отбор и сделайте его по умолчанию отключенным, либо перед присвоением значения проверяйте, есть ли отбор в КомпоновщикНастроек.Настройки.Отбор.Элементы

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua