|   |   | 
| 
 | Глупый вопрос про GUID 1с и ЗагрузкаВыгрузкаXML | ☑ | ||
|---|---|---|---|---|
| 0
    
        Икогнито 16.03.12✎ 12:31 | 
        ЗагрузкаВыгрузкаXML между одинаковыми по структуре базами переносит элемент справочника. Как я понимаю, обработка привязана к идентификатору элемента, потому переноси хоть 20 раз элементы не двоятся.
  Если обработка может создавать в одинаковых по структуре базах элементы с одинаковыми идентификаторами, то почему нельзя программно в разных по структуре базах создавать элементы с нужным идентификатором? | |||
| 1
    
        YF 16.03.12✎ 12:31 | 
        (0) Почему нельзя?     | |||
| 2
    
        Икогнито 16.03.12✎ 12:34 | 
        (1) Сейчас пишу обработку переноса контрагентов между разными по структуре базами. 
  1. И в источнике и в получателе есть один и тот же справочник "Контрагенты". 2. Прилепил регистр сведений, где вынужден хранить идентификаторы элементов из разных баз. Неужели можно при загрузке из одной базы создать в справочнике элемент с точно таким же идентификатором, чтобы не лепить это в регистр соответствий? Как? | |||
| 3
    
        Sammo 16.03.12✎ 12:34 | 
        УстановитьСсылкуНового(<Ссылка>) 
  Параметры: <Ссылка> (обязательный) Тип: СправочникСсылка. Ссылка, которая будет назначена при записи нового объекта. | |||
| 4
    
        Икогнито 16.03.12✎ 12:35 | 
        (3) а как ссылке назначить идентификатор из другой базы?     | |||
| 5
    
        Sammo 16.03.12✎ 12:35 | 
        (4) Продажей СП занимаются другие люди. Там все есть - отправная точка дана     | |||
| 6
    
        Икогнито 16.03.12✎ 12:36 | 
        (5) что такое СП?     | |||
| 7
    
        PVV65 16.03.12✎ 12:37 | 
        (4) В ПКО на закладке "Настройки" поставить галку "Искать объект приемника по внутреннему идентификатору объекта источника".     | |||
| 8
    
        PVV65 16.03.12✎ 12:37 | 
        (3) Это здесь ни при чем.     | |||
| 9
    
        Икогнито 16.03.12✎ 12:38 | 
        (7) что такое ПКО?     | |||
| 10
    
        Икогнито 16.03.12✎ 12:40 | 
        Спасибо, помогли     | |||
| 11
    
        Икогнито 16.03.12✎ 12:40 | 
        +(10) в смысле, что не фига не помогли     | |||
| 12
    
        fisher 16.03.12✎ 12:41 | 
        (4) Объект УникальныйИдентификатор() имеет вариант конструктора из строки.
  Метод ПолучитьСсылку() менеджеров объектов умеет создавать её из уникального идентификатора. А её уже можно назначить новому объекту. В конвертации именно так и делается. Там же всё штатными методами. (6) Синтакс-Помощник. (9) Правило Конвертации Объекта | |||
| 13
    
        PVV65 16.03.12✎ 12:41 | 
        (9)(10)(11) Как ты пишешь правила переноса между базами с разной структурой, если не знаешь, что такое ПКО?     | |||
| 14
    
        Kashemir 16.03.12✎ 12:42 | 
        (11) Чем тебе (3) не угодило ?     | |||
| 15
    
        Икогнито 16.03.12✎ 12:43 | 
        (14) не решает проблему создания элемента с нужным идентификатором     | |||
| 16
    
        PVV65 16.03.12✎ 12:44 | 
        +(13) Понял. Ты пишешь свою обработку.     | |||
| 17
    
        Икогнито 16.03.12✎ 12:45 | 
        (13) фиг знает, вот так пишу:
  ЗапросПоГруппам = СоединениеБП.NewObject("Запрос"); ЗапросПоГруппам.Текст = "ВЫБРАТЬ | Контрагенты.Ссылка КАК Ссылка, | 0 КАК Уровень, | ВЫРАЗИТЬ("""" КАК СТРОКА(36)) КАК УникальныйИдентификаторБП |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | Контрагенты.ЭтоГруппа"; ТабЗапроса = ЗапросПоГруппам.Выполнить().Выгрузить(); Если ТабЗапроса.Количество() = 0 Тогда Возврат; КонецЕсли; Для Каждого СтрокаТабЗапроса из ТабЗапроса Цикл СтрокаТабЗапроса.Уровень = СтрокаТабЗапроса.Ссылка.Уровень(); СтрокаТабЗапроса.УникальныйИдентификаторБП = СоединениеБП.Документы.удДоговор.ВернутьСтрокуУникальногоИдентификатора(СтрокаТабЗапроса.Ссылка); КонецЦикла; ТабЗапроса.Сортировать("Уровень убыв"); Для Каждого СтрокаТабЗапроса из ТабЗапроса Цикл МаксНомерУровня = СтрокаТабЗапроса.Уровень; Прервать; КонецЦикла; ОтборСтрок = СоединениеБП.NewObject("Структура"); Для ш = 0 По МаксНомерУровня Цикл ОтборСтрок.Вставить("Уровень",ш); МассивСтрокТаб = ТабЗапроса.НайтиСтроки(ОтборСтрок); Для к = 0 По МассивСтрокТаб.Количество()-1 Цикл СтрокаМассива = МассивСтрокТаб.Получить(к); СсылкаИсточник = СтрокаМассива.Ссылка; СсылкаИлиОбъект = НайтиСоответствиеКонтрагентаПоИдентификатору(СтрокаМассива.УникальныйИдентификаторБП,Истина); ОбъектНайденВРегистре = Ложь; Если ТипЗнч(СсылкаИлиОбъект) = ТИП("СправочникОбъект.Контрагенты") Тогда ИзменяемыйОбъект = СсылкаИлиОбъект; ОбъектНайденВРегистре = Ложь; ИначеЕсли ТипЗнч(СсылкаИлиОбъект) = ТИП("СправочникСсылка.Контрагенты") Тогда ИзменяемыйОбъект = СсылкаИлиОбъект.ПолучитьОбъект(); ИзменяемыйОбъект.Заблокировать(); ОбъектНайденВРегистре = Истина; КонецЕсли; ИзменяемыйОбъект.Наименование = СсылкаИсточник.Наименование; ИзменяемыйОбъект.ПометкаУдаления = СсылкаИсточник.ПометкаУдаления; Если ш > 0 Тогда РодительОбъектаИдентификатор = СоединениеБП.Документы.удДоговор.ВернутьСтрокуУникальногоИдентификатора(СсылкаИсточник.Родитель); ИзменяемыйОбъект.Родитель = НайтиСоответствиеКонтрагентаПоИдентификатору(РодительОбъектаИдентификатор,Истина); КонецЕсли; ИзменяемыйОбъект.Записать(); Если НЕ ОбъектНайденВРегистре Тогда //занесем в регистр соответствий СтруктураЗаписи = Новый Структура; СтруктураЗаписи.Вставить("Контрагент",ИзменяемыйОбъект.Ссылка); СтруктураЗаписи.Вставить("ИдентификаторБП",СтрокаМассива.УникальныйИдентификаторБП); СтруктураЗаписи.Вставить("ИдентификаторУСФ",СокрЛП(ИзменяемыйОбъект.Ссылка.УникальныйИдентификатор())); ВыполнитьЗаписьВРегистрСоответствийКонтрагентов(СтруктураЗаписи); КонецЕсли; КонецЦикла; | |||
| 18
    
        Kashemir 16.03.12✎ 12:45 | 
        (15) Эту проблему как раз решает.     | |||
| 19
    
        Икогнито 16.03.12✎ 12:46 | 
        (18) приведи пожалуйста пример     | |||
| 20
    
        fisher 16.03.12✎ 12:46 | 
        Я понял. Чукча - писатель.     | |||
| 21
    
        Kashemir 16.03.12✎ 12:46 | 
        (19) В СП четко описано предназначение этого метода, полностью совпадающее с поставленной задачей.     | |||
| 22
    
        Икогнито 16.03.12✎ 12:47 | 
        (20) без обсиралова, плиз     | |||
| 23
    
        Икогнито 16.03.12✎ 12:48 | 
        (18)
  СправочникОбъект.<Имя справочника> (CatalogObject.<Имя справочника>) УстановитьСсылкуНового (SetNewObjectRef) Синтаксис: УстановитьСсылкуНового(<Ссылка>) Параметры: <Ссылка> (обязательный) Тип: СправочникСсылка. Ссылка, которая будет назначена при записи нового объекта. Описание: Устанавливает значение для нового (созданного и еще не записанного) объекта, которое будет назначено при записи в качестве ссылки. Значение не может равняться ссылке какого-либо из имеющихся в базе данных объекта данного типа. Уникальность ссылки проверяется при записи объекта. Доступность: Сервер, толстый клиент, внешнее соединение. См. также: СправочникМенеджер, метод ПолучитьСсылку | |||
| 24
    
        Икогнито 16.03.12✎ 12:48 | 
        +(23) ни слова про строковый идентификатор типа b6b60de1-8b63-11e0-ab89-001e0bdd2030     | |||
| 25
    
        Икогнито 16.03.12✎ 12:50 | 
        Меня интересует вопрос, как создать элемент справочника Контрагенты с идентификатором "b6b60de1-8b63-11e0-ab89-001e0bdd2030".     | |||
| 26
    
        Икогнито 16.03.12✎ 12:51 | 
        +(25) имхо, в 1С это невозможно     | |||
| 27
    
        fisher 16.03.12✎ 12:58 | 
        (26) Ты таки чукча. Перечитай (12)     | |||
| 28
    
        Kashemir 16.03.12✎ 12:59 | 
        (26) Мда, как все запущено 
  НовыйКонтрагентОбъект.УстановитьСсылкуНового(Справочник.Контрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор("b6b60de1-8b63-11e0-ab89-001e0bdd2030")) | |||
| 29
    
        Мыш 16.03.12✎ 13:11 | 
        (25) Не делай так. Когда установишь элементу справочника точно такой же идентификатор - данные старого перезапишутся. Он не зря называется уникальным.     | |||
| 30
    
        Мыш 16.03.12✎ 13:12 | 
        +(29) А, хотя не прав. Тебе же в разных базах нужно.     | |||
| 31
    
        Sammo 16.03.12✎ 13:14 | ||||
| 32
    
        Мыш 16.03.12✎ 13:14 | 
        Тогда элементарно. ОбъектСправочникаКонтрагенты = ПрочитатьXML(ЧтениеXML)
  Идентификатор будет ровно такой же, как и в базе источнике. | |||
| 33
    
        Живой Ископаемый 16.03.12✎ 13:15 | 
        2(32) при разных по составу реквизитов объектах выйдет ошибка.     | |||
| 34
    
        Икогнито 16.03.12✎ 13:22 | 
        (28) Спасибо, разобрался     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |