|
Обработка открытия формы | ☑ | ||
---|---|---|---|---|
0
rodrigez
27.03.12
✎
15:19
|
Здравствуйте!
Есть условие, что на основании документа "Заказ", может заполняться и существовать, только один документ "Создание маршрутов". Заполнение происходит при вводе на основании. Запрет, на ввод нового, при имеющемся существующему документу "Создание маршрутов" делаю (ПриОткрытии() или ПриСозданииНаСервере() - отказ истина)Но этот запрет срабатывает в всех случаях открытия документа, а мне надо , что бы срабатывал только при вводе на основании.Как можно показать, говоря простыми словами "откуда летит форма". Извините, за возможно глупый вопрос. Спасибо! |
|||
1
le_
27.03.12
✎
15:28
|
Все проверки на существование уже введенного документа можно сделать в обработке заполнения.
И с помощью экспортной переменной в модуле документа мНеОткрыватьФормуДокумента можно не открывать форму при вводе на основании. |
|||
2
rodrigez
27.03.12
✎
15:30
|
Спасибо!
|
|||
3
Ненавижу 1С
гуру
27.03.12
✎
15:30
|
добавить в условия ПриСозданииНаСервере() И ЭтоНовый()?
|
|||
4
Fram
27.03.12
✎
15:44
|
||||
5
fimanich
27.03.12
✎
15:45
|
(3) ЭтоНовый() в управляемой форме вроде не взлетит.
Там надо на заполненность проверять Параметры.Ключ или Объект.Пустая() |
|||
6
rodrigez
27.03.12
✎
16:14
|
(1) Может я не так понял, но запрещать открытие формы "в обработке заполнения", при вводе на основании, нельзя, все равно вылетает пустая.
Или если с объекта экспортировать переменную в модуль формы, все равно открытие формы надо запрещать, или создание, а это срабатывает на другие случаии. Тогда, если я, например, вставлю навигационную ссылку в оповещение то форма уже существующего дока не взлетит. А хочется ... (3) аналогично с (1) проверка есть а открытие рубит всегда (4) у меня нет доступа (5) суть та же что и (3) |
|||
7
rodrigez
27.03.12
✎
16:17
|
наверное, проще всего, имитировать ввод на основании другой кнопкой(командой) ...
|
|||
8
le_
27.03.12
✎
16:33
|
(6)
В обработке заполнения: Если УжеСуществуетВведенныйНаОсновании() Тогда
//В форме: Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
|||
9
fimanich
27.03.12
✎
16:54
|
Я вот так делал. Основание - реквизит объекта, который заполняется в процедуре ОбработкаЗаполнения, (вообще обычно всегда хранят ссылку на основание)
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ... //Ввод нового допускается только на основании Если НЕ ЗначениеЗаполнено(Параметры.Ключ) Тогда //поэтому Если НЕ ЗначениеЗаполнено(Объект.Основание) Тогда Сообщение=Новый СообщениеПользователю; Сообщение.Текст="Ввод оплаты возможен только на основании документа ""Движение средств"""; Сообщение.Сообщить(); Отказ=Истина; Возврат; КонецЕсли; КонецЕсли; |
|||
10
Ненавижу 1С
гуру
27.03.12
✎
16:56
|
(5) это на клиенте не взлетит, на сервере в ПриСозданииНаСервере() должно
|
|||
11
fimanich
27.03.12
✎
16:58
|
+(9) Вообще (9) - это то же, что и (8), только без экспортной переменной, т.к. у меня был реквизит Основание.
|
|||
12
fimanich
27.03.12
✎
17:02
|
(10) Проверил ради интереса
ПриСозданииНаСервере() ЭтоНовый() // не взлетает Объект.ЭтоНовый() // не взлетает РеквизитФормыВЗначение("Объект").ЭтоНовый() //взлетает Но так как-то красивее, имхо НЕ ЗначениеЗаполнено(Параметры.Ключ) Объект.Ссылка.Пустая() |
|||
13
rodrigez
27.03.12
✎
17:23
|
Спасибо большое всем!
|
|||
14
5 Элемент
27.03.12
✎
17:38
|
(12) правильно так ЗначениеЗаполнено(Объект.Ссылка)
|
|||
15
BabySG
27.03.12
✎
20:16
|
Правильно: вызвать исключение в обработчике заполнения.
Это уже обсуждалось - разработчики платформы рекомендуют имено этот способ и, собственно, в типовых именно такое и применяется. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |