Имя: Пароль:
1C
1С v8
Проверить изменени документа
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) только это хотел написать...
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.