Имя: Пароль:
1C
1С v8
УдалениеРегистрацииИзменений при частых обновлениях объекта.
, ,
0 mvgfirst
 
06.06.16
18:05
Помогите разобраться с элементарным.

Допустим есть справочник "Товары" и есть план обмена "ОбменССайтом" в котором этот справочник включен.

И есть некая обработка - которая должна выгрузить изменения в файл.
И удалить регистрацию изменений.

Приблизительный алгоритм действий таков:
1) Запросом считываем список измененных элементов справочника "Товары"
2) Выгружаем их в файл
3) Удаляем изменения посредством УдалитьРегистрациюИзменений, в которую передаем по очереди элементы полученные в п.1

Пока все четко.
Но я подумал, а что будет происходить если в промежутке времени между п.1 и п.3 какой-нибудь пользователь изменить один или несколько элементов справочника из числа тех что уже выбраны для выгрузки.

По логике я не должен удалять их регистрацию. т.к. они должны быть выгружены повторно.
Но как отследить этот момент?

Можно конечно же выбирать не запросом, а через "ВыбратьИзменения" с указанием номера сообщения. Но я думаю это добавит лишних блокировок - чего не хотелось бы.

Есть ли какие-нибудь иные варианты?
1 Fragster
 
гуру
06.06.16
18:16
>я думаю это добавит лишних блокировок
а ты проверь
2 Cyberhawk
 
06.06.16
18:22
Между пунктами 2 и 3 файл удалили - и привет. Не делай так.
3 mehfk
 
06.06.16
19:00
(2) Кто удалил?
4 Fragster
 
гуру
06.06.16
19:01
(3) черный администратор
5 mehfk
 
06.06.16
19:03
(4) Это который сидит и ждет появления файлов, чтобы их удалить, чтобы ТС-у жизнь медом не казалась?
6 etc
 
06.06.16
19:15
> По логике я не должен удалять их регистрацию. т.к. они должны быть выгружены повторно.
Логично
7 Serg_1960
 
06.06.16
19:23
Зачем изобретать велосипед если уже есть план обмена?
8 Serg_1960
 
06.06.16
19:29
Формируешь сообщение обмена а потом "некая" обработка читает и конвертирет в формат твоего файла
9 mvgfirst
 
06.06.16
21:34
(7) а в чем собственно велосипед?
Я же написал, что использую План Обмена.
10 mvgfirst
 
06.06.16
21:39
(1) а зачем мне проверять.. Тут и в других интернетиках написано что таблица изменений блокируется.
Да и как проверить,  запустить в работу и дождаться пока посыпятся блокировки?
11 mvgfirst
 
06.06.16
21:42
(2) а как делать?
12 Cyberhawk
 
06.06.16
22:11
(3) По невыясненной причине взорвался файловый сервер, куда скидывались сообщения обмена
(11) Снимать регистрацию в источнике после загрузки подтверждения успешности доставки в приемник
13 mvgfirst
 
07.06.16
08:31
(12) Ну собственно это и понятно что снимать регистрацию надо после подтверждения.
Я не писал об этом потому что это никак не изменяет сути вопроса. Я ведь не спрашивал как гарантировать доставку сообщения обмена.

Еще раз сформулирую вопрос.
Как не удалить регистрацию объектов которые были изменены после получения списка измененных, но до удаления регистрации изменений.
14 mehfk
 
07.06.16
08:49
(13) Не сношай мозг - делай через ВыбратьИзменения.
15 mvgfirst
 
07.06.16
08:59
Да уже и сам пришел к такому выводу. Что похоже это единственный вариант (если не изобретать свой велосипед с блекджеком и шлюхами)
16 Serg_1960
 
07.06.16
09:08
А теперь смотри (7) :)

При многопользовательском режиме работы, хочешь не хочешь, а приходится признавать приоритет механизмов платформы перед своими "альтернативными" алгоритмами. И использовать блокировки как единственный метод избежать возникновения коллизий :(
17 mvgfirst
 
07.06.16
09:33
(16) я не ищу каких нибудь своих велосипедов.
Суть моего вопроса была - получить наиболее эффективный метод из имеющихся в системе.
Т.е. я предполагал наличие еще каких-то механизмов платформы о которых лично я ничего не знаю.
18 Fragster
 
гуру
07.06.16
10:30
(10) ну блокируется, и что? или у тебя выгрузка полтора часа работает.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший