![]() |
![]() |
![]() |
|
v7: Справочник. При записи | ☑ | ||
---|---|---|---|---|
0
Asakra
18.03.16
✎
10:06
|
При неудачной попытке записи нового элемента справочника 2 раза подряд, очищаются все реквизиты справочника.
Это можно наблюдать, если написать примерно такой код: Процедура ПриЗаписи() НачатьТранзакцию(); Записать(); ОтменитьТранзакцию(); СтатусВозврата(0); Возврат; КонецПроцедуры Есть ли решение данной фичи? |
|||
1
Ёпрст
гуру
18.03.16
✎
10:07
|
Занафига там транзакция впёрлась ?
|
|||
2
lodger
18.03.16
✎
10:08
|
возврат после первой неудачной попытки делать и не доводить до второй?
|
|||
3
Asakra
18.03.16
✎
10:08
|
(1) утакой код:
Попытка НачатьТранзакцию(); Если Выбран() = 0 Тогда Записать(); КонецЕсли; Если ЗаписьЮрФизЛица() = 0 Тогда Возврат; ИначеЕсли ЗаписьОснДоговора() = 0 Тогда Возврат; ИначеЕсли ЗаписьОснСчета() = 0 Тогда Возврат; ИначеЕсли ЗаписьОснСвойства(Свойство , ОсновноеСвойство, Константа.ВидСвойстваКонтрагентов ) = 0 Тогда Возврат; ИначеЕсли ЗаписьОснСвойства(ВидОплаты , _ВидОплаты , Константа._ВидСвойстваВидаОплат ) = 0 Тогда Возврат; ИначеЕсли ЗаписьОснСвойства(КаналПродаж, _КаналПродаж , ВидСвойстваКаналПродаж ) = 0 Тогда Возврат; ИначеЕсли ЗаписьГоловногоКонтрагента() = 0 Тогда Возврат; ИначеЕсли ЗаписьСтавкиЗПОтПродаж() = 0 Тогда Возврат; ИначеЕсли ЗаписьДоговорКлиента() = 0 Тогда Возврат; КонецЕсли; ЗафиксироватьТранзакцию(); Исключение Сообщить(ОписаниеОшибки(), "!"); ОтменитьТранзакцию(); СтатусВозврата(0); Возврат; КонецПопытки; |
|||
4
Asakra
18.03.16
✎
10:10
|
(2) в смысле? запрещать юзеру тыкать два раза записать?
|
|||
5
Asakra
18.03.16
✎
10:24
|
у меня в планах только костыли написать. может у кого есть грамотное решение?
|
|||
6
ДенисЧ
18.03.16
✎
10:26
|
(5) Ты бы хоть постановку вопроса озвучил...
Что делать пытаешься? |
|||
7
Asakra
18.03.16
✎
10:27
|
(6) записать подчиненные и не только справочники
|
|||
8
Asakra
18.03.16
✎
10:28
|
(6) см. (3)
|
|||
9
ДенисЧ
18.03.16
✎
10:29
|
(8) Там я вижу бред обкуренного до самой немогу кодера...
|
|||
10
Asakra
18.03.16
✎
10:31
|
(9) это код из типовой:
Попытка Записать(); Исключение ОтменитьТранзакцию(); Сообщить("Запись контрагента: " + ОписаниеОшибки(), "!"); Возврат; КонецПопытки; Попытка Если ЗаписьЮрФизЛица() = 0 Тогда ОтменитьТранзакцию(); Возврат; КонецЕсли; Исключение ОтменитьТранзакцию(); Сообщить("Запись юр.(физ.) лица: " + ОписаниеОшибки(), "!"); Возврат; КонецПопытки; Попытка Если ЗаписьОснДоговора() = 0 Тогда ОтменитьТранзакцию(); Возврат; КонецЕсли; Исключение ОтменитьТранзакцию(); Сообщить("Запись основного договора: " + ОписаниеОшибки(), "!"); Возврат; КонецПопытки; Попытка Если ЗаписьОснСчета() = 0 Тогда ОтменитьТранзакцию(); Возврат; КонецЕсли; Исключение ОтменитьТранзакцию(); Сообщить("Запись основного счета: " + ОписаниеОшибки(), "!"); Возврат; КонецПопытки; Попытка Если ЗаписьОснСвойства() = 0 Тогда ОтменитьТранзакцию(); Возврат; КонецЕсли; СохранитьЗначение("ОсновноеСвойствоКонтрагентов", Свойство); ЗафиксироватьТранзакцию(); СтатусВозврата(1); Исключение ОтменитьТранзакцию(); Сообщить("Запись основного свойства: " + ОписаниеОшибки(), "!"); КонецПопытки; как правильно-то? |
|||
11
MishaD
18.03.16
✎
10:37
|
что за типовая такая ? В типовых, по моему, насильно записывает, когда подчиненные начинаешь создавать.
|
|||
12
Asakra
18.03.16
✎
10:38
|
ТиС 7.70.982
|
|||
13
Ёпрст
гуру
18.03.16
✎
10:40
|
(0) А как это выглядит ? Ни разу не сталкивался, хотя код нечто похожий
|
|||
14
Asakra
18.03.16
✎
10:40
|
(13) все поля очищаются, наименование, код и т.п.
|
|||
15
DGorgoN
18.03.16
✎
10:41
|
СтатусВозврата(0); виноват имхо
|
|||
16
Ёпрст
гуру
18.03.16
✎
10:42
|
Ну, храни все реквизиты в копии объекта или в кеше
|
|||
17
Ёпрст
гуру
18.03.16
✎
10:42
|
Грубо, создаешь новый элемент, копируешь через метаданные все реквизиты в него и не записываешь его, потом, с него берешь реквизиты
|
|||
18
Ёпрст
гуру
18.03.16
✎
10:43
|
тип того
|
|||
19
Asakra
18.03.16
✎
10:45
|
(16) ну вот ето и планирую. думал, может есть получше идеи... (17) планировал заполнять тз, в классе перехватчике, что бы напрочь заткнуть проблему..
|
|||
20
Asakra
18.03.16
✎
10:46
|
или даже лучше ассоциативный вектор
|
|||
21
Ёпрст
гуру
18.03.16
✎
10:48
|
да пофик, хоть в соответствиях
|
|||
22
Asakra
18.03.16
✎
10:48
|
(21) ну как-то так...)
|
|||
23
Asakra
18.03.16
✎
10:49
|
(15) неа. именно так:
НачатьТранзакцию(); Записать(); ОтменитьТранзакцию(); СтатусВозврата(0); Возврат; если написать: СтатусВозврата(0); Возврат; то все ок. |
|||
24
пипец
18.03.16
✎
10:57
|
не понял , попытка исключение не вкатила ?
|
|||
25
Asakra
18.03.16
✎
10:59
|
(24) а она не причем. когда второй раз проходит Записать(), уже все поля пустые, еще даже до ошибки не дошло...
|
|||
26
Asakra
18.03.16
✎
11:41
|
решил тоже самое проверить в документе - документ пишется не смотря на транзакцию и статус возврата, на второй раз все поля очищаются, кроме табличной части... мдя..
|
|||
28
Asakra
18.03.16
✎
12:39
|
(27) в (10) 100% типовой код. в (3) мой код.
|
|||
29
Ёпрст
гуру
18.03.16
✎
12:40
|
ВК есть ?
|
|||
30
Asakra
18.03.16
✎
12:41
|
(29) в типовой нету, на ней все тоже самое.
|
|||
31
Ёпрст
гуру
18.03.16
✎
12:42
|
(30) если формекс загрузить, эффект наблюдается ?
|
|||
32
Asakra
18.03.16
✎
12:43
|
(31) да. в рабочей ён присутствует...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |