Добрый день Знатоки!
Разместил таблицу значений на управляемой форме (Тонкий клиент). Заполняю таблицу программно.
На форме делаю отбор строк:
Элементы.Таблица.ОтборСтрок = Новый ФиксированнаяСтруктура("Машрут", Машрут);
Хочу отменить отбор:
&НаКлиенте
Процедура МашрутОчистка(Элемент, СтандартнаяОбработка)
Элементы.Таблица.ОтборСтрок = Неопределено;
Элементы.Таблица.Обновить();
КонецПроцедуры
Но отбор не отменяется.
Подскажите, пожалуйста как очистить отбор строк.
Разместил таблицу значений на управляемой форме (Тонкий клиент). Заполняю таблицу программно.
На форме делаю отбор строк:
Элементы.Таблица.ОтборСтрок = Новый ФиксированнаяСтруктура("Машрут", Машрут);
Хочу отменить отбор:
&НаКлиенте
Процедура МашрутОчистка(Элемент, СтандартнаяОбработка)
Элементы.Таблица.ОтборСтрок = Неопределено;
Элементы.Таблица.Обновить();
КонецПроцедуры
Но отбор не отменяется.
Подскажите, пожалуйста как очистить отбор строк.
По теме из базы знаний
- Проведение/снятие с проведения документов/очистки движений не проведенных, перезаписи ссылочных объектов с отборами для баз 1С 8.1-8.3 УТ 10.3/11, БП 2/3, КА 1.1/2, УНФ 1.6, ЗУП 3
- Заполняем по шаблону (по умолчанию)
- Разные хм... неожиданности при работе с УТ 11 и платформой
- Дружелюбный интерфейс пометки и отмены пометки в диалоге табличных полей, для управляемых форм.
- Обзор полезных методов БСП 3.1.4
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Уверены, что этот обработчик вызывается? Он не будет вызываться, если просто удалить текст в данном поле. Он будет вызываться только по соответствующей кнопке или по Shift+F4.
Если он вызывается, то смотрите дополнительно вызываемые обработчики.
Элементы.Таблица.Обновить(); это лишнее. Может вызывать дополнительные обработчики, в которых сами же и занесли наложение отбора.
Процедура МашрутОчистка(Элемент, СтандартнаяОбработка)
Уверены, что этот обработчик вызывается? Он не будет вызываться, если просто удалить текст в данном поле. Он будет вызываться только по соответствующей кнопке или по Shift+F4.
Если он вызывается, то смотрите дополнительно вызываемые обработчики.
Элементы.Таблица.Обновить(); это лишнее. Может вызывать дополнительные обработчики, в которых сами же и занесли наложение отбора.
Этот обработчик вызывается при нажатии на кнопку.
Чтобы разобраться с проблемой я создал новую форму. Заполнил ее произвольными (не ссылочными) значениями. И добавил кнопки отбора. Так работает:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Строка = Таблица.Добавить();
Строка.Названия = "Видно";
Строка.Видимость = Истина;
Строка = Таблица.Добавить();
Строка.Названия = "Не видно";
Строка.Видимость = Ложь;
Строка = Таблица.Добавить();
Строка.Названия = "Видно";
Строка.Видимость = Истина;
Строка = Таблица.Добавить();
Строка.Названия = "Не видно";
Строка.Видимость = Ложь;
Строка = Таблица.Добавить();
Строка.Названия = "Видно";
Строка.Видимость = Истина;
//Таблица.Загрузить(Запрос.Выполнить().Выгрузить().Скопировать());
КонецПроцедуры
&НаКлиенте
Процедура Отбор(Команда)
Элементы.Таблица.ОтборСтрок = Новый ФиксированнаяСтруктура("Видимость", Истина);
КонецПроцедуры
&НаКлиенте
Процедура УдалитьОтбор(Команда)
Элементы.Таблица.ОтборСтрок = Неопределено;
КонецПроцедуры
Остается понять, чем отличается реальная форма от примерчика.
Чтобы разобраться с проблемой я создал новую форму. Заполнил ее произвольными (не ссылочными) значениями. И добавил кнопки отбора. Так работает:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Строка = Таблица.Добавить();
Строка.Названия = "Видно";
Строка.Видимость = Истина;
Строка = Таблица.Добавить();
Строка.Названия = "Не видно";
Строка.Видимость = Ложь;
Строка = Таблица.Добавить();
Строка.Названия = "Видно";
Строка.Видимость = Истина;
Строка = Таблица.Добавить();
Строка.Названия = "Не видно";
Строка.Видимость = Ложь;
Строка = Таблица.Добавить();
Строка.Названия = "Видно";
Строка.Видимость = Истина;
//Таблица.Загрузить(Запрос.Выполнить().Выгрузить().Скопировать());
КонецПроцедуры
&НаКлиенте
Процедура Отбор(Команда)
Элементы.Таблица.ОтборСтрок = Новый ФиксированнаяСтруктура("Видимость", Истина);
КонецПроцедуры
&НаКлиенте
Процедура УдалитьОтбор(Команда)
Элементы.Таблица.ОтборСтрок = Неопределено;
КонецПроцедуры
Остается понять, чем отличается реальная форма от примерчика.
Попробуйте так:
1. Отбор
Элементы.ТаблицаДокумента.ОтборСтрок = Новый ФиксированнаяСтруктура(НовыйСтруктура("Параметр1, Параметр2", Истина, Истина));
2. Отмена отбора
Элементы.ТаблицаДокумента.ОтборСтрок = Новый ФиксированнаяСтруктура(НовыйСтруктура(" , ", , ));
У меня работает.
1. Отбор
Элементы.ТаблицаДокумента.ОтборСтрок = Новый ФиксированнаяСтруктура(НовыйСтруктура("Параметр1, Параметр2", Истина, Истина));
2. Отмена отбора
Элементы.ТаблицаДокумента.ОтборСтрок = Новый ФиксированнаяСтруктура(НовыйСтруктура(" , ", , ));
У меня работает.
Беда в том, что, даже если сработает очистка - после очистки опять заходит в "При изменении" и заполняет отбор пустым значением. Поэтому надо так:
Если ЗначениеЗаполнено(Маршрут) Тогда
Элементы.Таблица.ОтборСтрок = Новый ФиксированнаяСтруктура("Машрут", Машрут);
Иначе
Элементы.Таблица.ОтборСтрок = Неопределено;
КонецЕсли;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот