Имя: Пароль:
1C
1С v8
Запрет создания элементов справочников
, , ,
0 Консультант Баранов
 
06.11.19
09:57
Нужно запретить создание элементов справочника с некоторыми условиями. ОбычныеФормы

Допустим добавляем некоторую роль. И предположим программно элементы не создаются.

Где лучше разместить проверку? ПредОткрытием Если не РольДоступна Тогда Отказ = Истина
1 Масянька
 
06.11.19
09:58
(0) В списке документов.
2 ДенисЧ
 
06.11.19
09:59
Просто в роли снять галку на нужном справочнике - интерактивное создание
3 Ненавижу 1С
 
гуру
06.11.19
09:59
в РЛС или в событии объекта "перед записью"
4 Консультант Баранов
 
06.11.19
10:00
(2) Не вариант. 1. Ролей много не хотелось бы типовую изменять.
2. Есть доп условия.
5 Курцвейл
 
06.11.19
10:00
(3) Почему перед?
Логичнее ПриЗаписи Отказ
6 Масянька
 
06.11.19
10:00
+ (1) Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    
    ЕстьПраво = абОбщее.ПолучитьПравоРедактированияБонусов();
    
    Если (НЕ ЕстьПраво) Тогда
        Предупреждение("Для работы с данным видом документов у Вас недостаточно прав." + Символы.ПС +
                       "Обратитесь к администратору.");
        СтандартнаяОбработка = Ложь;
        Отказ                  = Истина;
    КонецЕсли;
    
КонецПроцедуры
7 Консультант Баранов
 
06.11.19
10:01
(3)> "перед записью"

Изменять можно. Добавлять новое нельзя.
8 Консультант Баранов
 
06.11.19
10:01
(6) Ок. Т.е. в ПередОткрытием лучше пихать.
9 ДенисЧ
 
06.11.19
10:01
(5) Плохой вариант
10 Масянька
 
06.11.19
10:02
+ (6) В ПВХ ПраваПользователей - в предопределенных прописано новая фигня (булево).
11 Курцвейл
 
06.11.19
10:02
(9) Чем он плох то?
12 ДенисЧ
 
06.11.19
10:03
(11) Человек редактирует, вводит, радуется жизни. А при записи ему дубинов в лоб.
13 Масянька
 
06.11.19
10:04
(12) Полей 10-15 заполнил и тут, бац, вторая смена...
Я бы (как минимум) ругнулась матом... В лицо писателю.
14 Курцвейл
 
06.11.19
10:06
(12) Зато это фундаментальный запрет.
Игры с формами обходятся через обработки.
15 Масянька
 
06.11.19
10:07
(14) А что "фундаментального"?
16 ДенисЧ
 
06.11.19
10:08
(14) После такого пейсательства у тебя возникнут фундаментальные проблемы. Ты просто не сможешь писать такой код.
(13) Вот и я про то. Лучше не давать надежд. 1сник - не женщина, в конце концов...
17 Масянька
 
06.11.19
10:09
(16) Сижу и думаю: а я кто? :)))))))))))))))))))))))))))))))))))))))))))))))))
18 Курцвейл
 
06.11.19
10:10
(16) Не надо путать теплое и мягкое.
Одно дело удобный интерфейс, другое дело ограничение прав.
19 mikecool
 
06.11.19
10:10
(17) не боись, скоро придет просветление
20 Масянька
 
06.11.19
10:11
(19) А мне, что - разорваться? (С)
:)))))))))))))))))))))))))))))))))))))))))))))))))))))
21 dka80
 
06.11.19
10:11
(20) гусары, молчать!
22 Fish
 
06.11.19
10:12
(18) Т.е. при ограничении прав пользователи должны страдать, и понимать, что оно есть, только после того, как они уже ввели 100500 строк и реквизитов? :))
23 Fish
 
06.11.19
10:12
(17) А ты 1сниЦА, а не 1сник :))
24 Курцвейл
 
