|   |   | 
| 
 | Уникальный идентификатор | ☑ | ||
|---|---|---|---|---|
| 0
    
        Азат 29.02.12✎ 10:35 | 
        Собственно, суть: выгрузка из самописки (ОУ) в бухгалтерию, причем из первой во вторую сразу несколько документов переносятся в документ одного вида ("Операция, введенная вручную"). Бухия ни разу не тронутая, девственная и тп.
  Внимание, вопрос: что можно использовать в качестве уникального идентификатора при таком переносе? | |||
| 1
    
        PVV65 29.02.12✎ 10:36 | 
        Уникальный идентификатор.     | |||
| 2
    
        mikecool 29.02.12✎ 10:36 | 
        новый уникальй, сохраненный в документе и присвоенный операции в бухе     | |||
| 3
    
        PVV65 29.02.12✎ 10:37 | 
        +(1) Который уже существует.     | |||
| 4
    
        Reset 29.02.12✎ 10:38 | 
        Уникальный идентификатор ссылки. Вероятность совпадения "крайне мала" (с).     | |||
| 5
    
        Азат 29.02.12✎ 10:38 | 
        (2) а повторения не будет?     | |||
| 6
    
        Азат 29.02.12✎ 10:38 | 
        (3) херню сказал     | |||
| 7
    
        Азат 29.02.12✎ 10:38 | 
        (4) см (6) к тебе тоже относится... получил я такую вероятность - когда сливал 2 объекта по 10000 элементов в 1 общий     | |||
| 8
    
        PVV65 29.02.12✎ 10:39 | 
        (6) Да ты что!!!     | |||
| 9
    
        Reset 29.02.12✎ 10:39 | 
        (6) Не груби     | |||
| 10
    
        PVV65 29.02.12✎ 10:39 | 
        (7) Не повезло...     | |||
| 11
    
        mikecool 29.02.12✎ 10:40 | 
        (7) я еще ни разу не попался на таком
  бульбень тогда херь какую нить из вид + номер+ дата + время и все в 36 разрядном виде ) | |||
| 12
    
        Reset 29.02.12✎ 10:40 | 
        (10) ... с руками     | |||
| 13
    
        Азат 29.02.12✎ 10:42 | 
        (11) ну это канеш вариант - типа в коммент пихать "ЗначениеВСтрокуВнутр" или что-нить такое
  (12) тебе с ДНК не повезло, никто же об этом не кричит на весь форум | |||
| 14
    
        ЭЦ 29.02.12✎ 10:42 | 
        Я бы использовал GUID (Глобальный уникальный идентификатор).
  И еще потребуется создать регистр в котором отслеживать какие исходные документы соответствуют каким операциям. | |||
| 15
    
        Азат 29.02.12✎ 10:42 | 
        (14) в принципе, в ОУ проблем нет, вопрос, насколько это затронет все остальные процессы в конфе     | |||
| 16
    
        ЭЦ 29.02.12✎ 10:47 | 
        никакие процессы это не затронет и даже обновляться будет нормально.
  При этом конечно имеется в виду, что в базе приемнике хранится XML представление GUID | |||
| 17
    
        Азат 29.02.12✎ 10:49 | 
        (16) эмм, а что имеется в виду под ГУИД? в смысле, как его получить средствами 1С?     | |||
| 18
    
        PVV65 29.02.12✎ 10:50 | 
        (17) Не поверишь, так же как УникальныйИдентификатор.     | |||
| 19
    
        ЭЦ 29.02.12✎ 10:53 | 
        Например вот так :
  XML_ПредставлениеGUID = XMLСтрока(СсылкаНаОбъект); | |||
| 20
    
        Азат 29.02.12✎ 10:54 | 
        (19) спс, щас попробую     | |||
| 21
    
        Sammo 29.02.12✎ 10:57 | 
        (20) Секундочку, вроде бы оно у тебя судя по 7 пересеклось.
  Кстати, пересечение возможно, когда гуиды ставят шаловливыми ручками... | |||
| 22
    
        Азат 29.02.12✎ 10:59 | 
        (21) да, пересеклось, думалось, что будет уникально, но при попытке УстановитьСсылкуНового оч сильно ругалось и материлось...
  ЗЫ, ни одного ууида из перечисленных руками не ставилось... | |||
| 23
    
        Reset 29.02.12✎ 11:00 | 
        Про (19) сказано еще в (1). Правда, автор сказал, что это херня.     | |||
| 24
    
        Sammo 29.02.12✎ 11:04 | 
        (22) Что и требовалось доказать. Пересечение возникло при установке ссылки руками...     | |||
| 25
    
        Азат 29.02.12✎ 11:11 | 
        (24) читай постскриптум в (22) до полного просветления...
  в ОУ загрузили 2 справочника по 10000 элементов... после этого запустили перенос в один справочник в БП в БП при создании устанавливали ссылку элемента из ОУ... | |||
| 26
    
        Азат 29.02.12✎ 11:12 | 
        (23) читай второе предложение в (13) до полного просветления     | |||
| 27
    
        Sammo 29.02.12✎ 11:21 | 
        (25) У разных элементов метаданных могут быть одинаковые уникальные идентификаторы. Но опять же только в том случае, если их ставили руками     | |||
| 28
    
        Азат 29.02.12✎ 11:25 | 
        (27) я не собираюсь тебя уговаривать и в чем-то оправдываться...
  (19) почему-то XMLСтрока тот же УУИД возвращает... короче, все извраты нафиг, ЗначениеВСтрокуВнутр рулит... | |||
| 29
    
        PVV65 29.02.12✎ 11:37 | 
        (28) Как будто ЗначениеВСтрокуВнутр вернет другое...     | |||
| 30
    
        Азат 29.02.12✎ 11:38 | 
        (29) ну ты хоть посмотри сначала, советчик ***     | |||
| 31
    
        ЭЦ 29.02.12✎ 11:40 | 
        (28) Смотри внимательно - часто бывает, что отличается только одна буква     | |||
| 32
    
        Reset 29.02.12✎ 11:46 | 
        (29) Забей, полудурок он и есть полудурок.     | |||
| 33
    
        Азат 29.02.12✎ 11:46 | 
        (31) я канеш оч сильно извиняюсь, но: http://s017.radikal.ru/i429/1202/ee/03b38bc8c687.jpg
  Код: Стр = СокрЛП(Расход.УникальныйИдентификатор()) + Символы.ПС + СокрЛП(XMLСтрока(Расход.Ссылка)) + Символы.ПС + СокрЛП(ЗначениеВСтрокуВнутр(Расход)); | |||
| 34
    
        Азат 29.02.12✎ 11:49 | 
        (32) канеш забей, даром, что полудурок на тебя из зеркала смотрит     | |||
| 35
    
        ZUM 29.02.12✎ 11:51 | 
        Используй один и тот же GUID что в источнике что в приемнике и не будет проблем с синхронизацией УстановитьСсылкуНового() тебе поможет.     | |||
| 36
    
        ЭЦ 29.02.12✎ 11:51 | 
        а код обработки можно посмотреть     | |||
| 37
    
        Sammo 29.02.12✎ 11:52 | 
        (29) Емнип, значениевнутр вернет 2 идентификатора.
  Второй - гуид в форме хранения скуля. Первый, емнип, метаданного, но зуб не дам. | |||
| 38
    
        ZUM 29.02.12✎ 11:55 | 
        //Определяем есть ли документ в системе
  докСсылка = Документы.ДокуменПриемник.ПолучитьСсылку(Новый УникальныйИдентификатор(ТаблицаДанных.Ид)); //ТаблицаДанных.Ид - текстовое представление GUID источника Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДокуменПриемник.Ссылка |ИЗ | Документ.ДокуменПриемник КАК ДокуменПриемник |ГДЕ | ДокуменПриемник.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка",докСсылка); Если Запрос.Выполнить().Пустой() Тогда // Нету, создаем новый устанавливаем ссылку ДокументОбъект = Документы.ДокуменПриемник.СоздатьДокумент(); ДокументОбъект.УстановитьСсылкуНового(докСсылка); Иначе //Есть будем работать с найденным документом ДокументОбъект = докСсылка.ПолучитьОбъект(); КонецЕсли; | |||
| 39
    
        ZUM 29.02.12✎ 11:57 | 
        У меня указанная схема уже пол года молотит нареканий небыло     | |||
| 40
    
        ЭЦ 29.02.12✎ 11:59 | 
        (33) 
  СокрЛП(Расход.УникальныйИдентификатор()) СокрЛП(XMLСтрока(Расход.Ссылка)) это одно и тоже только второе набивать быстрее и лучше просто XMLСтрока(Расход.Ссылка) | |||
| 41
    
        ЭЦ 29.02.12✎ 12:05 | 
        (38) А как быть если база приемник была ранее получена путем копирования базы источника.
  и сответственно в ней много повторяющихся GUIDов | |||
| 42
    
        ZUM 29.02.12✎ 12:06 | 
        Они не могут совпадать по определению это одни и те же элементы.     | |||
| 43
    
        ZUM 29.02.12✎ 12:08 | 
        Используйте конвертацию 2.0 быстро и красиво.
  И по внутренним идентификаторам умеет синхронизировать. Указанную обработку на конвертации можно за 1 час с чайком намолотить. | |||
| 44
    
        ЭЦ 29.02.12✎ 12:10 | 
        Они не могут НЕ совпадать именно потому, что на момент копирования это были одни и теже объекты. 
  А затем эти объекты могли быть переименованы - т.е. по смыслу стать другими. | |||
| 45
    
        Sammo 29.02.12✎ 12:11 | 
        (41) Тогда это одни и теже данные.     | |||
| 46
    
        Sammo 29.02.12✎ 12:11 | 
        + 45 с учетом 44 - тогда ССЗБ     | |||
| 47
    
        ZUM 29.02.12✎ 12:23 | 
        (44) Регистр соответствия GUID-ов Вам в помощь.     | |||
| 48
    
        ЭЦ 29.02.12✎ 12:24 | 
        (45) С точки зрения GUID - одни и теже, а по смыслу может быть разные.
  например был контрагент Пупкин. Скопировали базу и мудрая девушка переименовала Пупкина в Газпром. А в первичной базе Пупкин остался Пупкиным - Вы на него вешаете наладные и оплаты пупкина. В тоже время в базе копии на него вешаются накладные Газпрома. Потом Вы делаете обмен по GUID и в лучшем случае у Вас Пупкин пропадает и появляется Газпром, а в худшем на Пупкина вешаются все долги Газпрома. | |||
| 49
    
        PVV65 29.02.12✎ 12:27 | 
        (48) И какой вывод?     | |||
| 50
    
        ZUM 29.02.12✎ 12:28 | 
        (47) :)     | |||
| 51
    
        ЭЦ 29.02.12✎ 12:32 | 
        (49) Вывод такой.
  По GUID синхронизировать очень хорошо, НО Если синхронизируются не пустые базы, то прежде чем запускать обмен надо проверить, что синхронизируемые по GUID объекты семантически идентичны (т.е. обозначают одно и тоже). Я напимер, писал обработочку которая, которая находила одинаковые GUID в обеих базах и сравнивала их типы и наименования. В случае их совпадения вс Зер гуд. Иначе - разбираться. | |||
| 52
    
        PVV65 29.02.12✎ 12:34 | 
        (51) А если после (51) пользователь сделал (48)?     | |||
| 53
    
        ZUM 29.02.12✎ 12:35 | 
        (51) ага и в случае не совпадения создать новый элемент и 
  (47) :) | |||
| 54
    
        ЭЦ 29.02.12✎ 12:38 | 
        (52) В этом случае уже должна работать бизнес логика заложенная в обмене. Какая база является первоисточником данных по контрагентам, кто может их переиминовывать, нужно ли спрашивать разрешение на переименование при загрузке и т.п.     | |||
| 55
    
        PVV65 29.02.12✎ 12:40 | 
        (54) Тогда к чему пост (48). То, что изложено в (54) должно быть всегда (хотя и не все).     | |||
| 56
    
        PVV65 29.02.12✎ 12:41 | 
        +(55) А бизнес-логика должна быть при работе с базой (например, нельзя переименовывать контрагента).     | |||
| 57
    
        ЭЦ 29.02.12✎ 12:44 | 
        (55) К тому что 48 - предполагает ручное разбирательсво которое никак не запрограмировать.
  а 54 - это уже после выполнения ручного разбирательства и сопоставления контрагенов | |||
| 58
    
        ShoGUN 29.02.12✎ 12:48 | 
        Облин, у кого-то GUID-ы пересеклись, причём он утверждает, что они сами по себе так сделали... Ну-ну. Математику принципиально игнорируем :)     | |||
| 59
    
        ZUM 29.02.12✎ 12:49 | 
        (57) Зачем эти сложности?
  Один раз пишется обработка которая в базе приемнике в случае совпадения GUID с базой приемника перепривязываются на другие назначенные им в источнике Пример: Источник: Приемник | |||
| 60
    
        ZUM 29.02.12✎ 12:50 | 
        Петров 1      Иванов 1
  Иванов 2 Петров 2 Обработали Пертров 1 Иванов 2 Иванов 2 Петров 1 Все | |||
| 61
    
        ЭЦ 29.02.12✎ 12:52 | 
        (60) В некоторых случаях надо препривязывать, а в некотрых не надо.
  Каждый раз (до первичной синхронизации) надо смотреть. | |||
| 62
    
        Beduin 29.02.12✎ 12:55 | 
        Смешно. У автора ИЗ в профиле.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |