Имя: Пароль:
1C
1С v8
8.2 УФ Отказать в открытии формы
0 Rounder
 
11.07.12
16:51
Ввожу документ на основании другого. В процедуре ОбработкаЗаполнения() в модуле объекта заполняю документ и кой-чего проверяю и если результат проверки меня не устраивает мне нужно сообщить пользователю (это понятно как) и не открывать форму документа, создаваемого на основании. Как лучше организовать отказ в открытии формы документа?
1 Pro-tone
 
модератор
11.07.12
16:55
Реквизит добавить "НеОткрыватьФорму", в обработке заполнения ему присваивать значение ИСТИНА если не надо открывать, ПриОткрытии() - тут анализировать, если истина, то Закрыть()
2 Nexux
 
11.07.12
16:57
ВызватьИсключение
3 х86
 
11.07.12
16:59
(1)это как не надо делать?
4 Pro-tone
 
модератор
11.07.12
17:01
(3) если не напишешь свой более умный вариант - уйдешь отсюда
5 acsent
 
11.07.12
17:02
(4) как минимум отказ = истина вместо закрыть
6 Stim
 
11.07.12
17:03
в процедуре ОбработкаЗаполнения()  делай возврат; и не выдумывай
7 Pro-tone
 
11.07.12
17:06
(5) сорри, да отказ
8 Rounder
 
11.07.12
17:07
(6) не подходит - форма все одно будет создаваться
(1) и (2) пробую
9 Buster007
 
11.07.12
17:09
(0) а почему нельзя проверить в ПриСозданииНаСервере? Зачем придумывать непонятно что?
10 Buster007
 
11.07.12
17:10
(4) модер обиделся?
11 Rounder
 
11.07.12
17:12
(9) Потому что будет один лишний запрос к БД.
12 Pro-tone
 
модератор
11.07.12
17:13
авторы постов как в (3) караться будут - охаял и свалил это называется
13 Pro-tone
 
модератор
11.07.12
17:14
(12) для (10)
14 fisher
 
11.07.12
17:15
(1) Зачем же реквизит? Для этого параметры придуманы.
15 Buster007
 
11.07.12
17:17
(11) тебе виднее ;) если ты конечно решишь делать запрос на проверку и в обработкаЗаполнения и в ПриСозданииНаСервере... ну что ж, да будет так )
16 Rounder
 
11.07.12
17:20
Всем спасибо. Пора уходить. Завтра попробую.
17 acsent
 
11.07.12
17:26
Как (2) это методология 1с
18 fisher
 
11.07.12
17:30
(14) Не, туплю.
(9) А как ты в ПриСозданииНаСервере() передашь из ОбработкаЗаполнения() инфу, что форму открывать не надо?
19 х86
 
11.07.12
17:30
(2)+500
(12)я не онлайн консультант
(14)+500
20 fisher
 
11.07.12
17:32
(19) Зря ты (14) плюсуешь. Принятие решение идет в обработке заполнения. Параметры не канают.
21 fisher
 
11.07.12
17:37
Единственное, что приходит в голову в конце дня для избавления от лишнего реквизита - это вынести проверку в отдельную экспортную процедуру модуля документа и вызывать её в ПриСозданииНаСервере(), получив предварительно документ-объект.
22 fisher
 
11.07.12
17:38
(21) Тьфу. Не в процедуру, а функцию. И по результату разрешать открывать форму или запрещать. Зато и реквизитов лишних не надо и до клиента дело не доходит.
23 Stim
 
11.07.12
17:42
(1) - точно не стоит делать
24 Mort
 
11.07.12
17:47
(20) А кто сказал что обработка заполнения это место для подобных решений?
25 Buster007
 
11.07.12
17:50
(18) я смогу решить надо открывать или не надо в ПриСозданииНаСервере и не буду париться в ОбработкаЗаполнения.
26 fisher
 
11.07.12
17:58
(24) Это напрашивается. Тогда объект еще доступен и вся нужная инфа есть. Другое дело, что полученный признак никак не красиво передать. Не создавать же для этого лишний реквизит, в самом деле.
А в ПриСозданииНаСервере придется ломиться к объекту, которого уже нет. Тоже не идеал. Но меньшее из зол.
27 riv40rus
 
11.07.12
17:59
(0) а не проще отказ сделать на стороне формы инициатора?
28 fisher
 
11.07.12
17:59
(27) Нет.
29 Mort
 
11.07.12
18:05
(26) Результат отказа заполнения это отсутствие заполнения некоторых реквизитов. А это легко палится в присоздании, при наличии параметра "Основание"
30 Stim
 
11.07.12
18:09
+ можно вообще поставить стандартную обработку в ложь и открывать форму программно
31 fisher
 
11.07.12
18:19
(29) Да кто ж спорит. Просто некоторая избыточность возникает. По этим же реквизитам мы пробегаемся, когда пытаемся их заполнить в обработке заполнения. Поэтому и подмывает сразу оттуда просигнализировать о фэйле.
Независимо от того, куда вы едете — это в гору и против ветра!