Имя: Пароль:
1C
1С v8
Ошибка при ЭтоНовый() ?
0 ЭЦ
 
15.08.12
12:22
ГОСПОДА !
Имеется объект Задача
в модуле объекта имеется текст

Если ЭтотОбъект.ЭтоНовый() Тогда    
ЭтотОбъект.Ответственный = ПараметрыСеанса.ТекущийПользователь;
КонецЕсли;

При загрузке объекта вылетает ошибка
{Задача.ЗадачаИсполнителя.МодульОбъекта(736)}: Ошибка при вызове метода контекста (ЭтоНовый)
по причине:
Задача не выбрана
-----------------------------------------
Причем в отладчике все реквизиты объекта на момент вызова ЭтоНовый()
заполнены.
Прошу подсказать в чем причина ошибки и как понять новый ли это объект или созданный ранее.
1 Лоботряс
 
15.08.12
12:31
А точно модуль объекта и точно на эту строчку ругается?
2 Лоботряс
 
15.08.12
12:31
Побожись...
3 ЭЦ
 
15.08.12
12:33
(1-2) Мамой клянусь
4 Птах
 
15.08.12
12:33
(0) если на форме - Параметры.Ключ.Пустая()
5 aleks-id
 
15.08.12
12:34
Если ЭтоНовый() Тогда
6 PuhUfa
 
15.08.12
12:38
(0) согласно СП и учитывая (3) должно работать -)
7 ЭЦ
 
15.08.12
12:38
(5) Тоже самое
Ошибка при вызове метода контекста (ЭтоНовый) - Задача не выбрана
8 aleks-id
 
15.08.12
12:40
Если Объект.ЭтоНовый() Тогда ?

а вообще весь код надо
УФ или как?
9 organizm
 
15.08.12
12:41
НЕ ЗначениеЗаполнено(Объект.ссылка) не подойдет?
10 ЭЦ
 
15.08.12
12:41
(8) А это собственно и есть весь код.
Выше только функции и процедуры
11 UnAmerican
 
15.08.12
12:42
Че та там сверху явно косячное.
12 Fragster
 
гуру
15.08.12
12:45
пля. компиляция не проходит? ну кто ж ЭтоНовый вне контекста выполняет?
13 Fragster
 
гуру
15.08.12
12:46
вообще пихать вне процедур какие-либо вещи не следует, ибо можно получить лулзы
14 Fragster
 
гуру
15.08.12
12:46
делай перед открытием или там присозданиинасервере. а лучше - перед записью.
15 aleks-id
 
15.08.12
12:47
фак.. а ведь (12) прав
16 ЭЦ
 
15.08.12
12:52
(12) Не надо грязи - компиляция проходит
Почему Вне контекста - он в контексте модуля объекта задачи
17 Mafoni
 
15.08.12
12:53
В какой функции или процедуре данный кусок находится ? Если вне процедур и функций - то фигня будет !!!
18 Mafoni
 
15.08.12
12:54
(0) Засунь сей кусок в процедуру ПередЗаписью и будет тебе счастье !
19 ЭЦ
 
15.08.12
12:56
(18) Мне надо до записи понять новый он или нет, а записи может и вообще не будет
20 Лоботряс
 
15.08.12
12:58
(19) Это не отменяет (18)
21 ЭЦ
 
15.08.12
13:00
(20) Событие Запись - может и не быть -соответесвенно не будет и ПередЗаписью()
а ответсвенного определить надо в любом случае
22 motkot
 
15.08.12
13:02
а чем "ОбработкаЗаполнения" не подходит?
23 ЭЦ
 
15.08.12
13:04
(22) при копировании данный обработчик не вызывается
24 Птах
 
15.08.12
13:05
(23) Написали ж в (14) - присозданиинасервере
25 SUA
 
15.08.12
13:07
а накуа в модуле объекта заполнять если "не пойми для чего"?
а так да, обработка заполнения, при копировании - 2 обработчика, если именно в модуле надо
26 Лоботряс
 
