Перед изменением на форме: Данные были изменены #730041


#0 by depthzer0
Всем привет! Открыта форма объекта. При этом на сервере объект изменяется. Соответственно при попытке внесения изменения на форме появляется предупреждение: "Данные были изменены или удалены.... бла-бла-бла". Хочется это предупреждение обработать и выводить пользователю сообщение, ну и вообще отловить это событие. Теоретически можно повесить ПодключитьОбработчикОжидания и проверять не изменился ли объект, но хотелось бы как-то без этого обойтись.
#1 by ssh2QQ6
А почему не передавать изменения данных на клиента при завершении обработки на сервере?
#2 by ssh2QQ6
Вообще на сервере можно проверять, не заблокирован ли объект перед обработкой: Из СП: Исключение     Предупреждение(НСтр("ru = 'Невозможно заблокировать документ.';"      + " en = 'Can't lock the document.'")); КонецПопытки;
#3 by depthzer0
как?
#4 by ssh2QQ6
Подозреваю, что ЗначениеВРеквизитФормы
#5 by depthzer0
сервер приоритетнее. он должен внести имзенения
#6 by Бригада бронепоезда
а зачем тереть стандартное предупреждение и заменять его своим сообщением? работа ради работы?
#7 by depthzer0
это фоновое задание производит изменения.
#8 by depthzer0
требование заказчика. ради единообразия.
#9 by ssh2QQ6
тогда
#10 by DmitrO
Когда так бывает, это чаще всего означает, что организация данных (структура ИБ) не соответствует бизнес процессам (правилам/порядку ввода данных пользователем).
#11 by DmitrO
+ но конечно? некоторым заказчикам и исполнителям оно пофиг, что не соответствует, ведь главное "единообразие" какое-то..
#12 by Бригада бронепоезда
единообразие - это стандартное предупреждение о том, что объект изменился. Зачем изобретать свои стандарты и тратить на это уйму человекоресурсов, не понимаю..
#13 by depthzer0
так а на форме можно поймать попытку изменения значения любого из элементов?
#14 by depthzer0
а как правильно сделать?
#15 by DmitrO
по сути: фоновое задание не должно изменять объекты редактируемые интерактивно пользователями. И особенно с такой частотой, что это становится проблемой для ввода данных пользователями. Если фоновое задание что-то и должно делать, то объект редактируемый пользователем надо делить; так, чтобы это не мешало вводу данных пользователями.
#16 by depthzer0
как делить? это не понятно
#17 by DmitrO
чтобы предложить решение задачи надо услышать задачу.
#18 by depthzer0
есть приоритетная база в которую вносятся конкретные изменения и есть второстепенная база, в которой при желании можно кое-что подправить. из приоритетной базы данные попадают во второстепенную и записываются. если записываемый документ был кем-то открыт во второстепенной, то пользователь с этим документом должен получить сообщение, что документ изменён.
#19 by DmitrO
а есть понимание того, что после того как пользователь записал измененный документ, фоновое задание может его перезаписать своими данными?
#20 by depthzer0
да. тогда ему смс придёт :)
#21 by Бригада бронепоезда
типа вводил 25 наименований в табличную часть, а в следующую секунду все это затирается данными из ЦБ и смс такое :"извините, ваши данные были перезаписаны, пожалуйста, введите их заново"
#22 by Бригада бронепоезда
зы. тогда может не стоит перезаписывать док, пока он открыт пользователем? поставить заглушку на внешнее соединение - если док открыт, то не изменять
#23 by depthzer0
хорошо. а можно как-нибудь поймать для всей формы какое-нибудь событие перед изменением значения одного из элементов?
#24 by DmitrO
нет такого события а вообще задача, конечно, у вас удивительная, кто это придумал?
#25 by depthzer0
знаешь всех придумщиков? :) да понятно, что прям такого нет, может быть есть какой-то хитрый ход. вот я про него и спрашиваю
#26 by Serg_1960
типовая конфигурация, план обмена -"Полный"... и ваши пользователи будут иметь возможность наблюдать проблему ТС. РИБ-база - и из под ног пользователя в любой момент может быть выдернут коврик обменом данных.
#27 by DmitrO
мне интересна должность, не конкретный человек
#28 by Бригада бронепоезда
в 90% обмен РИБ выполняется в ночное время. кроме того, входные и выходные данные распределенных баз не пересекаются, как правило. в точки выгружается приходные документы, доки по установке цен, в центральную загружаются документы продажи.
#29 by Serg_1960
Счастливчики, у кого обмен только в ночное время и документы не "пересекаются" :) Я обмен данными проводил чаще. Значительно чаще. Каждые семь минут :( И документы у меня "пересекаются" - производство в одном обособленном подразделении, а бухгалтерия - в другом.
#30 by depthzer0
ребят, ну что вы в самом деле? )) ну тут тоже не весь док перезаписывается. вообще из другой базы другой документ приходит, если уже начинать вдаваться в детали, а в этом документе кое-что невидимое меняется. суть то не в том, а в том, что если чел начинает что то писать в комментарии, например, то у него выскакивает окно и он пугается, скорая-шмора, все дела. хочется сделать мягче реакцию. в сообщение выводить. а обработчик ожидания не хочется подключять. вот я и спрашиваю, может кто альтернативу подскажет.
#31 by Бригада бронепоезда
альтернатив нет. нет обработчика в форме, который один на все изменения реквизитов.
#32 by DmitrO
так я тебе об этом и пытался сказать в начале, если только комментарий пользователь пишет - надо выносить комментарий из объекта в регистр сведений, и редактировать его отдельно. Т.е. по идее данные разделять надо.
#33 by DmitrO
или вынести из объекта какраз вот это: " в этом документе кое-что невидимое меняется"..
#34 by Serg_1960
Если мне память не изменяет, то событие "у него выскакивает окно и он пугается"(тс) только тогда, когда пользователь пытается записать объект. Или я не прав?
#35 by DmitrO
неа, не прав, сообщение будет сразу после редактирования реквизита связанного с данными или реквизита формы у которого стоит "Изменяет данные" либо у команды.
#36 by Бригада бронепоезда
вобщем не выдумывать волшебную таблетку, а взять и не полениться - у каждого элемента формы указать действие перед изменением - проверку изменения объекта на сервер. если изменен - отказ и вежливое предложение попить карвалолчика
#37 by depthzer0
хочется, чтобы в окне пользователя появлялось сообщение. не, начинает вводить в комментарий и сразу "Данные были изменены... то сё". если бы при записи - так и вопросов не было. в том то и дело, что я не вижу такого события "ПередИзменением" )))
#38 by DmitrO
но может быть и при записи: - пользователь открыл документ; - вбил данные; - пока тянулся к кнопке Записать, фоновое задание задание изменило документ; - жмет Записать и получает сообщение. а может быть и так: - пользователь открыл документ; - фоновое задание задание изменило документ; - как только начнет вбивать данные получит сообщение.
#39 by Serg_1960
Угу, спс, запамятовал уже. Да, кстати, насчет "нет обработчика в форме, который один на все изменения реквизитов": есть на форме один хитрый обработчик :) "ОбновлениеОтображения" - он на каждый чих пользователя эхом откликается.
#40 by depthzer0
8.3
#41 by Serg_1960
Стоп, опять память подвела. Он срабатывает когда перерисовка нужна. Например, по строкам документа двигаешься или вкладки листаешь... Ууу... совсем грусно :)
#42 by Serg_1960
Из области фантастики :( В типовой форме документа в процедуре ПередОткрытием поставить "заглушку": если документ не новый (у него есть ссылка), то создавать новый документ, копировать и открыть его форму, а не форму исходного документа. Зачем такие сложности вы спросите? Чтобы разорвать связь между редактируемым документом и его ссылкой. Пользователи не будут получать сообщения,которые их пугают :) Задача прогера - выкрутиться при записи этого документа на "старую" ссылку
#43 by depthzer0
ну да, это сложновато ))
#44 by Serg_1960
Угу, я такой, я гений :) Иначе не вижу способа "обойти" типовые механизмы платформы.
#45 by depthzer0
реально классно, конечно, потому что лучше всего вообще через обработки работать. но тут уже так и нужно сразу ))
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С