Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отбор из реквизита
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
egorkalm
Добрый вечер.

Помогите разобраться с проблемой.

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

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

&НаСервере
Функция тест(ттт)
     Возврат Справочники.НоменклатурныеГруппы.НайтиПоНаименованию(ттт)
КонецФункции // тест()



 i 

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

так не?
egorkalm
Цитата(logist @ 19.10.12, 20:17) необходимо зарегистрироваться для просмотра ссылки
&НаКлиенте
Процедура СписокНоменклатурныхГруппПриАктивизацииСтроки(Элемент)
    ТекущаяСтрока = Элементы.СписокНоменклатурныхГрупп.ТекущиеДанные;
    Отбор = хвСправочникКатегорий.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Отбор.Использование = Истина;
    Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Владелец");
    Отбор.ПравоеЗначение = ТекущаяСтрока.Ссылка;
КонецПроцедуры

так не?


В табл.части роль ссылка выполняет реквизит ТекущаяСтрока.НоменклатурнаяГруппа, это и есть ссылка на владельца. Но когда его подставляешь отбор ничего не показывает.
logist
А вообще, зачем вы накладываете отбор компоновки на динамический список? если можно передавать параметры отбора в запрос списка..
egorkalm
Цитата(logist @ 19.10.12, 20:29) необходимо зарегистрироваться для просмотра ссылки
А вообще, зачем вы накладываете отбор компоновки на динамический список? если можно передавать параметры отбора в запрос списка..


Я посмотрел как это делается в стандартной конфе и сделал аналогично. По другому не знаю как можно. Подскажите, плиз, если есть более правильный вариант.
logist
Цитата(egorkalm @ 19.10.12, 20:33) необходимо зарегистрироваться для просмотра ссылки
Я посмотрел как это делается в стандартной конфе

Плохо смотрели.
В стандартной конфе откройте общий модуль "УправлениеНебольшойФирмойКлиент", и посмотрите раздел процедур "ПРОЦЕДУРЫ И ФУНКЦИИ РАБОТЫ С ДИНАМИЧЕСКИМИ СПИСКАМИ", велосипед уже изобрели, вам остается научиться на нем ездить smile.gif
egorkalm
Цитата(logist @ 19.10.12, 20:43) необходимо зарегистрироваться для просмотра ссылки
Плохо смотрели.
В стандартной конфе откройте общий модуль "УправлениеНебольшойФирмойКлиент", и посмотрите раздел процедур "ПРОЦЕДУРЫ И ФУНКЦИИ РАБОТЫ С ДИНАМИЧЕСКИМИ СПИСКАМИ", велосипед уже изобрели, вам остается научиться на нем ездить smile.gif


Вопрос не в этом. Вопрос в том,почему

 Отбор.ПравоеЗначение = тт;
- работает

а

Отбор.ПравоеЗначение = ТекущаяСтрока.номенклатурнаягруппа; - не работает

При этом в отладчике

тт = ТекущаяСтрока.номенклатурнаягруппа;


Т.е. это АБСОЛЮТНО одинаковые переменные, но отбор на них реагирует по разному ...


Цитата(egorkalm @ 19.10.12, 19:41) необходимо зарегистрироваться для просмотра ссылки
Помогите разобраться с проблемой.



Осталось только грязно выругаться ....

Проблема оказалась банальна, не обнулил значение отбора:

СправочникКатегорий.Отбор.Элементы.Очистить();


Как только добавил эту волшебную строку - все заработало, как часы smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.