|
ВызватьИсключение &НаКлиенте ПередЗаписью | ☑ | ||
---|---|---|---|---|
0
vi0
14.02.17
✎
11:32
|
При возникновении исключения в форме ПередЗапись запись объекта все равно продолжается. В чем логика?
|
|||
1
FIXXXL
14.02.17
✎
11:34
|
(0) в том, что есть Отказ?
|
|||
2
polosov
14.02.17
✎
11:35
|
(0) Отказ используй, если не надо записывать
|
|||
3
vi0
14.02.17
✎
11:36
|
исключение может быть инициировано платформой
например при нехватке прав |
|||
4
lxs
14.02.17
✎
11:36
|
(0) Проблема в чем? У тебя отказ записи не возникает?
|
|||
5
vi0
14.02.17
✎
11:48
|
(4) так точно
|
|||
6
FIXXXL
14.02.17
✎
11:54
|
(3) ну и? платформа сама Отказ в истину выставит
не темни, пиши подробнее |
|||
7
vi0
14.02.17
✎
12:07
|
(6) платформа 8.3.9.1850
Управляемое приложение. Толстый или тонкий клиент Созаем новый справочник. В форме добавляем обработчик. При записи объекта возникает ошибка, но объект записывается &НаКлиенте Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) f = 1/0; КонецПроцедуры |
|||
8
polosov
14.02.17
✎
12:40
|
(7) Запись происходит в транзакции.
Сделано явное управление транзакцией через Отказ. Попытка f = 1/0; Исключение Отказ = Истина; КонецПопытки; |
|||
9
vi0
14.02.17
✎
12:53
|
(8) это на клиенте, еще нет транзакции
|
|||
10
vi0
14.02.17
✎
13:02
|
проблема в том что исключение может возникнуть по разным Причинам, опять же при нехватке прав.
Понятно, что можно весь код ПередЗаписью затолкать в попытку, но это не наши методы |
|||
11
FIXXXL
14.02.17
✎
13:16
|
(10) запишется, если нет прав на запись?
|
|||
12
polosov
14.02.17
✎
13:17
|
(9) http://1centerprise8.blogspot.ru/2015/03/posled-sobytij-document.html
(10) Смотри в типовые. Не надо гнуть свою линию из всяких ссей плюсплюсов или где ты там по исключениям нахватался. |
|||
13
vi0
14.02.17
✎
13:24
|
(12) что сказать то хотел?
по обеим своим пунктам |
|||
14
vi0
14.02.17
✎
13:25
|
(11) к примеру ПередЗапись была обращение к _другому_ объекту на который нет прав
|
|||
15
polosov
14.02.17
✎
13:28
|
(13)
1. Если доступен Отказ, значит это уже в транзакции. 2. Не нужно изобретать велосипеды, есть типовые механизмы. Для того, чтобы привести свое мышление в порядок относительно идеологии 1с, смотри в типовые. (14) Есть попытка. Проведение должно быть предсказуемым. Не надо охватывать варианты, к примеру на случай зомбиапокалипсиса. |
|||
16
vi0
14.02.17
✎
13:31
|
(15) > Если доступен Отказ, значит это уже в транзакции
Откуда информация? И с каких пор возможна транзакция на клиенте в управляемых формах > смотри в типовые Куда именно смотреть? Так можно на любой вопрос отвечать > Есть попытка. Проведение должно быть предсказуемым. И что? В общем говори конкретнее |
|||
17
polosov
14.02.17
✎
13:35
|
(16) > Откуда информация? И с каких пор возможна транзакция на клиенте в управляемых формах
А сам как думаешь? Если можно прервать выполнение транзакции через Отказ = Истина, то наверно это выполняется в транзакции. >Куда именно смотреть? Так можно на любой вопрос отвечать Обычно имеют в виду одну из трех, в зависимости от твоей предметной области: УТ, БП, ЗУП >И что? В общем говори конкретнее Подробнее наверно тут https://online.1c.ru/books/book/23177431/ |
|||
18
vi0
14.02.17
✎
13:39
|
(17) чудак человек
сам прочти прочти по ссылке, которую ты сам привел в (12) и прочти где начинается транзакция потом прочти свою ссылку из (17), ну это так для общего развития как прочтешь от сих до сих то возвращайся |
|||
19
polosov
14.02.17
✎
13:43
|
(18) У нас с тобой интернеты разные чтоле?
Написано же по ссылке в (12), что транзакция начинается на клиенте... |
|||
20
vi0
14.02.17
✎
13:46
|
(19) всё, достаточно
прочти сначала книгу которую ты советовал, тебе будет полезно 1С:Программирование для начинающих: Детям и родителям, менеджерам и руководителям – Разработка в системе «1С:Предприятие 8.3» |
|||
21
polosov
14.02.17
✎
13:46
|
(20) Ойвсе?
|
|||
22
vi0
14.02.17
✎
13:49
|
(21) не позорься сам, и не путай других
|
|||
23
polosov
14.02.17
✎
14:00
|
(22) Может быть ты конечно имел в виду транзакцию записи, она да, только на сервере, начиная с модуля объекта.
Но тебе то какая разница в данном случае? Есть Отказ - управляй проведением/записью на клиенте. |
|||
24
vde69
14.02.17
✎
14:09
|
(23) в транзакции первый обработчик это "ПередЗписьюНаСервере"
передЗаписью на клиенте находится ДО начала транзакции и предназначается для задавания вопросов и асинхронных интерактивных действий. |
|||
25
polosov
14.02.17
✎
14:19
|
(24) Ну в транзакции записи первая процедура это ПередЗаписью модуля объекта.
http://its.1c.ru/db/pubdevguide83#content:612:hdoc |
|||
26
eks1985
14.02.17
✎
14:43
|
Хм,
Цы " &НаКлиенте Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) В этом обработчике можно проанализировать, что все вспомогательные данные, необходимые для записи объекта, подготовлены. И если это не так, отказаться от записи, установив параметр Отказ в значение Истина. Дело в том, что на клиенте могут существовать объекты, недоступные на сервере, например, СОМ-объект HTML-документа. Поэтому проверки, связанные с подобными объектами, нужно производить именно в клиентской процедуре. Также в этом обработчике доступны для анализа параметры записи, созданные платформой или переданные разработчиком. " КонецЦы По-моему все логично. Что смущает? Транзакция записи действительно на клиенте еще не начата, поэтому исключение ее не прерывает и запись все равно происходит. Если хочется чтобы не присходила как уже писали выше заворачивай в попытку ставь Отказ = Истина в блоке Исключение. |
|||
27
vi0
14.02.17
✎
15:37
|
Не логично то, что платформа не отрабатывает и не прерывает операцию записи. Есть тут транзакция или нет - вопрос второстепенный.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |