|   |   | 
| 
 | 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) и всё летит.
  Всем большое спасибо! | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |