Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как сделать реквизит видимым только в одном слое расходной накладной? 1с 7.7 конф 7.7.00          
ZUBR Подменю пользователя
сообщение 15.05.20, 23:17
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 204
Из: Київ
Спасибо сказали: 4 раз
Рейтинг: 3

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

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


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

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


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

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

denis84 Подменю пользователя
сообщение 16.05.20, 6:11
Сообщение #2

Завсегдатай
****
Группа: Пользователи
Сообщений: 100
Из: Украина
Спасибо сказали: 28 раз
Рейтинг: 28

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

Спасибо сказали: ZUBR,

volodya1122 Подменю пользователя
сообщение 16.05.20, 7:56
Сообщение #3

Оратор
Иконка группы
Группа: Местный
Сообщений: 269
Из: Тернопіль
Спасибо сказали: 105 раз
Рейтинг: 107.1

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

Спасибо сказали: ZUBR,

Sharzem Подменю пользователя
сообщение 16.05.20, 16:23
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 262
Спасибо сказали: 77 раз
Рейтинг: 77.6

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

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

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

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



Signature
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)

Спасибо сказали: ZUBR,

ZUBR Подменю пользователя
сообщение 17.05.20, 0:24
Сообщение #5

Завсегдатай
****
Группа: Пользователи
Сообщений: 204
Из: Київ
Спасибо сказали: 4 раз
Рейтинг: 3

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

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


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

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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 05.06.20, 3:02
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!