|
Подписка на событие ОбработкаПолученияФормы. Ошибка - Неизвестный идентификатор формы | ☑ | ||
---|---|---|---|---|
0
IvanGorbunov
20.01.19
✎
22:37
|
Надо, чтобы при открытии любого из документов при определенном условии элементы формы делалась недоступными. Делаю через подписку на событие "ОбработкаПолученияФормы" так:
Процедура ОбработкаПолученияФормы(Источник, ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) Экспорт Если ВидФормы = "ФормаОбъекта" Тогда СтандартнаяОбработка = Ложь; ДокументОбъект = Параметры.Ключ; ЭлементОбъект = ДокументОбъект.ПолучитьОбъект(); ВыбраннаяФорма = ЭлементОбъект.ПолучитьФорму("ФормаДокумента"); ВыбраннаяФорма.ТолькоПросмотр = Истина; ВыбраннаяФорма.Открыть(); КонецЕсли; КонецПроцедуры При этом получаю ошибку "Неизвестный идентификатор формы", что логично, потому что одновременно пытаются открыться две одинаковые формы, хоть первой я потом и запрещаю. Но как можно избежать этой ошибки? Или как по-другому реализовать эту задачу? P.S. это нужно для всех документов, поэтому подписка на событие |
|||
1
palsergeich
20.01.19
✎
22:46
|
Этот метод не для этого.
Здесь вы можете переопределить открываемую форму, но самой формы еще нет. И действий с ней делать нельзя. |
|||
2
IvanGorbunov
20.01.19
✎
22:49
|
(1) а как можно запретить редактирование непроведенных документов, для всех документов, не снимая с поддержки каждый?
|
|||
3
palsergeich
20.01.19
✎
22:51
|
Подпиской на событие.
Если объект не новый и Проведен = Ложь - отказ передЗаписью в модуле объекта. |
|||
4
palsergeich
20.01.19
✎
22:52
|
Что то типо такого
Если не ЭтоНовый() И Не Проведен Тогда Отказ = Истина КонецЕсли |
|||
5
IvanGorbunov
20.01.19
✎
22:52
|
(3) надо чтоб при открытии человек не начинал перебивать, допустим товары в документе, а потом узнал, что редактировать нельзя, а сразу это понял
|
|||
6
palsergeich
20.01.19
✎
22:52
|
(5) Самое простое - административный путь.
|
|||
7
IvanGorbunov
20.01.19
✎
22:53
|
(6) ?
|
|||
8
palsergeich
20.01.19
✎
22:54
|
Но я в первый раз вижу требование на запрет изменений непроведенных. Логически - пока документ не проведен - он не влияет на учет и в принципе можно делать что угодно.
Обычно ставят запрет на проведенные документы. (7) На уровне регламентов и инстукций с которыми ознакамливают ответственных лиц. Ну подписку втыкаешь. Регламент видели - Ваши проблемы. |
|||
9
IvanGorbunov
20.01.19
✎
22:55
|
(8) ой, блин, я имел ввиду запрет изменений проведенных)
|
|||
10
palsergeich
20.01.19
✎
22:59
|
Никак.
Без переработки. |
|||
11
IvanGorbunov
20.01.19
✎
23:01
|
понял, спасибо
|
|||
12
palsergeich
20.01.19
✎
23:07
|
Печаль в чем - в том что в обработке в (0) ты можешь сделать так
Процедура ОбработкаПолученияФормы(Источник, ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) Экспорт Параметры.Вставить("ТолькоПросмотр", Истина) КонецПроцедуры И форма будет открыта только на просмотр. Но в этом событии ты не знаешь состояние объекта проведен он или нет. |
|||
13
palsergeich
20.01.19
✎
23:10
|
А нет. Все клево.
|
|||
14
palsergeich
20.01.19
✎
23:10
|
Ща код напишу
|
|||
15
IvanGorbunov
20.01.19
✎
23:11
|
(14) да я тоже вроде догадался)
|
|||
16
palsergeich
20.01.19
✎
23:16
|
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
Если Параметры.Свойство("Ключ") Тогда Если Параметры.Ключ.Проведен Тогда Параметры.Вставить("ТолькоПросмотр", Истина); КонецЕсли; КонецЕсли; // Вставить содержимое обработчика. КонецПроцедуры Но как показал тест - закрывается не все, а только приведет все элементы управления, связанные с реквизитами формы, а также элементы управления, для которых установлено свойство ИзменяетДанные |
|||
17
IvanGorbunov
20.01.19
✎
23:17
|
(16) отлично, спасибо, выручили. Насколько лучше у умных людей спросить, чем несколько часов рыть интернет и писать кучу неправильного кода.)
|
|||
18
palsergeich
20.01.19
✎
23:18
|
Но бОльшая часть реквизитов и все ТЧ - заблокированы.
ДС, таблицы значений - нет. И в этом печаль |
|||
19
palsergeich
20.01.19
✎
23:18
|
(17) Потестируй, у меня на стенде результат оказался близкий к тому что Вам нужно, но не идеальный.
|
|||
20
IvanGorbunov
20.01.19
✎
23:20
|
(19) та вроде абсолютно все закрыто, если разработчики и забыли где-то указать "ИзменяетДанные", то и ладно.
|
|||
21
palsergeich
20.01.19
✎
23:23
|
(20) Ну отлично.
Удачи |
|||
22
IvanGorbunov
20.01.19
✎
23:25
|
(21) теперь можно хоть пойти спать спокойно)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |