Имя: Пароль:
1C
1С v8
Перед изменением на форме: Данные были изменены
0 depthzer0
 
29.12.14
11:57
Всем привет!

Открыта форма объекта. При этом на сервере объект изменяется. Соответственно при попытке внесения изменения на форме появляется предупреждение: "Данные были изменены или удалены.... бла-бла-бла".

Хочется это предупреждение обработать и выводить пользователю сообщение, ну и вообще отловить это событие.

Теоретически можно повесить ПодключитьОбработчикОжидания и проверять не изменился ли объект, но хотелось бы как-то без этого обойтись.
1 ssh2QQ6
 
29.12.14
12:06
(0) А почему не передавать изменения данных на клиента при завершении обработки на сервере?
2 ssh2QQ6
 
29.12.14
12:08
Вообще на сервере можно проверять, не заблокирован ли объект перед обработкой:
Из СП:
Попытка
    НовДокумент.Заблокировать();
Исключение
    Предупреждение(НСтр("ru = 'Невозможно заблокировать документ.';"
     + " en = 'Can't lock the document.'"));
КонецПопытки;
3 depthzer0
 
29.12.14
12:10
(1)  как?
4 ssh2QQ6
 
29.12.14
12:12
Подозреваю, что ЗначениеВРеквизитФормы
5 depthzer0
 
29.12.14
12:12
(2) сервер приоритетнее. он должен внести имзенения
6 Бригада бронепоезда
 
29.12.14
12:13
а зачем тереть стандартное предупреждение и заменять его своим сообщением? работа ради работы?
7 depthzer0
 
29.12.14
12:13
(4) это фоновое задание производит изменения.
8 depthzer0
 
29.12.14
12:13
(6) требование заказчика. ради единообразия.
9 ssh2QQ6
 
29.12.14
12:14
(7) тогда (6)
10 DmitrO
 
29.12.14
12:19
Когда так бывает, это чаще всего означает, что организация данных (структура ИБ) не соответствует бизнес процессам (правилам/порядку ввода данных пользователем).
11 DmitrO
 
29.12.14
12:23
(10)+ но конечно? некоторым заказчикам и исполнителям оно пофиг, что не соответствует, ведь главное "единообразие" какое-то..
12 Бригада бронепоезда
 
29.12.14
12:26
(11) единообразие - это стандартное предупреждение о том, что объект изменился.
Зачем изобретать свои стандарты и тратить на это уйму человекоресурсов, не понимаю..
13 depthzer0
 
29.12.14
12:31
так а на форме можно поймать попытку изменения значения любого из элементов?
14 depthzer0
 
29.12.14
12:34
(10) а как правильно сделать?
15 DmitrO
 
29.12.14
12:40
(14)по сути: фоновое задание не должно изменять объекты редактируемые интерактивно пользователями. И особенно с такой частотой, что это становится проблемой для ввода данных пользователями.
Если фоновое задание что-то и должно делать, то объект редактируемый пользователем надо делить; так, чтобы это не мешало вводу данных пользователями.
16 depthzer0
 
29.12.14
12:49
(15) как делить? это не понятно
17 DmitrO
 
29.12.14
12:52
(16)чтобы предложить решение задачи надо услышать задачу.
18 depthzer0
 
29.12.14
12:54
(17) есть приоритетная база в которую вносятся конкретные изменения и есть второстепенная база, в которой при желании можно кое-что подправить. из приоритетной базы данные попадают во второстепенную и записываются. если записываемый документ был кем-то открыт во второстепенной, то пользователь с этим документом должен получить сообщение, что документ изменён.
19 DmitrO
 
29.12.14
13:23
(18)а есть понимание того, что после того как пользователь записал измененный документ, фоновое задание может его перезаписать своими данными?
20 depthzer0
 
29.12.14
13:50
(19) да. тогда ему смс придёт :)
21 Бригада бронепоезда
 
29.12.14
13:53
(20) типа вводил 25 наименований в табличную часть, а в следующую секунду все это затирается данными из ЦБ и смс такое :"извините, ваши данные были перезаписаны, пожалуйста, введите их заново"
22 Бригада бронепоезда
 
29.12.14
13:56
зы. тогда может не стоит перезаписывать док, пока он открыт пользователем?
поставить заглушку на внешнее соединение - если док открыт, то не изменять
23 depthzer0
 
29.12.14
13:56
(22) хорошо.

а можно как-нибудь поймать для всей формы какое-нибудь событие перед изменением значения одного из элементов?
24 DmitrO
 
29.12.14
14:23
(23)нет такого события
а вообще задача, конечно, у вас удивительная, кто это придумал?
25 depthzer0
 
29.12.14
14:34
(24) знаешь всех придумщиков? :)

да понятно, что прям такого нет, может быть есть какой-то хитрый ход. вот я про него и спрашиваю
26 Serg_1960
 
