|
Как сравнить версию данных объекта на "больше/меньше"? | ☑ | ||
---|---|---|---|---|
0
suvolod
15.07.13
✎
09:54
|
Написан обмен документами с внешней программой. Кратко - при каждой записи документа выгружается xml-файл с данными этого документа. Внешняя программа должна подобрать эти файлы и обработать, причем, если документ записывался/проводился несколько раз (и на этот документ в папке обмена создано несколько xml-ок), то нужно каким-то образом обработать только последнюю версию документа, остальные откинуть. Встал вопрос, как сравнить на больше / меньше версию объекта. Привязка ко времени сразу отпадает (при простом редактировании неоперативного документа его время не меняется). По логике, нужно привязаться к версии данных.. но тут проблема: непонятно как сравнивать две версии данных, так как версия - это строка, причем формируемая по непонятному принципу.
Например, я несколько раз подряд перезаписал элемент и получил такие версии объекта (в порядке возрастания) AAAAAAANN5Y= AAAAAAANN5c= AAAAAAANN5g= AAAAAAANN5k= AAAAAAANN5o= AAAAAAANN5s= AAAAAAANN5w= AAAAAAANN50= AAAAAAANN54= AAAAAAANN58= AAAAAAANN6A= AAAAAAANN6E= Если сравнивать эти строки по правилам возрастания ASCII кодов символов (вспомним, что сначала в ней идут непечатаемые символы, потом знаки препинания, цифры, буквы ВРег, буквы НРег и т.д.), то, например, выражение "AAAAAAANN5Y=" < "AAAAAAANN5c=" даст Ложь, хотя из списка версий явно видно, что 5Y < 5c (т.е. в контексте версий это - Истина). Вопрос: как можно (и можно ли ? ) правильно сравнить версии данных. Не на равенство, а именно на больше / меньше? |
|||
1
Лефмихалыч
15.07.13
✎
09:58
|
я не вижу, где "явно видно, что 5Y < 5c"
|
|||
2
Лефмихалыч
15.07.13
✎
09:58
|
и не понимаю, что даст такое сравнение
|
|||
3
Serg_1960
15.07.13
✎
10:01
|
А я не понимаю зачем записывать и хранить все версии в отдельных файлах, если потом "нужно каким-то образом обработать только последнюю версию документа, остальные откинуть"? О_О
|
|||
4
viktor_vv
15.07.13
✎
10:05
|
А писать в файлик время дату время создания версии не вариант ?
|
|||
5
pessok
15.07.13
✎
10:05
|
почему бы сразу файлик то не заменять? религия?
|
|||
6
suvolod
15.07.13
✎
10:06
|
AAAAAAANN5Y= - самая младшая версия,
AAAAAAANN5c= - следующая версия объекта в контексте сравнения версий: AAAAAAANN5Y= меньше (младше) AAAAAAANN5c= в контексте сравнения строк: AAAAAAANN5Y= больше AAAAAAANN5c= |
|||
7
Maxus43
15.07.13
✎
10:07
|
>>выгружается xml-файл с данными этого документа
при сериализации поле Версия данных не попадает же в файл, не? |
|||
8
Лефмихалыч
15.07.13
✎
10:08
|
по-моему кто-то не умеет пользоваться планами обмена, но любит трудности и изобретать велосипеды
|
|||
9
suvolod
15.07.13
✎
10:09
|
заменять - не вариант.. тогда можно натолкнуться на кофликт, что я, например, пытаюсь записать обновленные данные в файл, который уже читает внешняя программа.
Кроме этого, синхронизация не моментальная, а раз в 10 минут.. так что за это время нагенерировать файликов можно много |
|||
10
suvolod
15.07.13
✎
10:12
|
(8). При чем тут планы обмена? Я не с 1с-кой данными обмениваюсь, а с со сторонним ПО, стоящим на серваке, обслуживающим розничные магазины.
|
|||
11
suvolod
15.07.13
✎
10:13
|
(7). Попадает.. я его выгружаю туда. Но топик тому и посвящен, что версия данных по сути мне ничего не дает, так как непонятно, как сравнить две версии данных на больше/меньше :)
|
|||
12
Maxus43
15.07.13
✎
10:15
|
(11) она не для этого придумана, и к версии по времени отношения не имеет.
|
|||
13
EvgeniuXP
15.07.13
✎
10:16
|
(10) но тема попадает в v8 - т.е. 1С...
|
|||
14
Живой Ископаемый
15.07.13
✎
10:17
|
2(10) и что?
|
|||
15
Лефмихалыч
15.07.13
✎
10:17
|
(10) вот я и говорю - кто-то не умеет планами обмена пользоваться. Они предназначены не только для обмена 1с-1с, но и для обмена со сторонним ПО и как раз вот эту задачу "нужно каким-то образом обработать только последнюю версию документа, остальные откинуть" решают блестяще
|
|||
16
suvolod
15.07.13
✎
10:25
|
Лефмихалыч, ты так и не въехал. Последнюю версию документа должна обрабатывать другая сторона (не 1С), а я лишь должен подать xml-ку с разными версиями, которые можно корректно обработать.
Юзер провел документ - автоматически сгенерировалась xml-ка #1 Через секунду юзер удалил строку в документе и снова провел. - сгенерировалась xml-ка #2. В обоих xml-ках время документа - одинаковое. Что можно записать в поле "Версия данных" этих XML-ок, чтобы, распарсив эти два файла, программист на "той стороне" мог понять, что первая xml-ка уже устарела? |
|||
17
Лефмихалыч
15.07.13
✎
10:26
|
(16) спасибо, поржал
|
|||
18
suvolod
15.07.13
✎
10:27
|
(16) Еще раз: за версиями я не слежу, но я должен подать некий признак (поле), по которому принимающая сторона поймет, какую из "задублированных" по одному документу xml-ок нужно обработать, а какие отбросить.
|
|||
19
suvolod
15.07.13
✎
10:28
|
(17).. Ничего от тебя другого и не ожидал
|
|||
20
SeraFim
15.07.13
✎
10:29
|
(16) подавать в xml-ке ТОЛЬКО последнюю версию религия не позволяет?
|
|||
21
ВикторП
15.07.13
✎
10:30
|
(4) чем не подходит?
|
|||
22
Maxus43
15.07.13
✎
10:31
|
обмены работают так - в файле только последняя выгруженная версия объекта. Если у тебя куча файлов - то грузи их последовательно по времени, в итоге будет последняя версия. Или сделай онлайн обмен
|
|||
23
suvolod
15.07.13
✎
10:32
|
(20). Я и так подаю последнюю версию. Только, например, для примера из (16) последняя версия для первого файла будет, например "AAAAAAANN5Y", а для второго (перезаписанного секундой позже) - уже "AAAAAAANN5с". В итоге в папке обмена лежат два файла по одному документу с разными версиями данных, которые непонятно как сравнивать..
|
|||
24
EvgeniuXP
15.07.13
✎
10:32
|
выгружают один хмл.
|
|||
25
Maxus43
15.07.13
✎
10:36
|
(23) да не смотри ты на Версия данных, не для этого она
|
|||
26
suvolod
15.07.13
✎
10:36
|
ладно, спасибо всем за обсуждение, для себя из него вынес то, что 1С-овское свойство ВерсияДанных сравнивать на больше/меньше не получиться. Видимо, придется подавать в качестве этого поля время записи/проведения документа
|
|||
27
EvgeniuXP
15.07.13
✎
10:36
|
номер принятого и номер отправленного тогда вручную формируй.
|
|||
28
Serg_1960
15.07.13
✎
10:37
|
PS:
ТС, ты не поверишь: планы обмена созданы не только для работы "внутри" 1С. Этот функционал платформы можно использовать так, как тебе захочется - все "ключевые моменты" можно "перехватить" и обработать программно. |
|||
29
Maxus43
15.07.13
✎
10:38
|
(26) да вобще не так делают такие обмены... по крайней мере куча файлов - это точно велосипед. в 1с обен данными сделан на удивление хорошо, в других системах такого не видел, там вот и изобретают самописцы всегла
|
|||
30
suvolod
15.07.13
✎
10:38
|
Мaxus43, отдельное спасибо за подсказки по существу, без флуда :)
|
|||
31
Serg_1960
15.07.13
✎
10:41
|
Maxus43 , в принципе, куча файлов - это ещё не "велосипед с квадратными колесами". У автора - аналог типового версионирования. Только у тс оно внешнее получилось :)
|
|||
32
Maxus43
15.07.13
✎
10:42
|
(31) я б сказал это попытка сделать онлайн обмен (при изменении дока сразу выгружается файл), тока в виде файлов)
|
|||
33
Serg_1960
15.07.13
✎
10:45
|
(32) Да... но тс сам говорил ранее в (9) - обмен раз в 10 минут.
|
|||
34
Maxus43
15.07.13
✎
10:50
|
тогда проблем вобще нет. Раз в 10 минут выгружаются в файл только последние версии из таблиц изменений. Всё...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |