|
УФ: Программно запретить создание нового документа Prog_man, scanduta, Ногаминебить, igouranga, Мультук, LienXo, bvb, banco, evorle145, mszsuz, Ёпрст, arsik, toypaul, _Batoo, СвинТуз, qwerty, craxx, El_Duke, Ezhara, DimR_71, FormatC, MWWRuza, maxab72, Eiffil123, AAA, DiMel_77, Fedor-1971, Gun47, DrLekter, saaken, hunter76, youalex, CepeLLlka, PuhUfa, dva1c, Ненавижу 1С, Irbis, ЯнСмит, ГдеСобакаЗарыта, Михаил Козлов, boozin, ldo6, zippygrill, Timon1405, Масянька, Builder, vbus, АнализДанных, 7beginner7, asady, Tarlich, comp2006, takefive, backfire, 2S, Sewace, lucbak, shuhard, Gucci76, Галахад, vis, yurikmellon2, kubik_live, Telcher, Волшебник
| ☑ | ||
---|---|---|---|---|
0
bvb
20.01.25
✎
13:07
|
Нужно программно (невзирая на роли) по совокупности условий не давать создавать новый документ.
С выдачей сообщения (а лучше модального предупреждения пользователю) Я чего-то не соображу как это лучше делать: в обработчике заполнения или в ПриСозданииНаСервере() ? |
|||
1
maxab72
20.01.25
✎
13:10
|
перед записью проверять.
|
|||
2
Ёпрст
20.01.25
✎
13:14
|
(0) модально?..а если обработкой будут создавать, ..то ой?)
|
|||
3
Tarlich
20.01.25
✎
13:16
|
(0) так можно и при открытии отказ сделать....
(2) при записи то же добавить |
|||
4
Fedor-1971
20.01.25
✎
13:16
|
(0) Обработчик заполнения не имеет Отказа, а ПриСозданииНаСервере, таки, имеет, в нём и запрещай
|
|||
5
Ёпрст
20.01.25
✎
13:17
|
(4) там можно вызватьИсключение
|
|||
6
Fedor-1971
20.01.25
✎
13:17
|
(2) Походу, нужен запрет интерактивного создания документа
|
|||
7
Fedor-1971
20.01.25
✎
13:17
|
(5) Можно, но форма откроется
|
|||
8
Ёпрст
20.01.25
✎
13:20
|
(7) неа
|
|||
9
Ёпрст
20.01.25
✎
13:27
|
Не откроется.
Но это не всегда удобно. Например, нужно ввести только 1 подчиненный док. Тогда в ОбработкаЗаполнения проверяем это, если уже есть, передаем это в ПриОткрытии, и там, Отказ = Истина; ОткрытьЗначение (то что нашли) Довольно, частая задача. |
|||
10
Ёпрст
20.01.25
✎
13:27
|
А чего именно нужно ТС, хз.
|
|||
11
bvb
20.01.25
✎
13:38
|
(10) Мне нужно работникам склада при совокупности определенных условий (пусть будет для простоты после 18.00) создавать заказы покупателей
Что это работники склад я идентифицирую по роли : &НаСервере Процедура ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка) Если РольДоступна("KMS_Склад") И МоеХитроеУсловие И Параметры.Ключ.Пустая() //это новый документ Тогда ТекстСообщения = "Выписывать заказы работникам склада запрещено"; Сообщение = Новый СообщениеПользователю; Сообщение.Текст = ТекстСообщения; Сообщение.Сообщить(); Отказ = Истина; КонецЕсли; |
|||
12
bvb
20.01.25
✎
13:40
|
ПриСозданииНаСервереПосле в расширении :
Запрещено изменение параметра, отменяющего действие (параметр номер 1 в процедуре ) |
|||
13
Ненавижу 1С
20.01.25
✎
13:44
|
(11) что-то запрещать при наличии роли это антипаттерн
|
|||
14
arsik
20.01.25
✎
13:49
|
В АльфаАвто вот так сделано в обработке заполнения. Хз это из БСП или собственное
ТекстСообщения = НСтр("ru = 'Склад, указанный в документе основании, обычный. Ввод складского ордера невозможен.'"); УправлениеДиалогомСервер.ЗапретитьОткрытиеФормыОбъекта(ЭтотОбъект, ТекстСообщения); Возврат; Процедура ЗапретитьОткрытиеФормыОбъекта(ВходнойОбъект, ТекстСообщения) Экспорт ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, ВходнойОбъект, "ОтменитьОткрытие",, Истина); КонецПроцедуры // ЗапретитьОткрытиеФормыОбъекта) Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Отказ = Отказ Или РаботаСФормой.НужноОтменитьОткрытиеФормы(); Если Отказ Тогда Возврат; КонецЕсли; Можно еще через ОбработкаПолученияФормы такое реализовать - подменить форму на свою заглушку при соблюдении условия. |
|||
15
bvb
20.01.25
✎
14:16
|
(13)
Альтернатива : ? Если СокрЛП(ПараметрыСеанса.Текущий.Пользователь.Наименование) = "Вася" Тогда |
|||
16
Fedor-1971
20.01.25
✎
14:04
|
(11) Параметры.Ключ.Пустая() - так-то однозначная проверка документа (справочника) на новый Объект.Ссылка.Пустая()
(13) Если роль используется как флаг (т.е. у неё нет прав на объекты конфигурации) - то по смыслу: либо запрещаем, либо разрешаем |
|||
17
Fedor-1971
20.01.25
✎
14:06
|
(15) Альтернатива "Параметры пользователя", но про них забываешь в 90% случаев. Лезем в код и "О, ё.., это параметр пользователя, а не роль"
Минус - надо всем кладовщикам расставлять по одному, но есть и плюс - старшему можно разрешить действие |
|||
18
Prog_man
20.01.25
✎
14:11
|
(0) ПриСозданииНаСервере() чем не подходит ?
вставить проверку что документ новый + условие на Роль, как вариант. можно и в расширении сделать. |
|||
19
Eiffil123
20.01.25
✎
14:17
|
(14) в Бит.Финанс тоже через обработку заполнения и вызов исключения.
|
|||
20
bvb
20.01.25
✎
14:22
|
(17) Я не понял какие Вы предлагаете использовать "Параметры пользователя" ?
|
|||
21
bvb
20.01.25
✎
14:29
|
Странно думал задачка тривиальная и меня счас обосрут как профана, но оказалась мнения разделилсь
Короче остановился : //Обязательно нужно использовать "Перед" , в "После" Запрещено изменение параметра, отменяющего действие (параметр номер 1 в процедуре ) Процедура KMS_ПриСозданииНаСервереПеред(Отказ, СтандартнаяОбработка) Если РольДоступна("KMS_Склад") И ХитроеУсловие И Параметры.Ключ.Пустая() //это новый документ Тогда Отказ = Истина; ТекстСообщения = "Выписывать заказы в данный момент работникам склада запрещено"; ВызватьИсключение (ТекстСообщения); |
|||
22
arsik
20.01.25
✎
14:39
|
(21) Используй лучше ИзменениеИКонтроль. обновлять потом намного проще будет
PS: Я правильно понимаю, что за ХитроеУсловие скрывается прям говнокод который стыдно на форуме показать? :) |
|||
23
bvb
20.01.25
✎
15:14
|
(22) Зачем изменение и контроль Если можно перед ?
Там функция. Содержание - бредовое. Тебе интересны управленческие изыскания моих клиентов ? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |