powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Фигня с Доступность()
7 сообщений из 7, страница 1 из 1
Фигня с Доступность()
    #35439597
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу сделать некоторые элементы диалога на форме доступными/недоступными в зависимости от действий пользователя.
Написал процедурку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Процедура ДоступНомерПП(ТипП)
  Если ТипП= 1  Тогда
  	Форма.ПолеПП.Доступность( 0 );
  	Форма.СписокПП.Доступность( 0 );    
 	Форма.КнопкаУдал.Доступность( 0 );    
 Иначе
 	Форма.ПолеПП.Доступность( 1 );
  	Форма.СписокПП.Доступность( 1 );         
  	Форма.КнопкаУдал.Доступность( 1 );    
  КонецЕсли;	
КонецПроцедуры

Глюк в том, что после того как элемент стал "недоступным", обратно "достпным" он становиться категорически не хочет. Версия 1С 7.70.027. Как-нибудь обойти это можно?
...
Рейтинг: 0 / 0
Фигня с Доступность()
    #35439662
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оооо, это у меня беда с переключателями оказалась. 2 переключателя объеденены в одну группу. У каждого переключателя своя формула, а вызывается только формула первого переключателя из группы - будем переделывать.
...
Рейтинг: 0 / 0
Фигня с Доступность()
    #35441014
Supra93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeySVХочу сделать некоторые элементы диалога на форме доступными/недоступными в зависимости от действий пользователя.
Написал процедурку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Процедура ДоступНомерПП(ТипП)
  Если ТипП= 1  Тогда
  	Форма.ПолеПП.Доступность( 0 );
  	Форма.СписокПП.Доступность( 0 );    
 	Форма.КнопкаУдал.Доступность( 0 );    
 Иначе
 	Форма.ПолеПП.Доступность( 1 );
  	Форма.СписокПП.Доступность( 1 );         
  	Форма.КнопкаУдал.Доступность( 1 );    
  КонецЕсли;	
КонецПроцедуры

Глюк в том, что после того как элемент стал "недоступным", обратно "достпным" он становиться категорически не хочет. Версия 1С 7.70.027. Как-нибудь обойти это можно?
Интересная логика...
Код: plaintext
1.
  Если ТипП= 1  Тогда
  	Форма.ПолеПП.Доступность( 0 );
Код: plaintext
1.
 Иначе //ТипП= 0 
 	Форма.ПолеПП.Доступность( 1 );
...
Рейтинг: 0 / 0
Фигня с Доступность()
    #35441074
Provod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче я всегда в 7.7 делал так:

Чтобы все работало как часы нужно
1)Разместить на форме вычисляемое поле результатом работы которого должна быть функция
2)В функции строчка кода такая:

Функция Доступность()
Доступность = ?(КакоетоУсловиеВыполнениеКоторогоДаетДоступКЭлементам,1,0);

//Далее тупо

Форма.Кнопка.Доступность(Доступность);
Форма.Кнопка1.Доступность(Доступность);
Форма.Кнопка2.Доступность(Доступность);

Возврат ("");
КонецФункции

//Работает быстро и всегда правильно!
//
...
Рейтинг: 0 / 0
Фигня с Доступность()
    #35445261
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, с Доступностью разобрался.

Теперь следующая заморочка вокруг которой я хожу уже второй день:
Есть Поле (ПолеПП), куда пользователь вводит данные (номера), нажимает Enter, срабатывает простая процедура:
Код: plaintext
1.
2.
3.
4.
5.
Процедура ВводвПолеПП()
  // Переносит данные из ПоляПП в СписокПП 
  СписокПП.ДобавитьЗначение(ПолеПП);
  ПолеПП = "";    
КонецПроцедуры
которая добавляет в Список новую строку с данными. Фокус при этом убегает на Список, а очень бы хотелось вернуть его обратно на ПолеПП.
Что уже пробовал:
- В процедуре ВводвПолеПП() активный элемент все еще ПолеПП, фокус убегает на Список после окончания процедуры, поэтому активизировать что-то бесполезно.
- тупо ставил строку "Активизировать("ПолеПП");" в процедуру, которая вызывалась из формул Списка - никакого эффекта.
- единственный вариант который типо работает, это когда процедура со строкой Активизировать("ПолеПП"); вызывается при нажатии на какую-нибудь кнопку - но тогда теряется весь смысл, ведь фокус должен сам автоматом возвращаться после Enter на ПолеПП.
...
Рейтинг: 0 / 0
Фигня с Доступность()
    #35446539
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Единственное что пока смог сделать - пользователю теперь нажимает 2 раз Enter и фокус возвращается в ПолеПП
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Процедура ВводвПолеПП()
  // Переносит данные из ПоляПП в СписокПП 
  СписокПП.ДобавитьЗначение(ПолеПП);
  ПолеПП = ""; 
  ПолеППввод =  1 ;
КонецПроцедуры

Процедура фыв() 
  Если ПолеППввод> 0  Тогда
  	   ПолеППввод =  0 ;
  	   Активизировать("ПолеПП");
  КонецЕсли;
КонецПроцедуры

Процедура фыв() прописана в формуле СписокПП и вызывается когда в списке нажимают Enter(или клик мыши). Чтобы отличить простые нажатия Enter, от тех которые когда пользователь перескочил в список после ввода данных в ПолеПП - пришлось ввести дополн. переменную - ПолеППввод
...
Рейтинг: 0 / 0
Фигня с Доступность()
    #35448003
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем вот так обошел проблему с фокусом, добавив в выше указанный код эмуляцию нажатия клавиши Enter
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Процедура фыв() 
  Сообщить("dfgdfgfd - " + ПолеППввод);	
  Если ПолеППввод> 0  Тогда
  	   ПолеППввод =  0 ;
  	   Активизировать("ПолеПП");
  КонецЕсли;
КонецПроцедуры

Процедура ВводвПолеПП()
  Перем WshSell;
  
  // Переносит данные из ПоляПП в СписокПП 
  СписокПП.ДобавитьЗначение(ПолеПП);
  ПолеПП = ""; 
  ПолеППввод =  1 ;  
  // эмулируем нажатие Enter'а
  WshSell = СоздатьОбъект("WScript.Shell");
  WshSell.SendKeys("{ENTER}");			 
КонецПроцедуры
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Фигня с Доступность()
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]