Имя: Пароль:
1C
 
8.3. УФ. Глючит ОтборСтрок на поле ТЧ
0 SeiOkami
 
28.07.15
09:46
Здравия всем!

Платформа 8.3.5.1231. Конфа не имеет значения (самописка).

Есть отчет. У него ТЧ, где есть булевная колонка (пусть будет "Пометка"). На управляемую форму выведены 2 таблицы привязанные к этой ТЧ. ПриСозданииНаСервере я на одну таблицу устанавливаю отбор строк, где "Пометка" = Истина, а на другую, где она "Ложь". Логика такая - пользователи нажимают на флажок "Пометка" и строка визуально переносится в другую таблицу, фактически же находится в той же ТЧ и меняется только флажок.

Так вот, отбор строк срабатывает прекрасно. До того момента как я начинаю нажимать галки. Если я нажму галку в Таблице1, то в ней набор строк больше не изменится. То есть я могу сколько угодно галку включать\отключать, но строка все равно в Таблице1 останется. Таблица2 при этом будет работать как надо, но если в ней нажмешь галку - сломается и эта таблица. Ради эксперимента вывел третью таблицу без каких либо отборов. Если в ней меняю галку, то ничего не ломается. Повесил на таблицы обработчик ПриИзменении() в котором для таблиц вызываю Обновить(); Не помогает.

В общем, что это за странное поведение? Как мне его "починить"?
1 Fedor-1971
 
28.07.15
09:52
Для начала, попробуй делать не Обновить(), а заново устанавливать ОтборСтрок().
Код покажи, может что-то и прояснится.
2 SeiOkami
 
28.07.15
09:58
(1), забыл написать, что пробовал. Работает, но
1. тупит (галочки-то быстро лепим)
2. постоянно прыгает в начало списка, что тоже неюзабельно

код простой.

Элементы.Таблица1.ОтборСтрок = Новый ФиксированнаяСтруктура("Пометка", Истина);

Элементы.Таблица2.ОтборСтрок = Новый ФиксированнаяСтруктура("Пометка", Ложь);
3 SeiOkami
 
28.07.15
10:00
+ Пробовал условное оформление на "Видимость" поставить. Постоянные глюки с прорисовкой шапки. Её то нет, то она кривая
4 DmitrO
 
28.07.15
10:00
Ну, по идее, ты вводишь данные не соответствующие текущему отбору, что в общем случае, наверняка, не рассматривалось разработчиками платформы как правильный/возможный сценарий использования.
5 Fedor-1971
 
28.07.15
10:05
(2) подключи ОбработчикОжидания и обновляй отборы в нём чрез NN секунд
6 SeiOkami
 
28.07.15
10:15
(5), неюзабельно. Выходит, что строки будут переносится с задержкой + постоянно таблицы будут прыгать в начало списка
7 DmitrO
 
28.07.15
10:15
Я бы сценарий такого ввода данных реализовал так: две таблицы без отборов, без флажков, у каждой свои данные. Перевод из одной в другую выполнялся бы драгэндропом (с учетом множественного выделения).
Даже если для конечного результата нужна одна таблица с будевым полем принадлежности к одному из двух наборов, получал бы ее программно сливая две в одну.
8 DmitrO
 
28.07.15
10:16
*с булевым полем принадлежности
9 SeiOkami
 
28.07.15
10:16
(4), я не вывожу данные. Я меняю данные и если они не соответствуют отбору то вполне логичено, что платформа должна их скрывать
10 SeiOkami
 
28.07.15
10:17
(7) реализовать можно по-разному. Более интересно как починить глюк
11 DmitrO
 
28.07.15
10:18
(9)установкой флажка ты ВВОДИШЬ данные, именно это я и написал. Причем тут вывод.
12 SeiOkami
 
28.07.15
10:20
(11), это не важно, в любом случае данные, не соответствующие отбору, должны быть платформой скрыты
13 DmitrO
 
28.07.15
10:22
(12)понимаешь, абсурд ситуации в том, что при вводе данных строка исчезает, именно этот сценарий и не отвергают разработчики платформы.
14 DmitrO
 
28.07.15
10:26
Представь редактируемое текстовое поле ввода с таким условием видимости: если во вводимом тексте содержится строка "сок", то надо чтобы оно было не видимым.
15 DmitrO
 
28.07.15
10:27
(13) читать так:
понимаешь, абсурд ситуации в том, что при вводе данных строка исчезает, именно этот сценарий и отвергают разработчики платформы.
16 SeiOkami
 
28.07.15
10:29
(15), это глюк. Просто глюк. В обычных формах всё работает. А в УФ просто глюк.
17 DmitrO
 
28.07.15
10:34
Понимаешь, отбор строк отрабатывает на сервере. Так работают УФ.
18 Fedor-1971
 
28.07.15
10:35
(2)тогда имеет смысл сделать через кнопку перенос из одной таблицы в другую.
Примерно такая логика: выдели всё что тебе не нужно в Таблице1 и нажми кнопку для переноса в Таблицу2 и наоборот.

(15) я думаю что нет, ОтборСтрок - разовое действие, отобрал и работай с ними, для динамики оно не предназначено. Попробуй использовать Отбор у ТЧ, а не ОтборСтрок, оно как раз таки на динамику рассчитано.
19 DmitrO
 
28.07.15
10:36
Кстати, можно эту задачу решить и без отбора строк. Но все равно: 2 таблицы со своими данными, и при изменении флажка программно перемещать строку.
Тогда будет быстро и как ты хочешь, да еще и в рамках клиента, без серверных вызовов.
20 SeiOkami
 
28.07.15
10:37
Пока реализовал так. При двойном щелчке сам программно меняю флажок и ничего не ломается) Это странный костыль, но работает