29.12.14
14:38
(24) типовая конфигурация, план обмена -"Полный"... и ваши пользователи будут иметь возможность наблюдать проблему ТС. РИБ-база - и из под ног пользователя в любой момент может быть выдернут коврик обменом данных.
27 DmitrO
 
29.12.14
14:46
(25)мне интересна должность, не конкретный человек
28 Бригада бронепоезда
 
29.12.14
14:50
(26) в 90% обмен РИБ выполняется в ночное время.
кроме того, входные и выходные данные распределенных баз не пересекаются, как правило. в точки выгружается приходные документы, доки по установке цен, в центральную загружаются документы продажи.
29 Serg_1960
 
29.12.14
15:00
Счастливчики, у кого обмен только в ночное время и документы не "пересекаются" :)
Я обмен данными проводил чаще. Значительно чаще. Каждые семь минут :( И документы у меня "пересекаются" - производство в одном обособленном подразделении, а бухгалтерия - в другом.
30 depthzer0
 
29.12.14
15:00
(27) (28)  ребят, ну что вы в самом деле? )) ну тут тоже не весь док перезаписывается. вообще из другой базы другой документ приходит, если уже начинать вдаваться в детали, а в этом документе кое-что невидимое меняется. суть то не в том, а в том, что если чел начинает что то писать в комментарии, например, то у него выскакивает окно и он пугается, скорая-шмора, все дела. хочется сделать мягче реакцию. в сообщение выводить. а обработчик ожидания не хочется подключять. вот я и спрашиваю, может кто альтернативу подскажет.
31 Бригада бронепоезда
 
29.12.14
15:03
(30) альтернатив нет. нет обработчика в форме, который один на все изменения реквизитов.
32 DmitrO
 
29.12.14
15:23
(30)так я тебе об этом и пытался сказать в начале, если только комментарий пользователь пишет - надо выносить комментарий из объекта в регистр сведений, и редактировать его отдельно. Т.е. по идее данные разделять надо.
33 DmitrO
 
29.12.14
15:26
или вынести из объекта какраз вот это: " в этом документе кое-что невидимое меняется"..
34 Serg_1960
 
29.12.14
15:27
Если мне память не изменяет, то событие "у него выскакивает окно и он пугается"(тс) только тогда, когда пользователь пытается записать объект. Или я не прав?
35 DmitrO
 
29.12.14
15:29
(34)неа, не прав, сообщение будет сразу после редактирования реквизита связанного с данными или реквизита формы у которого стоит "Изменяет данные" либо у команды.
36 Бригада бронепоезда
 
29.12.14
15:32
вобщем не выдумывать волшебную таблетку, а взять и не полениться - у каждого элемента формы указать действие перед изменением - проверку изменения объекта на сервер. если изменен - отказ и вежливое предложение попить карвалолчика
37 depthzer0
 
29.12.14
15:34
(32) (33) хочется, чтобы в окне пользователя появлялось сообщение.

(34) не, начинает вводить в комментарий и сразу "Данные были изменены... то сё". если бы при записи - так и вопросов не было.

(36) в том то и дело, что я не вижу такого события "ПередИзменением" )))
38 DmitrO
 
29.12.14
15:36
(34)но может быть и при записи:
- пользователь открыл документ;
- вбил данные;
- пока тянулся к кнопке Записать, фоновое задание задание изменило документ;
- жмет Записать и получает сообщение.

а может быть и так:
- пользователь открыл документ;
- фоновое задание задание изменило документ;
- как только начнет вбивать данные получит сообщение.
39 Serg_1960
 
29.12.14
15:53
Угу, спс, запамятовал уже.

Да, кстати, насчет "нет обработчика в форме, который один на все изменения реквизитов": есть на форме один хитрый обработчик :) "ОбновлениеОтображения" - он на каждый чих пользователя эхом откликается.
40 depthzer0
 
29.12.14
15:55
8.3
41 Serg_1960
 
29.12.14
15:57
(39) Стоп, опять память подвела. Он срабатывает когда перерисовка нужна. Например, по строкам документа двигаешься или вкладки листаешь...

(40) Ууу... совсем грусно :)
42 Serg_1960
 
29.12.14
16:18
Из области фантастики :(

В типовой форме документа в процедуре ПередОткрытием() поставить "заглушку": если документ не новый (у него есть ссылка), то создавать новый документ, копировать и открыть его форму, а не форму исходного документа. Зачем такие сложности вы спросите? Чтобы разорвать связь между редактируемым документом и его ссылкой. Пользователи не будут получать сообщения,которые их пугают :) Задача прогера - выкрутиться при записи этого документа на "старую" ссылку
43 depthzer0
 
29.12.14
16:23
(42) ну да, это сложновато ))
44 Serg_1960
 
29.12.14
16:26
Угу, я такой, я гений :) Иначе не вижу способа "обойти" типовые механизмы платформы.
45 depthzer0
 
29.12.14
16:28
(44) реально классно, конечно, потому что лучше всего вообще через обработки работать. но тут уже так и нужно сразу ))