Рубрики
1С: Предприятие 8.х УФ (Управляемые Формы) Формы

Эмуляция ПриИзмененииДанныхТекущейСтроки для ДинамическогоСписка На УФ

когда у тебя интерфейс с несколькими ДинамическимиСписками на одной форме, в разных вкладках, например, и есть подчиненные таблицы/поля/элементы возникает проблема, что использование стандартной кнопки Обновить на форме для Динамического списка не покрывает всех необходимых потребностей.

Решение:

  1. Создать команду-аналог ОбновитьАктивныйДинамическийСписок
  2. В ее процедуре определять активную вкладку
  3. По активной владке задавать имя ДинамическогоСписка.
  4. Вызывать Элементы.ИмяДинамическогоСписка.Обновить() а также все вызовы для события ПриАктивизацииСтроки

Пример:

<code>// АктивныйСписок() - Возвращает ДинамическийСписок или его имя для Активной страницы ОсновнаяПанель этой формы
//
// Параметры:
//  ВернутьДинамическийСписок - Булево - = Истина - функция возвращает динамический список активной страницы, 
//                                       = Ложь   - функция возвращает имя динамического списка активной страницы
// 
// Возвращаемое значение:
//  ДинамическийСписок, Строка - СписокДокументов/СписокДляТЧ
//
&amp;НаКлиенте
Функция АктивныйСписок(Строкой = Истина)
    
    ИмяСтраницы = Элементы.Панель.ТекущаяСтраница.Имя;
    
    Если ИмяСтраницы = "ГруппаФормыДокументы" Тогда
        ИмяСписка = "СписокДокументов";
    ИначеЕсли ИмяСтраницы = "ГруппаФормыТЧ" Тогда
        ИмяСписка = "СписокДляТЧ";
    КонецЕсли; 
    
    Если Строкой Тогда
        Результат = ИмяСписка;
    Иначе
        Результат = ЭтаФорма&#91;ИмяТекущейСтраницы];
    КонецЕсли;
    
    Возврат Результат;
КонецФункции

// Процедура - Обновить активный список - аналог системной команды платформы для динамического списка чтобы обновлять подчиненные списки без смены текущей строки
//
// Параметры:
//  Команда  - Команда - любая команда
//
&amp;НаКлиенте
Процедура ОбновитьАктивныйСписок(Команда = Неопределено)
    
    ИмяСписка = АктивныйСписок(Ложь);
    Элементы&#91;ИмяСписка].Обновить();
    ОбновитьПодчиненныеДанные(ИмяСписка);
КонецПроцедуры
</code>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.