Имя: Пароль:
1C
1С v8
Обновление полей документа при получении их из другой системы
0 nasik90
 
15.03.16
23:15
Есть документ с полями и табличными частями. Стоит задача получать данные по некоторым полям из другой системы, при этом эти поля закрыть на редактирование. Обмен производится по ключевому полю, которое не меняется.
Допустим пользователь редактирует документ и в этот момент данные по этому документу придут из другой системы. Тогда пользователь не сможет сохранить свои наработки (системы ругнется, что данные были изменены). Какие есть способы по избежанию таких случаев?

И еще: интересно как платформа понимает, что данные были изменены? Анализирует стандартное поле ВерсияДанных?

Формы управляемые, платформа 8.3.5.
1 Rie
 
15.03.16
23:39
(0) Программное изменение не меняет Модифицированность.
2 NcSteel
 
15.03.16
23:39
(0) Вы описали стандартные коллизии обмена.
Самый лучший вариант это запретить редактирование данных в разных базах. таким образом, если в базе создали этот элемент, то и редактировать его должны именно в этой базе.
3 NcSteel
 
15.03.16
23:40
(1) Версия меняется, да и коллизию это не отменяет
4 nasik90
 
15.03.16
23:55
(2) Да, я понимаю, что нужно редактировать именно в той базе,в которой и создали. В идеале -вообще чтобы редактирование происходило в одной базе. Но на практике этого сложно добиться в виду различных моментов (процесс так построен и я не его изменить).
Мне в голову приходит такая идея - все, что приходит из другой системы, хранить в отдельном месте, например, регистре сведений.
5 NcSteel
 
16.03.16
00:31
(4) Все остальное компромиссы. Решений может быть много, например хранить отдельно данные... Но если данные связанные, то опять возникают коллизии, что если данные связанные, то одни данные изменятся, а другие связанные нет..
6 Diman000
 
16.03.16
00:32
Часть данных из другой системы можно хранить в отдельном регистре сведений. С т.з. архитектуры это самое грамотное, но это может требовать существенных доработок системы.

Есть другой вариант - при передаче/получении внешних данных использовать метод ЗаблокироватьДанныеДляРедактирования. За полную точность названия метода не ручаюсь, но такой точно есть - я его с успехом применяю. Он вызовет исключение, если объект кем-то открыт.
Но позже нужно будет провести повторную попытку получения данных.
7 nasik90
 
16.03.16
00:44
(6) Спасибо за информацию о методе. Что-то подобное давно искал.