Имя: Пароль:
1C
1C 7.7
v7: Помещен реквизит на форму или нет
,
0 yur4egg
 
25.06.14
14:27
Надо реализовать идею. Автонастройка режима редактирования справочника в списке или диалоге, в зависимости от того, есть ли кликнутый реквизит в списке на форме элемента или нет. Как до открытия формы элемента определить, если на ней данный реквизит ?
1 kupec
 
25.06.14
14:38
ИндикаторНаличия=0
Попытка
Форма.Реквизит.Видимость(1)
Исключение
ИндикаторНаличия=1;
КонецПопытки;
Если ИндикаторНаличия=0 Тогда
Сообщить("Реквизита нет");
Иначе
Сообщить("Реквизит есть");
КонецЕсли;
2 kupec
 
25.06.14
14:38
точнее наоборот с сообщениями
3 yur4egg
 
25.06.14
14:47
(1)
Форма в твоем примере - это форма списка или элемента ? Если это список, то по нему мы не узнаем, есть ли реквизит на форме элемента. Если это форма элемента, то что бы к ней обратиться, нужно ее сначала открыть. Это лишнее действие. В том-то и дело, найти способ узнать о наличии реквизита на форме элемента до его открытия. Через метаданные или ВК (самостоятельно я не нашел)
4 kupec
 
25.06.14
14:49
ну значит я не правильно понял, а так при открытии элемента данный код должен работать
5 kupec
 
25.06.14
14:49
есть какая то ALS по скрытым функциям метаданных, может там что есть ??? Не смотрел ???
6 varelchik
 
25.06.14
15:01
(4) Не будет он работать до открытия.
Пока не дойдет до процедуры ПриОткрытии() а это само собой подразумевает что форма уже открылась.
7 kupec
 
25.06.14
15:03
(6) при открытии не ПриОткрытии() а когда форма открыта
8 aka AMIGO
 
25.06.14
15:05
в документах проще:

Функция глЕстьРеквизитШапки(ИмяРеквизита, ВидДокумента) Экспорт    
    
    
    Если ПустоеЗначение(ИмяРеквизита) = 1 Тогда
        Возврат 0;
    
    ИначеЕсли Метаданные.ОбщийРеквизитДокумента(ИмяРеквизита).Выбран() = 1 Тогда
        Возврат 1;
        
    ИначеЕсли ПустоеЗначение(ВидДокумента) = 1 Тогда
        Возврат 0;
    
    ИначеЕсли Метаданные.Документ(ВидДокумента).РеквизитШапки(ИмяРеквизита).Выбран() = 1 Тогда
        Возврат 1;
        
    Иначе
        Возврат 0;
    КонецЕсли;
    
КонецФункции //глЕстьРеквизитШапки()
9 kupec
 
25.06.14
15:08
(8) реквизит может быть в конфигураторе но на форму не вынесен как у элемента справочника так и у документа
10 varelchik
 
25.06.14
15:20
(0) Тут вопрос в другом.
Каким образом ты собираешься разруливать ситуацию входа в режим редактирования?
11 Duke1C
 
25.06.14
15:22
(0) а что у вас все кому не лень в конфигурации выносят/прячут элементы на форму?
12 volodya43234
 
25.06.14
15:45
(0) Или ПриНачалеРаботыСистемы() проверить во всех нужных справочниках (способом из (1) ), и записать эти данные в глобальные переменные
13 varelchik
 
25.06.14
15:47
(12)А вы представляете как?
это ж надо по открывать все формы.
14 volodya43234
 
25.06.14
15:49
(13) и что мешает.... Пооткрывать все нужные, прописать все переменные, закрыть все формы... Ну помигают формы на экране.... зато будет точно известно есть или нет реквизиты на форме.
15 volodya43234
 
25.06.14
16:12
(0) ещё вариант. Наплодить констант для всех нужных справочников (или отдельный справочник).
Потом обработкой по вышеуказзанной схеме заполнить эти значения. (ведь не каждый день ставите/снимаете реквизиты на форму)
16 uno-group
 
25.06.14
19:11
Компаунд длл мдшник разколупать там точно есть, но кто щас вспомнит структуру по диалогам. Вроде как в формэксп какие то методы были. Кстате отсудствие элемента на форме не означает что его нельзя с формы редактировать. Может быть начать галочек и т.п. при изменение которых как-то меняеються реквизиты. Да тот же адрес его на форме может и не быть а будет кнопка которая откроет обработку заполняющую адрес по КЛАДРУ. ИМХО вытягивай все реквизиты и ставь им права доступа независимо от их присутствии на форме.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс