Имя: Пароль:
1C
1С v8
Обновление динамического списка
0 nogapd
 
20.04.16
20:23
Дорабатываю форму выбора номенклатуры: разместил на форме программно дополнительный динамический список:

ИмяРеквизита = "ОИК_ОстаткиПоХарактеристикам";
    
    Если Форма.Элементы.Найти(ИмяРеквизита) = Неопределено Тогда
        
        ТекстЗапроса =
        "ВЫБРАТЬ
        |    СвободныеОстаткиОстатки.Номенклатура КАК Номенклатура,
        |    ЕСТЬNULL(СвободныеОстаткиОстатки.Характеристика, ОстаткиВПути.Характеристика) КАК Характеристика,
        |    СвободныеОстаткиОстатки.ВНаличииОстаток КАК ВНаличии,
        |    СвободныеОстаткиОстатки.ВРезервеСоСкладаОстаток КАК ВРезерве,
        |    ОстаткиВПути.Количество КАК ВПути,
        |    ЕСТЬNULL(СвободныеОстаткиОстатки.Номенклатура.ЕдиницаИзмерения, ОстаткиВПути.Номенклатура.ЕдиницаИзмерения) КАК ЕдиницаИзмерения
        |ИЗ
        |    РегистрНакопления.СвободныеОстатки.Остатки(, {(Номенклатура = &Номенклатура) КАК Поле2}) КАК СвободныеОстаткиОстатки
        |        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |            ВложенныйЗапрос.Номенклатура КАК Номенклатура,
        |            СУММА(ВложенныйЗапрос.Количество) КАК Количество,
        |            ВложенныйЗапрос.Характеристика КАК Характеристика
        |        ИЗ
        |            (ВЫБРАТЬ
        |                ДоступныеОстаткиПланируемыхПоступлений.Номенклатура КАК Номенклатура,
        |                ДоступныеОстаткиПланируемыхПоступлений.Характеристика КАК Характеристика,
        |                МАКСИМУМ(ДоступныеОстаткиПланируемыхПоступлений.Количество) КАК Количество
        |            ИЗ
        |                РегистрСведений.ДоступныеОстаткиПланируемыхПоступлений КАК ДоступныеОстаткиПланируемыхПоступлений
        |            ГДЕ
        |                ДоступныеОстаткиПланируемыхПоступлений.ДатаДоступности > ДАТАВРЕМЯ(1, 1, 1)
        |                И ДоступныеОстаткиПланируемыхПоступлений.Номенклатура = &Номенклатура
        |            
        |            СГРУППИРОВАТЬ ПО
        |                ДоступныеОстаткиПланируемыхПоступлений.Номенклатура,
        |                ДоступныеОстаткиПланируемыхПоступлений.Характеристика) КАК ВложенныйЗапрос
        |        
        |        СГРУППИРОВАТЬ ПО
        |            ВложенныйЗапрос.Номенклатура,
        |            ВложенныйЗапрос.Характеристика) КАК ОстаткиВПути
        |        ПО СвободныеОстаткиОстатки.Номенклатура = ОстаткиВПути.Номенклатура
        |            И СвободныеОстаткиОстатки.Характеристика = ОстаткиВПути.Характеристика";
        
        МассивРеквизитов = Новый Массив;
        МассивРеквизитов.Добавить(Новый РеквизитФормы(ИмяРеквизита, Новый ОписаниеТипов("ДинамическийСписок"),,"Поле таблицы"));
        Форма.ИзменитьРеквизиты(МассивРеквизитов);
        
        Форма[ИмяРеквизита].ПроизвольныйЗапрос = Истина;
        Форма[ИмяРеквизита].АвтоматическоеСохранениеПользовательскихНастроек = Истина;
        Форма[ИмяРеквизита].ТекстЗапроса = ТекстЗапроса;
        Форма[ИмяРеквизита].ДинамическоеСчитываниеДанных = Истина;
        
        Элемент = Форма.Элементы.Вставить(ИмяРеквизита, Тип("ТаблицаФормы"), Форма.Элементы.ГруппаПанельКатегорий);
        Элемент.Отображение =  ОтображениеТаблицы.Список;
        Элемент.КоманднаяПанель.Видимость = Ложь;
        Элемент.ПутьКДанным = ИмяРеквизита;
        Элемент.Видимость = Истина;
        Элемент.ОбновлениеПриИзмененииДанных = ОбновлениеПриИзмененииДанных.Авто;
        //добавляем колонки динамического списка
        КолонкаХарактеристика = Форма.Элементы.Добавить("Характеристика" + ИмяРеквизита, Тип("ПолеФормы"), Форма.Элементы[ИмяРеквизита]);
        КолонкаХарактеристика.Вид = ВидПоляФормы.ПолеВвода;
        КолонкаХарактеристика.ПутьКДанным = ИмяРеквизита + ".Характеристика";
        КолонкаВНаличии = Форма.Элементы.Добавить("ВНаличии" + ИмяРеквизита, Тип("ПолеФормы"), Форма.Элементы[ИмяРеквизита]);
        КолонкаВНаличии.Вид = ВидПоляФормы.ПолеВвода;
        КолонкаВНаличии.ПутьКДанным = ИмяРеквизита + ".ВНаличии";
        КолонкаВРезерве = Форма.Элементы.Добавить("ВРезерве" + ИмяРеквизита, Тип("ПолеФормы"), Форма.Элементы[ИмяРеквизита]);
        КолонкаВРезерве.Вид = ВидПоляФормы.ПолеВвода;
        КолонкаВРезерве.ПутьКДанным = ИмяРеквизита + ".ВРезерве";
        КолонкаВПути = Форма.Элементы.Добавить("ВПути" + ИмяРеквизита, Тип("ПолеФормы"), Форма.Элементы[ИмяРеквизита]);
        КолонкаВПути.Вид = ВидПоляФормы.ПолеВвода;
        КолонкаВПути.ПутьКДанным = ИмяРеквизита + ".ВПути";
        КолонкаЕдиницаИзмерения = Форма.Элементы.Добавить("ЕдиницаИзмерения" + ИмяРеквизита, Тип("ПолеФормы"), Форма.Элементы[ИмяРеквизита]);
        КолонкаЕдиницаИзмерения.Вид = ВидПоляФормы.ПолеВвода;
        КолонкаЕдиницаИзмерения.ПутьКДанным = ИмяРеквизита + ".ЕдиницаИзмерения";

    КонецЕсли;


