Имя: Пароль:
1C
1С v8
Переменная Отказ мешает сохранить элемент справочника
,
0 ArtemKolos
 
09.03.12
16:48
Есть функция, которая создает элемент справочника, вызываю а процедуре ПередЗаписью(документа), функция отрабатывает, возвращает ссылку на элемент справочника, но если дальше где нибудь сработает отказ = истина, элемент удаляется, как быть?
1 pumbaEO
 
09.03.12
16:50
Ну каков вопрос и каково понимание сути переменной Отказ при записи, таков и ответ.

КонецПроцедуры пишешь Отказ=Ложь, записывать будет всегда.
2 Naumov
 
09.03.12
16:50
мделать так, чтобы далее нигде не возникло Отказ = Истина;
3 ArtemKolos
 
09.03.12
16:54
(1) =)
(2) другого выхода нет?
4 Naumov
 
09.03.12
16:55
(3) есть: крестик в правом верхнем углу приложения.
5 ArtemKolos
 
09.03.12
16:56
(4) остряк
6 pumbaEO
 
09.03.12
16:57
ЭлементСправочника = Справочники.Номенклатура.СоздатьЭлемент();
ЭлементСправочника.ОбменДанными = Истина;
ЭлементСправочника.Записать();
7 ArtemKolos
 
09.03.12
17:00
(6) у меня в функции написано то же, только без ОбменДанными = Истина
8 Naumov
 
09.03.12
17:01
так вся фишка в ОбменДАнными.
9 ArtemKolos
 
09.03.12
17:03
Не помогло =(
10 pumbaEO
 
09.03.12
17:04
самописька?
11 ArtemKolos
 
09.03.12
17:05
угу
12 pumbaEO
 
09.03.12
17:08
Во всех типовых в процедуре перед записью есть такой код:

Если ОбменДанными.Загрузка Тогда
возврат;
КонецЕсли

в самом начале процедуры. Данный код помогает.
13 sergey yevsenya
 
09.03.12
17:09
наверно должно быть ЭлементСправочника.ОбменДанными.Загрузка = Истина;
14 ArtemKolos
 
09.03.12
17:14
не то
15 sergey yevsenya
 
09.03.12
17:16
не верю
16 pumbaEO
 
09.03.12
17:17
(14) лгунишка... :)
17 Armando
 
09.03.12
22:05
(0) Читаем СП: ПередЗаписью Возникает перед выполнением записи объекта. Процедура-обработчик вызывается ПОСЛЕ НАЧАЛА ТРАНЗАКЦИИ записи, но до начала записи документа.

Про атомарность транзакции слышал? Транзакция фиксируется полностью, либо не фиксируется вообще. Все, что выполняется в БД в этом обработчике, принадлежит одной транзакции. В твоем случае это запись элемента справочника. Переменная Отказ сообщает системе, следует ли отменить транзакцию после этого события. Если транзакция отменяется, то все изменения произошедшие в БД в этой транзакции тоже отменятся.
18 Живой Ископаемый
 
10.03.12
00:04
2(6,8,13) в данном случае нет. При откате транзакции откатываются все вложенные транзакции. Стыдно забыть про это. :)
19 Живой Ископаемый
 
10.03.12
00:05
2(12) Ну или так, да
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.