Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Проверить изменени документа

Проверить изменени документа
Я
   Мандалай
 
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)Ты смотри какой скушный :)
   mistеr
 
6 - 20.03.19 - 09:21
(0) ЗаблокироватьДанныеДляРедактирования()
   Мандалай
 
7 - 20.03.19 - 09:27
(6)Не поможет.
Ситуация:
в 10-00 пользователь Иванов открыл обработку, прочитал данные документа, что-то изменил в обработке. Потом отвлекся, убежал на совещание. Оставил обработку открытой.
в 10-30 пользователь Петров открыл документ, изменил в нем данные, сохранил документ.
в 12-00 пользователь Иванов пришел с совещания, увидел свою обработку открытой, нажал кнопку Записать.

В данном случае возможен конфликт двух массивов данных.
Необходимо в явном виде запрещать запись данных из обработки.
   aleks_default
 
8 - 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) тем более
   mistеr
 
12 - 20.03.19 - 09:35
(7) Уточни, обработка меняет (записывает) исходный документ?

И раскрой пожалуйста "ВерсияДанных не работает". Как проверил?
   Serg_1960
 
13 - 20.03.19 - 09:44
(10) Ответ уже был дан - вычислить хэш ссылки объекта при чтении и сравнить с хэшем ссылки перед записью. Десяток строк кода написать - а разговоров то, разговоров...
   sqr4
 
14 - 20.03.19 - 09:44
Походу в момент проверки ее читает. Надо же как только пользователь выбрал документ записывать версию данных, а затем в момент нажатия ну или чего там у вас, проверять с текущей в ссылке.
И опять же как это вас спасет от одновременных действий
   mistеr
 
15 - 20.03.19 - 09:48
(13) Что такое "хэш ссылки объекта"?
   aleks_default
 
16 - 20.03.19 - 09:49
версия
   Serg_1960
 
17 - 20.03.19 - 09:54
(15) Это ХешированиеДанных() объекта, полученного по ссылке.
   Serg_1960
 
18 - 20.03.19 - 10:15
(офф) Шутка-юмора: погуглите <<НРег(СтрЗаменить(Строка(Хэш.ХешСумма), " ", ""))>> - по многим ссылкам гуляют одни и те же алгоритмы :)
   Мандалай
 
19 - 20.03.19 - 10:25
ВерсияДанных работает, сам дурак.
   Жан Пердежон
 
20 - 20.03.19 - 11:42
(19) только это хотел написать...

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.