|
Версионирование или приветствую другие идеи | ☑ | ||
---|---|---|---|---|
0
catena
20.02.12
✎
18:49
|
Требуется помощь зала.
Задача такая: Некоторая обработка периодически лопатит документы. В начале запросом отбираются необходимые данные, затем каждый документ обрабатывается отдельно в транзакции. В конце обработки каждого документа хотелось бы знать, не перепроводили ли его с момента получения данных (старта обработки). Вариантов решения было опробовано несколько: 1. Управляемые блокировки. Слетают, заразы, при смене транзакции. 2. Отказаться от общего запроса и делать в транзакции для каждого регистратора отдельно, блокируя таблицы - не очень приятно. 3. Перед окончанием транзакции проверять версию объекта. В принципе, тут из всего версионирования нужен только момент последних изменений - до начала обработки или после. Вот тут проблема - версионирования в глаза не видела :) Стоит ли заморачиваться поиском механизма или дешевле сделать реквизит (ДатаПоследнегоИзменения)? 4.... Открыта для предложений. |
|||
1
pumbaEO
20.02.12
✎
18:52
|
Просто знать?
Документ.Записать(режимЗаписи.Проведени); НовыйЭлемент = ТаблицаВерсий.Добавить() НоыйЭлемент.Версия = Документ.Версия; НовыйЭлемент.Ссылка = Документ.Ссылка; |
|||
2
Maxus43
20.02.12
✎
18:55
|
имхо если обработка так долго работает что кто-то успеет провести документ в процессе - надо менять алгоритм
|
|||
3
Maxus43
20.02.12
✎
19:01
|
и собственно пример ъотелось бы задачи увидеть... ну зачем?)
|
|||
4
catena
20.02.12
✎
19:01
|
(2)Один документ обрабатывает как правило быстро. А вот документов в выборке может быть много и с момента начала обработки последний в выборке могут успеть изменить.
|
|||
5
catena
20.02.12
✎
19:02
|
(3)Интеграция в другую базу.
|
|||
6
pumbaEO
20.02.12
✎
19:02
|
А что будешь делать если документ изменен окажется?
|
|||
7
catena
20.02.12
✎
19:06
|
(6)Откажу в интеграции до следующей выгрузки.
|
|||
8
КМ155
20.02.12
✎
19:08
|
(7) замутить план обмена уже предлагали ?
|
|||
9
ZOMI
20.02.12
✎
19:08
|
Для этих доков создать Последовательность //В начале обработке насильно на последний установить Границу // Как вариант // Не понятно что за 'интеграция'
|
|||
10
kuromanlich
20.02.12
✎
19:09
|
бери документы (запросом ли, перебором ли...), а данные из документа в момент обхода...
ну и (7) +1 |
|||
11
catena
20.02.12
✎
19:12
|
(8)Вторая база - не 1с.
(10)Это вариант 2. Тоже вариант, конечно :) |
|||
12
kosts
20.02.12
✎
19:38
|
(0) Заблокировать все необходимые документы.
|
|||
13
catena
20.02.12
✎
19:52
|
(12)Блокировки действуют в рамках транзакции. Можно, конечно, блокировать каждый раз после смены транзакции, но мне не кажется этот вариант красивым.
|
|||
14
Никола_
Питерский 20.02.12
✎
20:10
|
(13) что такое смена транзакции ?
|
|||
15
catena
20.02.12
✎
20:14
|
(14)Зафиксировать/отменить - начать.
|
|||
16
kosts
20.02.12
✎
20:18
|
(13)
У меня блокировка не слетает, что не так делаю?...
|
|||
17
catena
20.02.12
✎
20:22
|
(16)Даже если ОтменитьТранзакцию?
|
|||
18
kosts
20.02.12
✎
20:25
|
(17) "Ошибка блокировки объекта. Объект уже заблокирован:"
|
|||
19
catena
20.02.12
✎
20:27
|
(18)Странно, а почему тогда у меня слетают? схема та же...
|
|||
20
kosts
20.02.12
✎
20:30
|
(19) Объекты сохраняются в каких либо переменных?
|
|||
21
catena
20.02.12
✎
20:35
|
(20)Примерно как у тебя: блокирую и собираю в список значений. Все, потом ничего больше с ними не делаю - не пересохраняю, не изменяю.
|
|||
22
kosts
20.02.12
✎
20:53
|
(21) пробуй ТЗ или массив
|
|||
23
catena
20.02.12
✎
20:56
|
(22)Действительно есть разница? Попробую обязательно завтра :)
|
|||
24
Лефмихалыч
20.02.12
✎
21:03
|
Заблокировать() не предлагать?
|
|||
25
catena
20.02.12
✎
21:04
|
(24)Чукча писатель? :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |