Имя: Пароль:
1C
1C 7.7
v7: Ограничить доступность реквизитов справочника
,
0 tesei
 
23.09.21
11:06
Есть справочник, нужно дать доступ на форме элемента к, скажем, 10 реквизитам из 100. Делать доступность 90 реквизитам - влом все их перебирать. Как это сделать с наименьшими затратами? Можно ли управлять доступностью реквизитов на закладках?
1 ДенисЧ
 
23.09.21
11:11
Влом перебирать - ты их руками, штолле, собрался перечислять?
2 tesei
 
23.09.21
11:19
(1) Реквизиты формы не всегда = реквизиты справочника.
3 Guk
 
23.09.21
11:21
(0) на форме реквизит справочника или реквизит формы?...
4 andrewalexk
 
23.09.21
11:22
(1) :) *штоле
зы
ваш душнила
5 Guk
 
23.09.21
11:23
(2) если реквизиты формы нумерованые, то проблем нет. а так штатно перебрать реквизиты формы вроде бы только формекс умеет...
6 tesei
 
23.09.21
11:24
(3) форма элемента справочника, на ней есть реквизиты элемента справочника, + поля ввода, таблицы, кнопки.
7 Мимохожий Однако
 
23.09.21
11:25
Поиграйся со слоями. Показывай доступные реквизиты, значение недоступных реквизитов сделай в виде информационной надписи
8 Guk
 
23.09.21
11:26
(6) если на форме реквизиты справочника, то через метаданные перебираешь имена и с помощью установитьатрибут меняешь доступность...
9 tesei
 
23.09.21
11:26
пока мысли такие:
- найти реквизиты по метаданным, убрать доступность
- те элементы, которые остались - перебрать поштучно, убрать доступность
- дать доступ к нужным реквизитам
10 ДенисЧ
 
23.09.21
11:34
(4) Штолле - это пекарня такая.
11 ДенисЧ
 
23.09.21
11:35
(9) А что, за formex у вас эцих положен? С кудрявыми гвоздями?
12 Bigbro
 
23.09.21
11:45
я можт крамолу сейчас скажу но если такие заморочки - лучше сделайте отдельную форму для данных полномочий. и именно ее вызывайте когда нужно.
13 tesei
 
23.09.21
11:47
(11) Пожизненный. А как это реализовать с формексом?
14 tesei
 
23.09.21
11:48
(12) Не пойдёт. Нужно как у всех, но "с перламутровыми пуговицами".
15 Bigbro
 
23.09.21
11:49
одна и та же форма на которой 10ю способами прячутся по 90 из 100 реквизитов будет выглядеть почти наверняка крайне убого.
16 tesei
 
23.09.21
11:49
(15) не, не прячутся. Читать можно, писать нельзя.
17 ДенисЧ
 
23.09.21
11:57
(13) Открыть документацию по формексу, я так понимаю, предлагать бесполезно?
18 tesei
 
23.09.21
12:00
(17) Поднимите мне веки... Уже читаю, ибо иначе никак.
19 tesei
 
23.09.21
12:08
Вот такое нарыл:

ФормаРасш = СоздатьОбъект("РасширениеФормы");
ФормаРасш.УстановитьФорму(Форма);
СписокИд = СоздатьОбъект("СписокЗначений");
Для Х = 0 По ФормаРасш.КоличествоАтрибутов() - 1 Цикл
        СписокИд.ДобавитьЗначение(ФормаРасш.ПолучитьАтрибут(Х).Идентификатор());
КонецЦикла;
20 HawkEye
 
23.09.21
12:10
(0) пф... этим сотрудникам закрыть доступ для редактирования элемента, а для 10 реквизитов написать отдельную обработку, при желании можно ее открывать вместо карточки элемента...
21 Bigbro
 
23.09.21
12:11
(20) я тоже так думал, но им на просмотр надо оставить все.
22 HawkEye
 
23.09.21
12:12
(21) +(20) еще один вариант: сделать отдельный слой формы элемента, куда запихать реквизиты доступные для редактирования, сделав их реквизитами формы, при записи переносить из них значения в реквизиты объекта.... но вариант с обработкой - красивее...
23 HawkEye
 
23.09.21
12:15
(21) никто не запрещает в форме что-то нарисовать не доступное для редактирования...
+(20) для особого издевательства над пользователями можно перед записью элемента восстановить все реквизиты которые нельзя менять из существующего объекта, только потом записать )))))
24 Bigbro
 
23.09.21
12:20
мне когда надо было заморочиться с доступностью я сделал просто все для чтения.
и отдельную кнопку редактировать.
по нажатию которой уже открывал отдельную форму в зависимости от полномочий, со всеми рюшечками и раскрасками и по внесении всего что надо там - переносил уже данные в объект и логгировал.
25 tesei
 
23.09.21
12:32
Идентификатор реквизита формы получил формексом, как теперь сделать реквизит недоступным? Каков синтаксис?
26 ADirks
 
23.09.21
12:42
(25) например
Процедура Доступность_ТолькоУказанные(сз_стр_Рекв, фДоступность) Экспорт
    Если ТипЗначенияСтр(сз_стр_Рекв) = "СписокЗначений" Тогда
        сзРекв = сз_стр_Рекв;
    Иначе
        сзРекв= СтрокуВСписок(сз_стр_Рекв, ",", 1);
    КонецЕсли;
    
    нКоличествоАтр = ФормЭкс().КоличествоАтрибутов();
    Для нАтр = 1 По нКоличествоАтр Цикл
        оАтр = ФормЭкс().ПолучитьАтрибут(нАтр-1);
        
        Если оАтр.Тип = 1 Тогда
            Продолжить;
        ИначеЕсли оАтр.Тип = 4 Тогда
            Продолжить;
        КонецЕсли;
        
        Если сзРекв.НайтиЗначение(оАтр.Идентификатор) = 0 Тогда
            оАтр.Доступность = (1 - фДоступность);
        Иначе
            оАтр.Доступность = фДоступность;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
27 andrewalexk
 
23.09.21
13:26
(10) :) это ты так тонко намекнул что тесей не человек а пекарня такая?
сорян
28 Mikeware
 
23.09.21
13:30
(27) а Слава КПСС вообще не человек...©
29 Злопчинский
 
23.09.21
13:38
(28) а Карл Маркса вообще молчим
30 tesei
 
23.09.21
14:17
В Ярославле - Штолле, в Питере - Линдфорс. Одна франшиза, выглядят как близнецы.
31 ДенисЧ
 
23.09.21
14:28
(30) Съезди на улицу Восстания, на юг от метро Чернышевская. Удивишься.
Или на Садовую, опять же к югу от Русского музея.
А оттуда пешком к метро Адмиралтейская...
А на обратном пути прогуляйся до метро Достоевская...
32 Mikeware
 
23.09.21
14:29
(31) "пройду по Абрикосовой, зайду на Виноградную..."©
Если он целый день шляться начнет, кто работу работать будет?
33 ДенисЧ
 
23.09.21
14:30
(32) А Путин у нас на что? ))))
Тем более там за полтора часа все эти точки обойти можно. Заодно и пообедает )))
34 tesei
 
23.09.21
14:56
(31) Спасибо, у меня Линдфорс на Московском, под боком.
Задачку тоже решил походу, благодарствую, коллеги.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.