06.11.19
10:15
(22) Это вопрос удобства интерфейса.
Может для формы нового объекта ставить все в режим "Только просмотр" для соответствующих прав?
И никто ничего уже ввести не сможет.
Но удобство никак не связано с ограничением прав "Нельзя записать новый объект"
25 unregistered
 
06.11.19
10:16
ИМХО, контроль должен быть и на форме, и в подписке ПередЗаписью объекта.
Контроль на форме избавит пользователя от ненужных действий (попытки ввести кучу данных с последующим обломом).
Контроль в ПередЗаписью гарантирует, что пользователь не добьётся своего сторонними методами, в обход формы. Самый типичный случай - обработка группового изменения реквизитов. В конфигурациях на УФ она вообще встроена. На старых конфигурациях на ОФ  у нас пользователи тоже очень активно такими вещами пользовались.
26 Fish
 
06.11.19
10:17
(24) Правильное ограничение прав звучит так: "нельзя СОЗДАТЬ новый объект".
Даже в конфигураторе право называется "Добавление", а не "запись нового".
27 dka80
 
06.11.19
10:19
(24) капец ты упертый. Еще в старом фильме советском было "ты туда не ходи! ты сюда ходи!" - зачем что-то открывать, если там все-равно ничего не даст делать? Чтобы лишние вопросы сыпались
28 Fish
 
06.11.19
10:19
(25) Емнип, обработка группового изменения реквизитов работает только с существующими объектами. А тут речь о создании нового - см (7)
29 Курцвейл
 
06.11.19
10:20
(26) Вы уж сами разбирайтесь что для вас правильнее, добавлять или создавать. сути вопроса это не меняет.
30 dka80
 
06.11.19
10:20
И вообще, приплетать групповую обработку тут не к месту. так можно и сказать, что данные через обмен прилететь могут
31 Консультант Баранов
 
06.11.19
10:22
(30) > так можно и сказать, что данные через обмен прилететь могут

Предполагаем, что нет обработок на создание, нет обменов.
32 Курцвейл
 
06.11.19
10:22
(27) Это ты упертый. Наймешь себе падвана, они начнет тебе новые формы писать и рисовать, а про ограничение прав забудет.
Та же проблема будет при сопровождении легаси.
33 Fish
 
06.11.19
10:26
(29) Добавлять и создавать в данном контексте - это как раз одно и то же. :))
34 Курцвейл
 
06.11.19
10:26
(33) А "записать новый" что-то другое?
35 unregistered
 
06.11.19
10:29
(28) Да. Невнимательно прочел. Но тем не менее я бы сделал, как написал в (25) - и на форме и в подписке. Потому что все эти "предположим программно элементы не создаются" - сказки про белого бычка.
36 unregistered
 
06.11.19
10:36
(31) >> Предполагаем, что...

Практика показывает, что такие предположения и допущения живут ровно до тех пор, пока о них не забывают. А вспоминать потом приходится в самый неподходящий момент.
Сегодня обменов никаких нет, а как фамилия того, кто обещал, что их никогда не будет? А фамилия того, кто гарантировал в случае подключения обменов провести анализ всего и вся на предмет таких неявных логических ловушек в коде?
А потом приходится долго и мучительно доказывать заказчику, что косяки и последующие переделки, за которые он должен заплатить, - это следствие упрощенного понимания принятого когда-то давно решения.

Впрочем это уже всё ОФФ и ИМХО.
37 Масянька
 
06.11.19
10:49
(36) А ты точно об 1С говоришь?
38 Fish
 
06.11.19
10:55
(34) Конечно. Т.к. ты сначала добавляешь(создаёшь) объект, потом изменяешь его, и только потом записываешь. А твоё ограничение сработает только тогда, когда пользователь уже совершил кучу действий, что неправильно.
39 Курцвейл
 
06.11.19
11:16
(38) Да вы мастер создавать объекты, не записывая. :)
Независимо от того, куда вы едете — это в гору и против ветра!