|
Проблеммы с 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) Возможно, строкой выше по тексту, вы забыли поставить ";"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |