|
сравнить версии объектов с8 | ☑ | ||
---|---|---|---|---|
0
Сергей2017
12.07.18
✎
14:20
|
есть задача при попытке сохранения дока проверять если док в базе имеет версию более свежую, то тупо чтобы орма дока закрывалась молча и не спрашивало сохранить да\нет, т.к. все равно сохранить не получится.
делаю в передзаписью() Если ЭтотОбъект.ВерсияДанных < Ссылка.ПолучитьОбїект().ВерсияДанных Тогда Отказ = ИСТИНА ВОзврат; КОнецЕсди; косяк в том что иногда более свежая версия имеет строковое представление меньшее чем версия на форме, если сравнивать их как строки. то ли я чтото не так делаю, то ли алгоритм сравнения надо свой написать. Может ктото сталкивался с таким? |
|||
1
Cyberhawk
12.07.18
✎
14:44
|
Как ты определяешь "большую свежесть" у версий?
|
|||
2
Сергей2017
12.07.18
✎
15:01
|
я открываю док и меняю в реквизит в форме и не записываю.
захожу в другой сеанс, меняю док и записываю. в базе версия более свежая чем открыта в форме в первом сеансе, но если посмотреть в первом сеансе через отладчик, то ЭтотОбъект.ВерсияДанных будет к примеру ААоооооWt а в базе будет версия ААооооо8q и если сравнить их как строки, то получится что "ААоооооWt">"ААооооо8q"=ИСТИНА хотя на самом деле ААооооо8q - более свежая версия, но т.к. оно их нумерует как-то странно, то сравнение строк кривовато работает в итоге |
|||
3
Cyberhawk
12.07.18
✎
15:09
|
У тебя словесный понос? Ответь на вроде бы простой вопрос
|
|||
4
Сергей2017
12.07.18
✎
15:10
|
(1) эмпирически
|
|||
5
Cyberhawk
12.07.18
✎
15:11
|
И с чего ты тогда взял, что операция ">" должна прокатывать?
|
|||
6
Сергей2017
12.07.18
✎
15:11
|
(5) я попробовал - похоже не прокатывает
|
|||
7
Cyberhawk
12.07.18
✎
15:14
|
Почему простое неравенство не подходит?
|
|||
8
lodger
12.07.18
✎
15:17
|
(7) неравенство покажет отличие, но не свежесть.
|
|||
9
Eiffil123
12.07.18
✎
15:18
|
добавляй реквизит типа Дата, в нем сохраняй текущее время до секунды и там уже проверяй. Но если в пределах одной секунды пользователи поменяют, то уже система не сработает.
|
|||
10
DTX 4th
12.07.18
✎
15:26
|
Заменить все цифры на
Символ(КодСимвола(Цифра)-КодСимвола("0")+1+КодСимвола("z")) |
|||
11
DTX 4th
12.07.18
✎
15:28
|
Чем, кстати, стандартный механизм не угодил?
|
|||
12
Сергей2017
12.07.18
✎
15:29
|
(11) стандартный это какой?
|
|||
13
ale-sarin
12.07.18
✎
15:32
|
(12) В типовых от 1С во втором сеансе не даст изменить документ, т.к. он заблокирован в первом сеансе.
Если даже удастся записать во втором сеансе, то при записи в первом не запишет, сообщит что-то типа "объект уже изменен... что-то там версия данных отличается..." Вроде так. |
|||
14
Сергей2017
12.07.18
✎
15:32
|
(9) то есть оно все-таки действительно не по алфавиту и мне не показалось)
вмсето даты можно еще заюзать ТекущаяУниверсальнаяДатаВМиллисекундах() тогда с точностью до миллисекунд будет |
|||
15
Сергей2017
12.07.18
✎
15:33
|
(13) люди не хотят нажимать две лишние кнопки. хотя чтобы при нажатии кнопки записать если объект был уже кем-то изменене, то тупо форма закрылось и все
|
|||
16
Сергей2017
12.07.18
✎
15:35
|
(12) а в стандарте придется сначала ответить на вопрос "записать да\нет", а потом еще нажать ОК на предупрждении что не удалось записать. а потом еще и форму закрыть вручную и нажать "нет" на вопрос "записать да\нет"
|
|||
17
Serg_1960
12.07.18
✎
15:36
|
Автоматизируя хаос получаем автоматизированный хаос.
|
|||
18
DTX 4th
12.07.18
✎
15:45
|
(15) Но они же не узнают, применятся их изменения или нет.
Записывай в попытке и анализируй исключение xd |
|||
19
lodger
12.07.18
✎
15:46
|
(15) не давайте изменять объект если с ним уже кто-то работает.
|
|||
20
Cyberhawk
12.07.18
✎
15:48
|
(8) Правильно. Почему этого недостаточно?
|
|||
21
singlych
12.07.18
✎
15:48
|
(14) не сработает, если запишут в пределах одной миллисекунды
|
|||
22
Serg_1960
12.07.18
✎
15:49
|
(15) Мне кажется юзвера будут сильно ругаться, если задним числом с большим опозданием будут узнавать о том, что их изменения безвозвратно потеряны и не были сохранены в базе.
Автор, ты приготовил три конверта? |
|||
23
ale-sarin
12.07.18
✎
15:50
|
(15) Т.е. юзер поставил галку, нажал Ок, документ закрылся, ни о чем не сообщил, и галки в нем нет. Вот это номер. Я бы не стал так делать.
|
|||
24
Serg_1960
12.07.18
✎
16:02
|
Кстати основной довод автора - "т.к. все равно сохранить не получится"(0) - ошибочен. Сохранить - не проблема. Сложнее определить какая версия достойна быть в базе сохраненной.
|
|||
25
Cyberhawk
12.07.18
✎
16:05
|
(24) А как сохранить, например, после получения сообщения об оптимистичной блокировке?
|
|||
26
Eiffil123
12.07.18
✎
16:14
|
почему нельзя сделать основной реквизит формы справочникобъект? тогда при попытке редактирования любого реквизита система заблокирует данный объект от редактирования другими пользователями. это же типовое поведение, иначе все пользователи визжали бы.
|
|||
27
lodger
12.07.18
✎
16:16
|
(26) религия не позволяет, видимо.
|
|||
28
Serg_1960
12.07.18
✎
16:18
|
(25) Ранее я использовал ВерсииОбъектов, а сейчас наверное можно и РезультатыОбменаДанными задействовать.
|
|||
29
Serg_1960
12.07.18
✎
16:41
|
*(28) Наверное, сложно сказал :) Форма списка РС "Предупреждения при синхронизации данных" более удобна для интерфейса с юзвером по показу возникших коллизий (после внесения незначительных изменений в конфигурацию).
|
|||
30
ERWINS
12.07.18
✎
16:44
|
зачем?
|
|||
31
Serg_1960
12.07.18
✎
17:12
|
РИБ - при обмене он умеет выдергивать коврик из-под ног юзверей :(
|
|||
32
Eiffil123
12.07.18
✎
17:32
|
(31) А как при РИБ понять, что текущая версия более/менее правильная, чем та, которая пришла по обмену? Надо распределять документы по разным базам
|
|||
33
Cyberhawk
12.07.18
✎
17:39
|
(28) (29) Хз о чем ты. Внесенные изменения после получения оптимистичного отлупа уже не получить никак.
|
|||
34
Serg_1960
12.07.18
✎
21:11
|
(32) Никак. Негоже программисту этим заниматься. Я просто сохраняю обе версии в регистре, предоставляя пользователям возможность без меня между собой разбираться.
(33) Хз о чем ты. См. http://catalog.mista.ru/public/543218/ последние две фразы. |
|||
35
Сергей2017
12.07.18
✎
22:16
|
у меня бюжэет на эту задачу 1000-2000 руб, поэтому мне попроще решение надо с минимумом изменений
попробую вариант из (10) |
|||
36
asady
12.07.18
✎
23:44
|
(0) как-то попытаться спасти уже введенные данные не пробовл?
за закрытие формы молча при наличии введенных данных отрывают все внешние выступы напрочь... |
|||
37
Сергей2017
13.07.18
✎
08:47
|
(36) задачи "спасать" не было
|
|||
38
Eiffil123
13.07.18
✎
16:38
|
(34) а пользователи с этим разбираются вообще? может каждому нормально - в базе 1 работает пользователь 1 с его версией объекта. А в базе 2 - пользователь 2 с его версией объекта. Чего им по регистрам версий смотреть, время тратить
|
|||
39
Serg_1960
13.07.18
✎
18:38
|
(38) РИБ, общие объекты мигрируют с обменом между узлами... и в любой момент может всплыть факт одновременного (между сеансами обмена) изменения одного и того-же объекта в нескольких узлах. Погугли "коллизии, возникающие при обмене данными".
Сидит юзверь, открыв форму, редактирует объект, а в это время происходит сеанс обмена данными и... и может возникнуть тема этой ветки. |
|||
40
xXeNoNx
13.07.18
✎
19:06
|
(2) А шо там в с8 уже убрали объектные блокировки?
|
|||
41
Сергей2017
15.07.18
✎
00:40
|
в итоге решил забить, сказав что так нельзя сделать и от меня отстали
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |