|
Проверить изменени документа | ☑ | ||
---|---|---|---|---|
0
Мандалай
20.03.19
✎
09:02
|
Добрый день.
Есть обработка, в которой выбирается документ. В форму обработки считывается содержимое документа. При этом другой пользователь может интерактивно войти в документ и что-то в нем поправить. Как проверить, что документ был изменен и не соответствует той версии, которая была считана обработкой? ВерсияДанных не работает. |
|||
1
Мандалай
20.03.19
✎
09:03
|
Есть вариант прикрутить обычный счетчик в документ, но это как то не комильфо.
|
|||
2
СтарПом
20.03.19
✎
09:12
|
может эта ветка подкинет идей Сформировать хеш документа
|
|||
3
Мандалай
20.03.19
✎
09:14
|
(2)Мне для 8.3.
|
|||
4
СтарПом
20.03.19
✎
09:16
|
(3) идей, а не не готового кода :)
|
|||
5
Мандалай
20.03.19
✎
09:19
|
(4)Ты смотри какой скушный :)
|
|||
6
mistеr
20.03.19
✎
09:21
|
(0) ЗаблокироватьДанныеДляРедактирования()
|
|||
7
Мандалай
20.03.19
✎
09:27
|
(6)Не поможет.
Ситуация: в 10-00 пользователь Иванов открыл обработку, прочитал данные документа, что-то изменил в обработке. Потом отвлекся, убежал на совещание. Оставил обработку открытой. в 10-30 пользователь Петров открыл документ, изменил в нем данные, сохранил документ. в 12-00 пользователь Иванов пришел с совещания, увидел свою обработку открытой, нажал кнопку Записать. В данном случае возможен конфликт двух массивов данных. Необходимо в явном виде запрещать запись данных из обработки. |
|||
8
aleks_default
20.03.19
✎
09:29
|
в 10-30 пользователь Петров открыл документ, изменил в нем данные, сохранил документ - петров идет лесом
|
|||
9
СтарПом
20.03.19
✎
09:32
|
ВерсияДанных (DataVersion)
Тип: Строка. Содержит текущую версию данных объекта. === в 10-00 пользователь Иванов открыл обработку, прочитал данные документа <<обработка запомнила версию данных>>, что-то изменил в обработке. Потом отвлекся, убежал на совещание. Оставил обработку открытой. ... в 12-00 пользователь Иванов пришел с совещания, увидел свою обработку открытой, нажал кнопку Записать. обработка перед записью считала актуальную версию данных, сравнила с запомненной и при несовпадении написала, что Иванов баран и должен перечитать документ и сделать свои изменения заново |
|||
10
Мандалай
20.03.19
✎
09:32
|
Петров главнее Иванова.
|
|||
11
СтарПом
20.03.19
✎
09:34
|
(10) тем более
|
|||
12
mistеr
20.03.19
✎
09:35
|
(7) Уточни, обработка меняет (записывает) исходный документ?
И раскрой пожалуйста "ВерсияДанных не работает". Как проверил? |
|||
13
Serg_1960
20.03.19
✎
09:44
|
(10) Ответ уже был дан - вычислить хэш ссылки объекта при чтении и сравнить с хэшем ссылки перед записью. Десяток строк кода написать - а разговоров то, разговоров...
|
|||
14
sqr4
20.03.19
✎
09:44
|
Походу в момент проверки ее читает. Надо же как только пользователь выбрал документ записывать версию данных, а затем в момент нажатия ну или чего там у вас, проверять с текущей в ссылке.
И опять же как это вас спасет от одновременных действий |
|||
15
mistеr
20.03.19
✎
09:48
|
(13) Что такое "хэш ссылки объекта"?
|
|||
16
aleks_default
20.03.19
✎
09:49
|
версия
|
|||
17
Serg_1960
20.03.19
✎
09:54
|
(15) Это ХешированиеДанных() объекта, полученного по ссылке.
|
|||
18
Serg_1960
20.03.19
✎
10:15
|
(офф) Шутка-юмора: погуглите <<НРег(СтрЗаменить(Строка(Хэш.ХешСумма), " ", ""))>> - по многим ссылкам гуляют одни и те же алгоритмы :)
|
|||
19
Мандалай
20.03.19
✎
10:25
|
ВерсияДанных работает, сам дурак.
|
|||
20
Жан Пердежон
20.03.19
✎
11:42
|
(19) только это хотел написать...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |