Имя: Пароль:
1C
1C 7.7
v7: редактирование реквизита справочника
0 alisto
 
07.12.11
17:30
Здравствуйте!
Подскажите пожалуйста, как организовать доступ пользователя к одному реквизиту справочника для редактирования? Можно ли в цикле перебрать все реквизиты и установить доступность реквизитов в 0 (ложь), а после цикла установить доступность только к нужному? Как?
Спасибо!
1 palpetrovich
 
07.12.11
17:39
программно что-ли, в зависимости от прав?
2 alisto
 
07.12.11
17:47
(1) программно.
Поясню ситуацию. Есть пользователь, который не может редактировать справочник "Контрагенты", но ему можно (и нужно) редактировать реквизит "Цена перевозки" который находится в форме справочника "Контрагенты". В ходе проверки справочника на доступность происходить установка ТолькоПросмотр(1) если нет прав. Я Хочу, для этого пользователя сделать ТолькоПросмотр(0), но при этом заблокировать все реквизиты кроме одного...
3 viktor_vv
 
07.12.11
17:49
Formex'ом можно, но это ВК.
4 YF
 
07.12.11
17:50
(2) Да, как в (0) и пишешь
5 alisto
 
07.12.11
17:53
(4) Как? Можно пример? Перебор я делаю, но как заблокировать/разблокировать реквизит?
6 viktor_vv
 
07.12.11
17:54
Ну без ВК можешь загнать все реквизиты в два спискаЗначений. Первый полный, второй доступных. Потм в цикле по первому, проверяешь вхождение во второй и Форма.ПолучитьАтрибут(ИдентификаторЭлементаИзСпискаЗначений).Доступность(0).
7 viktor_vv
 
07.12.11
17:56
Неудобвство в том, что списки значений надо ручками набить. Может есть и проще вариант штатными средствами, но я его не знаю.
8 viktor_vv
 
07.12.11
17:57
(6) С условиями я че-то там напутал, но пронцип такой.
9 FN
 
07.12.11
18:02
Сделай внешнюю обработку с выбором клиента, окошком для значения реквизита и кнопкой ЗАПИСАТЬ
10 YF
 
07.12.11
18:02
(9) Ага, а кто-то другой в это время откроет этот элемент и писец
11 FN
 
07.12.11
18:04
(10) это можно легко разрулить
12 YF
 
07.12.11
18:05
(11) как?
13 alisto
 
07.12.11
18:06
(9) Да я думал так сделать... Только юзер он ведь такой... Не хочет ничего делать лишнего.
Приведите привет, плиз.
(12) Залочить наверное. :)
14 alisto
 
07.12.11
18:07
(13) ))) Приведите приМеР, плиз. Заработался уже.
15 Ёпрст
 
07.12.11
18:07
(12) блокировку еще никто не отменял пока.
16 viktor_vv
 
07.12.11
18:07
Проверять блокировку, и матюкаться. Или в момент ыбора блокировать.
17 Sk0rp
 
07.12.11
18:07
(10) А если в карточке товара редактировать что-то изменится?
(12) Сказать, что заблокирован и попросить записать позже.
18 Ёпрст
 
07.12.11
18:08
(16) да не проверять, а самому ставить при открытии своей поделки
19 viktor_vv
 
07.12.11
18:08
(18) Ну второй вариант я так и написал, почти.
20 FN
 
07.12.11
18:10
(14) можешь еще проще сделать: в приоткрытии Если пользователь=вася то СтатусВозврата(0) ОткрытьФорму(Обработка.изменениеРеквизита,ТекущийЭлемент)
21 alisto
 
07.12.11
18:10
Люди добрые, "пример в студию"!
22 Vladal
 
07.12.11
18:10
(0) ОбработкаВыбораЗначения - и в ней плясать.

Если ИмяРеквизита <> "СтоимостьПеревозки" Тогда
   СтатусВозврата(0);
   Возврат;
КонецЕсли;
23 Vladal
 
07.12.11
18:11
(17) Это семерка.
24 alisto
 
07.12.11
18:17
(22) можно чуть подробнее? я не глупый, я просто 8 люблю. )
25 palpetrovich
 