15.08.12
13:08
Зачем устанавливать объекту Ответственного, если объект и не будет записываться? Если где то в процедурах тебе нужно использовать текущего пользователя то создай глобальную переменную как все нормальные люди делают
27 ЭЦ
 
15.08.12
13:12
(25-26) Задача создается бизнес процессом - программно.
Требуется определить (записать в реквизит) какой пользователь ее создал.
Открываться форма задачи будет уже другим пользователем - он должен увидеть кто ее создал.
28 Птах
 
15.08.12
13:13
(27) Передавай в процедуру создания задачи пользователя параметром.
29 ЭЦ
 
15.08.12
13:15
(28) Это понятно но геморойно
- странно что при инициализированных параметрах в модуле объекта ЭтоНовый() не отрабатывает
30 Anastasiy
 
15.08.12
13:15
Если Объект.ЭтоНовый() Тогда
   Объект.Наименование = "Новая задача";
КонецЕсли;
31 Азазелло
 
15.08.12
13:16
(27) При программном создании заполняй отвественного, не? Или в обработке заполнения + пропиши явно вызов метода Заполнить()...
32 Лоботряс
 
15.08.12
13:17
<<Открываться форма задачи будет уже другим пользователем>> - как он может это сделать если задача не была записана?
33 Anastasiy
 
15.08.12
13:19
И
Если Исполнитель.Пустая() Тогда
       Исполнитель = глЗначениеПеременной("глТекущийПользователь");
   КонецЕсли;
34 ЭЦ
 
15.08.12
13:20
(32) Никак - но есть желание обработать этот реквизит еще и перед записью -наверное от этого придется отказаться.
35 Птах
 
15.08.12
13:20
(33) Спасибо вам Настенька, за вашу доброту!
36 ЭЦ
 
15.08.12
13:21
(33) Таже ошибка - задача не выбрана
37 666 Devil
 
15.08.12
13:22
(23) а чем ПриКопировании() не устривает?
38 Anastasiy
 
15.08.12
13:22
Да сказали же))) в процедуру упакуй: скажем так:

Процедура ПриОткрытии()
   
   УстановитьТипОбъектаЗадачи(Ложь);
   УточнитьОбъектЗадачиПоВидуЗадачи();
   
   Если ЭтоНовый() Тогда
       Исполнитель = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"),"ОсновнойОтветственный");
   КонецЕсли;
   
КонецПроцедуры
39 Птах
 
15.08.12
13:23
(36) Не страдай херней, чем тебе не нравится передавать параметр?
40 Anastasiy
 
15.08.12
13:23
(35) Жуй с маслом))
41 Лоботряс
 
15.08.12
13:23
(38) в модуле объекта нет события при открытии
42 Anastasiy
 
15.08.12
13:24
Значит в форме есть.
43 Азазелло
 
15.08.12
13:25
(38) Это если интерактив предусмотрен
44 Anastasiy
 
15.08.12
13:25
Если есть задача, то есть и ФормаЗадачи
45 Лоботряс
 
15.08.12
13:25
Все же интересно чем закончится...
46 Азазелло
 
15.08.12
13:26
(44) да ну!!!
47 ЭЦ
 
15.08.12
13:26
(39) В бизнес процесс ПриСозданииЗадач - это метод точки маршрута. Точек дофигище - в каждую надо будет добавлять обработчик и передачу параметра - геморойно
48 Птах
 
15.08.12
13:29
(47) а (37)?
49 Лоботряс
 
15.08.12
13:29
(47) ПараметрыСеанса.ТекущийПользователь доступен из любой процедуры, даже передавать ничего не надо
50 ЭЦ
 
15.08.12
13:29
А копирование тем более может и не вызываться
51 Птах
 
15.08.12
13:30
(50) Ну и вставь в обработку заполнения и при копировании, в чем проблема?
52 Лоботряс
 