Далее перехватываю событие "ПриАктивизацииСтроки" у основного списка и устанавливаю параметры для мноюсозданного динамического списка и ничего не проиходит - список не фильтруется:

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
    
    ТекущаяНоменклатура = ОИК_ТекущаяНоменклатура();
    ОИК_ОбновитьОстаткиПоХарактеристикам(ТекущаяНоменклатура);
    
КонецПроцедуры

&НаСервере
Процедура ОИК_ОбновитьОстаткиПоХарактеристикам(ТекущаяНоменклатура)
        ЭтотОбъект["ОИК_ОстаткиПоХарактеристикам"].Параметры.УстановитьЗначениеПараметра("Номенклатура", ТекущаяНоменклатура);
        
КонецПроцедуры

Подскажите что делаю не так?
1 Cyberhawk
 
20.04.16
21:35
Используй настройки компоновщика настроек ДС
2 nogapd
 
21.04.16
10:30
Попробовал так, эффекта ноль

ЭтотОбъект["ОИК_ОстаткиПоХарактеристикам"].КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Номенклатура", ТекущаяНоменклатура);
3 Pistol
 
21.04.16
10:36
Там в СП в описании ПриАктивизацииСтроки про контекстные вызовы явно написано.
И убери фигурные скобки вокруг параметров, они ж у тебя обязательные всегда.