07.12.11
18:23
(24) дык, куда еще подробней? единственное еще условие на права пользователя втулить
26 palpetrovich
 
07.12.11
18:24
+ только наверное лучше анализировать в ПриНачалеВыбораЗначения()
27 viktor_vv
 
07.12.11
18:26
(22) Для реквизитов без кнопки выбора не взлетит.
28 viktor_vv
 
07.12.11
18:29
(24) Если немного реквизитов надо редактировать, то самый простой это (9) + (20) .
29 Web00001
 
07.12.11
18:31
Зафигачить на форму кнопочку, которая будет изменять нужный реквизит не предлагать?
30 Classic
 
07.12.11
18:35
(0)
Точно семерка? У тебя все темы по 8
31 alisto
 
08.12.11
09:48
(30) Специально перепроверил, точно 7! :))
(29) Вешаем кнопочку на форму справочника "Контрагенты", по нажатию всплывает форма для ввода цены, в этой форме устанавливаем цену, жмём установить? Примерно так? Как народ думает?
32 alisto
 
08.12.11
11:48
Всем спасибо, сделал так:

       СпрКонтрагенты = Метаданные.Справочник("Контрагенты");
       КолвоРеквизитов = СпрКонтрагенты.Реквизит();
       Для Ном=1 to КолвоРеквизитов Цикл
           Попытка        
               Рекв = СпрКонтрагенты.Реквизит(Ном);
               ФормаРекв = Форма.ПолучитьАтрибут(Рекв.Идентификатор);    
               Если СпрКонтрагенты.Реквизит(Ном).Идентификатор <> "ЦенаПеревозки" Тогда
                   ФормаРекв.Доступность(0);
               Иначе
                   ФормаРекв.Доступность(1);
                   //Сообщить(Рекв);
               КонецЕсли;
           Исключение
               //Сообщить(Рекв);
           КонецПопытки;        
       КонецЦикла;
33 palpetrovich
 
08.12.11
12:17
(32) можно и так, для определенного пользователя (роли) конечно. А можно было такого пользователя вообще не пускать в форму для редактирования, добавить в форму списка числовой реквизит и кнопку - и пусть изменяют ЦенаПеревозки для текущего элемента оттуда :) ...оно и удобнее (быстрее) наверное будет
34 FN
 
08.12.11
12:54
(32) кнопочки и остальные элементы _формы_ остались доступны. например кнопочка [X] - очистка реквизита - будет доступна...
(33) +1
35 FN
 
08.12.11
13:04
Держи простейшую "болванку" псевдоредактирования в списке.

Только добавишь свое условие на имя реквизита

Процедура ПриОткрытии()
   Форма.ОбработкаВыбораСтроки(1);
КонецПроцедуры

Процедура ПриВыбореСтроки()
   текреквизитстр=Форма.АктивныйЭлемент();
   Если Метаданные.Справочник(ТекущийЭлемент().Вид()).Реквизит(текреквизитстр).Выбран()=0 Тогда
       Возврат;
   Иначе
       текреквизит=ТекущийЭлемент().ПолучитьАтрибут(текреквизитстр);
       Если ВвестиЗначение(текреквизит,"Укажите новое значение")=1 Тогда
           спр=СоздатьОбъект("Справочник."+ТекущийЭлемент().Вид());
           спр.НайтиЭлемент(ТекущийЭлемент());
           спр.УстановитьАтрибут(текреквизитстр,текреквизит);
           спр.Записать();
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры
36 FN
 
08.12.11
13:07
(35)+ уточню на всякий случай - это нужно пихать в форму списка а не элемента
37 alisto
 
08.12.11
13:57
(32) (33) Спасибо!
В (32) не весь код, про кнопочки я не забыл :)
38 alisto
 
08.12.11
13:57
блин, (33) (34) спасибо!
39 alisto
 
08.12.11
15:09
Переделал, подскажите, можно как нибудь убрать колонку в форме списка (сделать ее не видимой по условию)?
40 alisto
 
08.12.11
15:12
Всё, разобрался. Видимость(0) и всё летит.
Всем большое спасибо!
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс