Имя: Пароль:
1C
1С v8
УстановитьДоступность()
0 vadim777
 
06.06.16
21:32
В семерке для установления видимости и доступности элементов формы широко использовалась текстовая функция с именем УстановитьДоступность(), возвращающая пустое текстовое значение, и которую располагали за пределами макета формы. В восьмерке такой подход не используется. Почему? Что вместо?
1 vadim777
 
06.06.16
21:52
(0) Процедура ОбновлениеОтображения()?
2 Lexey_
 
06.06.16
22:07
(1) что сделать-то нужно? Без привязки к семерке
3 Cyberhawk
 
06.06.16
22:07
"возвращающая пустое текстовое значение... Что вместо?"
Ответ:
Функция ВместоУстановитьДоступность()
Возврат "";
КонецФункции
4 vadim777
 
07.06.16
06:13
(2) При изменении переключателя - изменить доступность некоторых полей формы.
5 torgm
 
07.06.16
06:33
(4) а в переключателе прописать?
6 vadim777
 
07.06.16
08:28
(5) В семерке все управление доступностью было в одном месте. А если прописать процедуру в переключателе, то нужно озаботиться о вызове ее и при открытии формы.
7 Mankubus
 
07.06.16
08:37
(6) и это нормально
8 torgm
 
07.06.16
09:09
(6) То есть просто ленишься :)
9 FIXXXL
 
07.06.16
09:18
(6) ПриИзмененииДанных формы попробуй
10 vadim777
 
07.06.16
09:52
(9) Не работает. Также не работает ОбновлениеОтображения().
У меня внешняя обработка "Импорт из КБ". Если отмечен переключатель НаЗаданнуюДату - становится доступным поле ввода даты. Пробую обе процедуры - в них процесс даже не заходит.
Процедура ОбновлениеОтображения()
    Сообщить(ДатаФормированияБВ);
    Если ДатаФормированияБВ = 1 Тогда
        ЭлементыФормы.ДатаДок.Доступность = Истина;
    Иначе
        ЭлементыФормы.ДатаДок.Доступность = Ложь;
    КонецЕсли;
КонецПроцедуры

Процедура ПриИзмененииДанных()
    Сообщить(ДатаФормированияБВ);
    Если ДатаФормированияБВ = 1 Тогда
        ЭлементыФормы.ДатаДок.Доступность = Истина;
    Иначе
        ЭлементыФормы.ДатаДок.Доступность = Ложь;
    КонецЕсли;
КонецПроцедуры
11 FIXXXL
 
07.06.16
10:04
(10) у переключателя есть галка "ИзменяетДанные"?
12 Chainsaw
 
07.06.16
10:14
(11) Он банально события не прибиндил
13 vadim777
 
07.06.16
10:15
(11) Нет. Это и есть причина?
14 FIXXXL
 
07.06.16
10:17
(13) дерзай, экспериментируй
если не хочешь в обработчике переключателя писать-вызывать функции
15 Lexey_
 
07.06.16
10:17
(12) банально нет события ПриИзмененииДанных() у формы внешней обработки
16 vadim777
 
07.06.16
10:17
(11) Установил галку - все равно процесс не входит в ОбновлениеОтображения() и ПриИзмененииДанных()
17 vadim777
 
07.06.16
10:23
(14) Придется, 1С назначила обработчик КнопкаВыполнитьНажатие. Текст обработчика:
Процедура КнопкаВыполнитьНажатие(Кнопка)
    Сообщить(Кнопка);
    // Вставить содержимое обработчика.
КонецПроцедуры
Но эту-же процедуру 1С назначила и кнопке Выполнить. Как определить, какая кнопка нажата? Сейчас обработчик при нажатии на переключатель выводит сообщение Переключатель.
18 FIXXXL
 
07.06.16
10:29
(16) в свойствах формы, в Событиях процедуры привязаны к событиям?
(17) можешь написать свою процедуру и назначить ее любой кнопке
19 vadim777
 
07.06.16
10:33
(18) Понял. Привязал процедуру ОбновлениеОтображения() к событию ОбновлениеОтображения. Спасибо.