15.08.12
13:31
(49)+ это глобальнй контекст
53 666 Devil
 
15.08.12
13:32
(50) ну тогда озвучь полностью свою задачу
54 Азазелло
 
15.08.12
13:32
Имхо, перез записью проверять и устанавливать. Этот метод работает на все случаи жизни. И при интерактивной работе, и при программном создании.
Заполнять Ответственного если не планируется запись - это уже какая-то хрень.
55 Птах
 
15.08.12
13:33
(54) +100, нафиг его заполнять, если не записывать?
56 Fragster
 
гуру
15.08.12
13:36
(21) а зачем тогда жить?
57 Fragster
 
гуру
15.08.12
13:36
зачем ответственный несуществующего объекта?
58 Fragster
 
гуру
15.08.12
13:37
ну, кстати, в проверку заполнения еще можно... да мало ли событий...
59 ЭЦ
 
15.08.12
13:37
(54) имеются функции использующие этот параметр - хотелось бы их использовать
-------------------------
Ну я так понял что ЭтоНовый() в модуле объекта вне процедур и функций и не должен работать?
Все согласны?
60 Fragster
 
гуру
15.08.12
13:37
(59) он не будет работать не по той причине, что "не должен"
61 Ursus maritimus
 
15.08.12
13:38
(0) Ветку не читал. Нахрена в данном контексте ЭтотОбъект почему не просто ЭтоНовый()?
Кто знает чему там у тебя ЭтотОбъект равен...
62 Fragster
 
гуру
15.08.12
13:38
(61) автор типа заполнение делает при программном создании объекта...
63 ЭЦ
 
15.08.12
13:38
(61) и то и другое - выдает одну и туже ошибку
64 Fragster
 
гуру
15.08.12
13:39
спагетти-вестерн (заеркнуто) -код рулит...
65 Лоботряс
 
15.08.12
13:39
(61) прочитай (12)
66 Азазелло
 
15.08.12
13:39
(59) "имеются функции использующие этот параметр - хотелось бы их использовать "
А откуда вызываются функции, использующие Этот Параметр у незаписанного объекта?
Жуткая жуть какая-то
67 ЭЦ
 
15.08.12
13:47
(60) А по какой?
68 666 Devil
 
15.08.12
14:03
в ПриКопировании() вызови Обработку заполнения() а в ней проверяй и проствляй что хочешь
69 Anastasiy
 
15.08.12
14:05
В модуле объекта есть подобный код, но опять-таки упакованый вот в такую процедуру:

Процедура ПередВыполнением(Отказ)
70 Anastasiy
 
15.08.12
14:05
Работает, пользуемся)
71 Anastasiy
 
15.08.12
14:09
Из синтаксПомощника сюда же:

ЗадачаОбъект.<Имя задачи> (TaskObject.<Имя задачи>)
ПередВыполнением (BeforeExecute)
Синтаксис:

ПередВыполнением(<Отказ>)
Параметры:

<Отказ>

Тип: Булево.
Признак отказа от выполнения действия.
Значение по умолчанию: Ложь
Описание:

Возникает при выполнении метода ВыполнитьЗадачу и до аналогичного события у соответствующей точки маршрута. Выполняется в транзакции записи при выполнении задачи.
72 Лоботряс
 
15.08.12
14:10
(71) ты понимаешь разницу между записью объекта и выполнением задачи?
73 Лоботряс
 
15.08.12
14:11
(72) Если он ее записывать не хочет, то о каком выполнении может идти речь?
74 Птах
 
15.08.12
14:13
Забейте, это тролль ))
75 Anastasiy
 
15.08.12
14:17
Читай (0), я так понимаю, он хочет, чтобы не вылетало с ошибкой, кстати, у тролей - не вылетает ошибок)))
76 Anastasiy
 
15.08.12
14:18
И бизнес-процесс не один работает)
77 Anastasiy
 
15.08.12
14:20
Задача-то в контексте бизнес-процесса?