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