|
УФ: Программно запретить создание нового документа
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) Зачем изменение и контроль Если можно перед ?
Там функция. Содержание - бредовое. Тебе интересны управленческие изыскания моих клиентов ?
|
|