Имя: Пароль:
1C
1С v8
Как сравнить версию данных объекта на "больше/меньше"?
,
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 минут выгружаются в файл только последние версии из таблиц изменений. Всё...