Имя: Пароль:
1C
1C 7.7
v7: Переключатель и недоступность части его значений?
,
0 MWWRuza
 
гуру
28.10.22
21:45
Добрый день!
1 MWWRuza
 
гуру
28.10.22
21:53
Возникла необходимость сделать на форме переключатель с кучей значений(17)...
Все работает. Но захотелось, по определенным условиям, делать часть из них не доступным.
И как только я это делаю, начинает не отрабатывать возврат значений переключателя.
Т.е., переключаю как мне нужно, например значение с 1 на 3, (точка 2 при этом не доступна) точка перемещается, а в отладчике остается значение переключателя 1...
Это баг, фича, или я что-то не так делаю?

PS Если не понятно написал, могу демку накидать, где этот эффект виден...
2 Смотрящий
 
28.10.22
22:02
На каждый элемент повесь функцию принудительно устанавливающую значение переключателя
3 MWWRuza
 
гуру
28.10.22
22:03
Что-бы было понятно, о чем я вообще говорю, первоначальная задача, скриншот: https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/i-458.jpg

Ряд переключателя(вертикальный), нужен для того, что-бы можно было перемещать слова, отмеченные переключателем, вверх/вниз, кнопками со стрелками справа.
Сами поля - это на самом деле не поля, а АктивеИксы, т.е., реально это кнопки на форме. Изменение данных в них, не требует подтверждения ентером..
4 MWWRuza
 
гуру
28.10.22
22:07
(2) Не понял... Я мышкой тыкаю в нужное значение, точка перемещается. А значение в модуле не меняется. Какую функцию для этого нужно повесить?
Типа, ПриВыбореЗначенияПер1(), П = 1 - ? П - это имя переключателя, идентификатор его первого в группе элемента.
5 MWWRuza
 
гуру
28.10.22
22:13
На скриншоте - процедура установки доступности элементов переключателя отключена, все 17 значений доступны.
Сейчас переключатель в положении 2. Кнопками стрелок, я двигаю его как хочу. Все отрабатывает.
Но, идея такая - сделать элементы переключателя, соответствующие пустым строкам - не доступными.
Как только я это делаю - все ломается, переключатель перестает работать - точка перемещается, а значение в модуле не меняется...
6 MWWRuza
 
гуру
28.10.22
22:21
Или это баг, связанный с использованием АктивеИксов вместо полей ввода?
Не думаю... Вроде сами поля никак с переключателями не связаны.
Попробую смоделитовать на чистой форме, только переключатель и установка некоторыз значений его недоступными по отдельной кнопке...
Если повторится выложу сюда.
7 MWWRuza
 
гуру
28.10.22
22:56
Вот демка: https://cloud.mail.ru/public/e6M3/iLAEwGmdQ
Эффект на ней не проявляется, все работает как нужно...
Видимо, что-то в рабочей обаботке, все-таки связано с АктивеИксами...
Короче, обойдусь без этой "хотелки"... :-( Пусть все переключатели доступны, не критично, просто так было бы "красивее".
8 MWWRuza
 
гуру
28.10.22
23:07
Думал, может что-то со сдвигом кнопками не то но нет. Тоже все работает. По ссылке обновленная демка, с кнопками вверх/вниз.
9 SleepyHead
 
гуру
29.10.22
04:49
Сделай список значений и заполняй его разрешенными значениями. Все равно выбрать можно только одно. Так и форма будет компактнее.
10 SleepyHead
 
гуру
29.10.22
04:50
Посмотрел картинку.. Тут логичнее всего сделать обыкновенные флажки.
11 MWWRuza
 
гуру
29.10.22
11:08
(9)(10) Тут задумка такая - ставлю точку переключателя возле нужного слова, и кнопками вверх/вниз перемещаю это слово.
Перемещается точка переключателя, и "тянет за собой" соответствующую строку.
Все это работает вполне успешно и давно.
Захотел "добавить красивостей", делать недоступным те точки переключателя строка возле которого пустая.
И вот стоит после сдвига строки установить доступеость части переключателей в 0, как перестает это все отрабатывать, начинает прыгать переключатель куда попало...
В отладчике вижу, что значение переключателя при следующих попытках изменить его, перестает меняться - остается тем-же, что было до установки доступности.
Возможно, что это как-то связано с нестандартными полями ввода, они там на АктивеИксах сделаны...
Потому как на демке, без полей ввода, воспроизвести этот эффект не получается.
Или по тому, что в демке я доступность полей устанавливаю "сразу, по кнопке", а в реальной обработке, динамически, при каждом сдвиге, в зависимости от длины строки данных поля ввода - если СтрДлина(нужная строка) = 0 тогда доступность соответствующего переключателя 0, иначе 1.
Попробую на демке это повторить, Добавлю поля ввода, обычные, не АктивеИкс, и  если не повторится, то все-таки значит АктивеИксы свои глюки добавляют.
12 MWWRuza
 
гуру
29.10.22
11:34
А флажки... Ну, можно конечно попробовать, сделать на флажках аналог переключателя - типа устанавливая один из 17 флажков, остальные 16 сбрасывать...
Х.з., возможно это и заработает, но, как-то это не кузяво... Да и лень... Делать "вручную", своей процедурой то, что должно само, на уровне системы отрабатывать в переключателе? Ну... Может быть, но, оно того не стоит, не та задача.
Независимо от того, куда вы едете — это в гору и против ветра!