|   |   | 
| 
 | сравнить версии объектов с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 | 
        в итоге решил забить, сказав что так нельзя сделать и от меня отстали     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |