|   |   | 
| 
 | Проблеммы с GUID | ☑ | ||
|---|---|---|---|---|
| 0
    
        Vadimok 27.06.12✎ 09:43 | 
        Переношу справочники с 1С 7 в 1С 8. Для этого в справочиках в бухгалтерии 1С7 добавил роле GUID в нем програмно с помощью функции 
  Функция GUID_v7plus() Экспорт Инфо = СоздатьОбъект("AddIn.V7SysInfo"); ГлобальноУникальныйИдентификатор = Инфо.СоздатьGUID(); Возврат ГлобальноУникальныйИдентификатор; КонецФункции создаю Уникальный идентификатор. И через XML загружаю в 1С8. Если ЗначениеЗаполнено(ТекСтроки.GUID) Тогда //Если GUID есть то это элемент Спр = Справочники.Склады.ПолучитьСсылку( Новый УникальныйИдентификатор(ТекСтроки.GUID)); Элемент = Спр.ПолучитьОбъект(); Если Элемент = Неопределено Тогда Элемент = Справочники.Склады.СоздатьЭлемент(); Элемент.УстановитьСсылкуНового(Спр); Элемент.Код = ТекСтроки.Код; Элемент.Наименование = ТекСтроки.Наименование; Элемент.ВидСклада = Перечисления.ВидыСкладов.Оптовый; Если ЗначениеЗаполнено(ТекСтроки.Родитель) Тогда Элемент.Родитель = Справочники.Склады.НайтиПоКоду(ТекСтроки.Родитель); КонецЕсли; Элемент.Записать(); ОтветСтЛица = РегистрыСведений.ОтветственныеЛица.СоздатьМенеджерЗаписи(); ОтветСтЛица.Период = ТекущаяДата(); ОтветСтЛица.СтруктурнаяЕдиница = Элемент.Ссылка; ОтветСтЛица.ФизическоеЛицо = УстановитьОтветственного(ТекСтроки);//Справочники.ФизическиеЛица.НайтиПоНаименованию(ТекСтроки.Ответственный,Истина); ОтветСтЛица.Записать(); Сообщить("Добавлен Склад " + Элемент); КонецЕсли; КонецЕсли; | |||
| 1
    
        Vadimok 27.06.12✎ 09:45 | 
        Элементы создавались нормально, но некоторое время назад все перестало работать. GUID что создаются в 1С7 не присваиваются новым элементам в 1С8.     | |||
| 2
    
        Vadimok 27.06.12✎ 09:49 | 
        Новый УникальныйИдентификатор(ТекСтроки.GUID)    098599fc-1e66-4bb6-92a9-c2670982a46d    УникальныйИдентификатор (уникальный идентификатор из 1С7)
  Спр <Объект не найден> (83:92a9c2670982a46d4bb61e66098599fc) СправочникСсылка.Склады Элемент.Ссылка.УникальныйИдентификатор() b95c1ec3-c01b-11e1-a113-001e0b65f784 УникальныйИдентификатор (Уникальный идентификатор после записи) | |||
| 3
    
        Vadimok 27.06.12✎ 09:50 | 
        Что может быть не так? Где ошибка?     | |||
| 4
    
        Maxus43 27.06.12✎ 09:54 | 
        Элемент = Справочники.Склады.СоздатьЭлемент();
  Элемент.УстановитьСсылкуНового(Спр); это отрабатывает нормально? в отладчике там норм? | |||
| 5
    
        Широкий 27.06.12✎ 09:55 | 
        Спр = Справочники.Склады.ПолучитьСсылку( Новый УникальныйИдентификатор(ТекСтроки.GUID));    
  Элемент = Спр.ПолучитьОбъект(); Если Элемент = Неопределено Тогда ??????? | |||
| 6
    
        Vadimok 27.06.12✎ 10:00 | 
        Элемент.УстановитьСсылкуНового(Спр)    {(1)}: Обращение к процедуре объекта как к функции (УстановитьСсылкуНового)     | |||
| 7
    
        Vadimok 27.06.12✎ 10:09 | 
        Что не так с этим кодом. Почему такая ошибка?     | |||
| 8
    
        Maxus43 27.06.12✎ 10:10 | 
        что есть Элемент?     | |||
| 9
    
        Vadimok 27.06.12✎ 10:11 | 
        Элемент = Справочники.Склады.СоздатьЭлемент();     | |||
| 10
    
        Maxus43 27.06.12✎ 10:13 | 
        чот не вижу ошибки, но в (5) ткнули правильно, хоть и отношения не имеет к ошибке     | |||
| 11
    
        Vadimok 27.06.12✎ 10:13 | 
        Новый элемент справочника тип СправочникОбъект.Склады     | |||
| 12
    
        Vadimok 27.06.12✎ 10:17 | 
        а что (5) не понятно?     | |||
| 13
    
        Maxus43 27.06.12✎ 10:20 | 
        Если Элемент = Неопределено Тогда  - Никогда не выполнится условие     | |||
| 14
    
        Vadimok 27.06.12✎ 10:24 | 
        Почему? Все выполняется. Я же что делаю создаю новый идентификатор и получаю ссылку через него на элемент справочник. Потом если он есть в базе получаю Спр.ПолучитьОбъект(); и элементу присваивается объект. А если такого элемента нет в справчнике то при получении Объекта выходит Неопределенно и значит нужно создать новый элемент справочника.     | |||
| 15
    
        Maxus43 27.06.12✎ 10:26 | 
        (14) при получении объекта выходит "<Объект не найден> (83:92a9c2670982a46d4bb61e66098599fc)" - и это никак не Неопределено     | |||
| 16
    
        Vadimok 27.06.12✎ 10:34 | 
        В этом куске кода Спр = Справочники.Склады.ПолучитьСсылку( Новый УникальныйИдентификатор(ТекСтроки.GUID)); выходит "<Объект не найден> (83:92a9c2670982a46d4bb61e66098599fc)" а тут Элемент = Спр.ПолучитьОбъект(); Неопределенно     | |||
| 17
    
        Serg_1960 27.06.12✎ 11:36 | 
        (0) Алгоритм, имхо, не содержит грубых ошибок (по крайней мере в той части, что указана).
  Я бы дополнил его проверкой входного параметра и дополнительным контролем того, что элемент действительно создан и записан в базу. Не исключаю вероятность того, что права пользователя не позволяют заносить новые записи в справочник. И, возможно, ранее в алгоритме есть НачалоТранзакции или НачалоПопытки и далее в алгоритме ОтменитьТранзакцию или Исключение/КонецПопытки. | |||
| 18
    
        Vadimok 27.06.12✎ 11:59 | 
        Не подскжите почему в отладчике выходит такое сообщение Элемент.УстановитьСсылкуНового(Спр)    {(1)}: Обращение к процедуре объекта как к функции (УстановитьСсылкуНового)     | |||
| 19
    
        Serg_1960 27.06.12✎ 13:42 | 
        (18) Возможно, строкой выше по тексту, вы забыли поставить ";"     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |