Версия для печати темы (https://pro1c.org.ua/index.php?s=50a95a8c9349dc859e9035cff59488ce&showtopic=58991)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Как сделать реквизит видимым только в одном слое расходной накладной? 1с 7.7 конф 7.7.00

Автор: ZUBR 15.05.20, 23:17

Здравствуйте! Не могу решить проблему - не хватает знаний.
Есть у меня флажок. Он же реквизит Спл. Расположен на слое "Основной" РасходнойНакладной.
Привожу кусок кода:

Процедура ПриВыбореЗакладки(Номер,Значение)        
    Форма.ИспользоватьСлой(" Совместный,"+Значение,2);
    УстДоступность();
    УстДоступностьКнопок();
    глУстановкаРеквизитаТип(Контекст);
    
    Если (НазваниеНабораПрав() <> "Администратор") Тогда        //Моя вставка для СПЛАЧЕНО
        
        Форма.Спл.Видимость(0);
        Форма.Спл.Доступность(0);  
    КонецЕсли;
..................................................................................................................................................


В этом случае флажок Спл виден только на слое "Основной".
Если же код программы изменить:

Процедура ПриВыбореЗакладки(Номер,Значение)        
    Форма.ИспользоватьСлой(" Совместный,"+Значение,2);
    УстДоступность();
    УстДоступностьКнопок();
    глУстановкаРеквизитаТип(Контекст);
    
    Если (НазваниеНабораПрав() <> "Администратор") Тогда        //Моя вставка для СПЛАЧЕНО
        
        Форма.Спл.Видимость(0);
        Форма.Спл.Доступность(0);
         Иначе
               Форма.Спл.Видимость(1);
    КонецЕсли;
.................................................................................................................................................


то в этом случае флажок Спл виден во всех слоях.

Мне же нужно, чтобы в последнем случае он тоже был виден только в родном слое.
Моя программа сложнее, и флажков и полей больше, которые видны в неродных слоях.
Я специально максимально упростил, чтобы ясно показать суть проблемы.
Как использовать метод Видимость только для родного слоя? Чтобы он не светил во все слои?
Спасибо!

Автор: denis84 16.05.20, 6:11

ZUBR @ Сегодня, 0:17 * ,
Если я правильно понял, то нужно кликнуть на реквизит правой кнопкой мыши и в выпадающем списке найти " поместить" и выбрать нужный слой. И этот реквизит всегда будет находится в том слое.

Автор: volodya1122 16.05.20, 7:56

Як я зрозумів, потрібно при різних наборах прав керувати видимістю деяких реквізитів на формі.
В доному випадку небачу красивого рішення. Можу запропонувати два варіанти
1. Аналізувати яка закладка відкрита. І якщо відкрита закладка де є Ваш реквізит тільки тоді керувати її видимістю (назва закладки знаходиться в реквізиті Значение).
2. Замість керувати видимістю, керуйте Доступністю реквізитів (реквізит буде видно на формі, але небуде доступний для натискання/вибору). В даному випадку вже непотрібно аналізувати яка закладка відкрита.

Автор: Sharzem 16.05.20, 16:23

ZUBR @ Вчера, 23:17 * ,

Погоджуюся з volodya1122.
Мається на увазі додаткова перевірка:

Если Значение = "ДругаЗакладка" Тогда
    Если (НазваниеНабораПрав() <> "Администратор") Тогда // КОРИСТУВАЧІ НЕ БАЧАТЬ
            Форма.Спл.Видимость(0);
    Иначе
            Форма.Спл.Видимость(1);
    КонецЕсли;
Если Значение = "ТретяЗакладка" Тогда // НЕ БАЧИТЬ НІХТО
     Форма.Спл.Видимость(0);
ИначеЕсли Значение = "ПершаЗакладка" Тогда // БАЧАТЬ УСІ
     Форма.Спл.Видимость(1);
КонецЕсли;

Це збочення звичайно, але як варіант може бути, оскільки йде управління кожною закладкою окремо...

Я б рекомендував приводити усе до єдиного, так як радить denis84. Оскільки сидіти з часом і довбатися в цьому "гімнокоді" прийдеться таки в першу чергу Вам.
Тому, якщо будете використовувати варіант запропонований volodya1122, візьміть усе це й винесіть в окрему процедуру УстВидимостьРеквизитов(Значение).
Наприклад:
Процедура ПриВыбореЗакладки(Номер,Значение)        
    Форма.ИспользоватьСлой(" Совместный,"+Значение,2);
    УстДоступность();
    УстДоступностьКнопок();
    глУстановкаРеквизитаТип(Контекст);
    УстВидимостьРеквизитов(Значение);//Окрема процедура для збочення з реквізитами
КонецПроцедуры;


Автор: ZUBR 17.05.20, 0:24

Здравствуйте. Я, перефразируя Ильича, пошел простым путем.
Я просто добавил в процедуру ПриВыбореЗакладки условие:

Если Значение="Додатково" Тогда   
        Форма.Гот.Видимость(0);
        Форма.Спл.Видимость(0);
        Форма.Сплачено.Видимость(0);
        Форма.Несплачено.Видимость(0);
        Форма.ВАС.Видимость(0);
        Форма.ВАКС.Видимость(0);
        Форма.Гар.Видимость(0);
        Форма.Гарантия.Видимость(0);
        КонецЕсли;


Здесь перечислены все реквизиты формы, к которым я использую метод Видимость.

И таким образом решил проблему.
Спасибо всем за помощь! 32000000.gif

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua