|
Ошибка при установке значения атрибута контекста | ☑ | ||
---|---|---|---|---|
0
gash85
26.11.12
✎
10:38
|
Из 1с 8.2 подключаюсь к 1С 7.7 в которой необходимо создать элемент справочника и элемент подчиненного ему справочника.
При передаче значения реквизиту с типом Перечисления вылетает ошибка: {ОбщийМодуль.РаботаСДокументами.Модуль(152)}: Ошибка при установке значения атрибута контекста (вид) _адреса.вид = почтовый; по причине: Неизвестная ошибка В чем может быть загвоздка?. Вот собственно сам код: глV7 = Новый COMОбъект ("V77.Application"); Каталог="/d\\1С\base1\"; Открыта = глV7.Initialize(глV7.RMTrade, Каталог+" /NАвто", ""); Если Открыта = 0 Тогда Сообщить("Ошибка открытия информационной базы"); Иначе _контрагенты=глV7.CreateObject("Справочник.Покупатели"); _контрагенты.ВыбратьЭлементы(); _страны=глV7.CreateObject("Справочник.Страны"); _страны.ВыбратьЭлементы(); _адреса=глV7.CreateObject("Справочник.Адрес"); // _адреса.ВыбратьЭлементы(); чек = 0; пока _контрагенты.ПолучитьЭлемент()=1 цикл док=_контрагенты.ТекущийЭлемент(); Если Не СсылкаКлиент.ЭтоГруппа Тогда // Если док.родитель.код <> "" Тогда Если СокрЛП(док.код) = СокрЛП(СсылкаКлиент.Код) Тогда сообщить("найден "+док.код); чек = 1; Прервать; КонецЕсли; // КонецЕсли; Иначе Если док.родитель.код = "" Тогда Если СокрЛП(док.код) = СокрЛП(СсылкаКлиент.Код) Тогда чек = 1; Прервать; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Если чек = 0 Тогда Если Не СсылкаКлиент.ЭтоГруппа Тогда Клиент77 = глV7.CreateObject("Справочник.Покупатели"); Клиент77.Новый(); Клиент77.Код = СокрЛП(СсылкаКлиент.Код); Клиент77.Наименование = СокрЛП(СсылкаКлиент.Наименование); Клиент77.нип = СокрЛП(СсылкаКлиент.УНП); Клиент77.регон = СокрЛП(СсылкаКлиент.Регон); Клиент77.крс = СокрЛП(СсылкаКлиент.НКРС); Клиент77.Power = СокрЛП(СсылкаКлиент.Power); СчСтрана = 0; пока _страны.ПолучитьЭлемент()=1 цикл Страна77=_страны.ТекущийЭлемент(); Если СокрЛП(Страна77.наименование) = СокрЛП(СсылкаКлиент.Странарегистрации.Наименование) Тогда Клиент77.страна = Страна77; СчСтрана = 1; Прервать; КонецЕсли; КонецЦикла; Если СчСтрана = 0 и СсылкаКлиент.Странарегистрации.Наименование <> "" Тогда Страна77 = глV7.CreateObject("Справочник.Страны"); Страна77.Новый(); Страна77.Код = СсылкаКлиент.Странарегистрации.ТекстКод; Страна77.Наименование = СсылкаКлиент.Странарегистрации.Наименование; Страна77.Записать(); Клиент77.страна = Страна77; КонецЕсли; Клиент77.Записать(); //Ставим флаг ПереданВ1С77 в истину, чтоб больше автоматически не передавать этого клиента Клиент82 = СсылкаКлиент.ПолучитьОбъект(); Клиент82.ПереданВ1С77 = Истина; Клиент82.Записать(); Сообщить("Записан клиент "+Клиент77.код + " "+Клиент77.наименование); Для Каждого Стр Из Клиент82.Адреса Цикл _адреса=глV7.CreateObject("Справочник.Адрес"); _адреса.ИспользоватьВладельца(Клиент77); _адреса.Новый(); _адреса.Наименование = Стр.Адрес; _адреса.доп = Стр.Адрес; Если Стр.ВидАдреса = Перечисления.ВидыАдресов.Почтовый Тогда _адреса.вид = глv7.Перечисление.ВидАдреса.почтовый; ИначеЕсли Стр.ВидАдреса = Перечисления.ВидыАдресов.Юридический Тогда _адреса.вид = глv7.Перечисление.ВидАдреса.юридический; ИначеЕсли Стр.ВидАдреса = Перечисления.ВидыАдресов.электронный Тогда _адреса.вид = глv7.Перечисление.ВидАдреса.электронный; КонецЕсли; _адреса.Записать(); КонецЦикла; Иначе КонецЕсли; КонецЕсли; КонецЕсли; |
|||
1
Aprobator
26.11.12
✎
10:40
|
а там точно перечисление, а не перечисления?
|
|||
2
Aprobator
26.11.12
✎
10:41
|
а то как то в местной базе смотришь обращение через Перечисления, а в удаленной через Перечисление. ИМХО, непорядок.
|
|||
3
gash85
26.11.12
✎
10:43
|
в 8ке обращение идет ПреченислениЯ, в 7ке ПеречислениЕ
|
|||
4
Aprobator
26.11.12
✎
10:44
|
а млин, там 7-ка.
|
|||
5
gash85
26.11.12
✎
10:44
|
как раз таки эта часть отрабатывается, ошибку кидает на части
_адреса.вид. даже просто если этот кусок читать через shift+f9 ругается нецензурно. Почему - не пойму. Имя реквизита верное, тип перечисление. |
|||
6
Ork
26.11.12
✎
10:45
|
(0) С передачей перечислений по ОЛЕ наличествует некоторая задница. Путем тыканья в небо пальцем для себя принял такой способ : присваивать значенеи получая его методом ЗначениеПоНомеру().
Ща найду точный код... |
|||
7
Aprobator
26.11.12
✎
10:47
|
может можно через Вычислить пролезть? Типа:
|
|||
8
Aprobator
26.11.12
✎
10:48
|
(5) а млин. Понятно. Из за Вид - совпадает с именем метода.
|
|||
9
Aprobator
26.11.12
✎
10:49
|
как то мы это обходили. Ща попробую вспомнить как.
|
|||
10
Ork
26.11.12
✎
10:50
|
+(6) Пробуй так :
_адреса.вид = глv7.Перечисление.ВидАдреса.ЗначениеПоНомеру(НомерЗначения_юридический); |
|||
11
Aprobator
26.11.12
✎
10:51
|
(10) тут засада именно в имени реквизита. Наступали на такое при работе через OLE/
|
|||
12
gash85
26.11.12
✎
10:55
|
да, судя по всему именно в имени. Есть какие идеи что с этим делать?
|
|||
13
Aprobator
26.11.12
✎
10:56
|
все нашел. Лечится только использованием какой либо функцией удаленной конфы. Которая в зависимости от входных данных ставить нужное значение.
На примере 8 - ки делали так:
КомОбъект - элемент справочника удаленной базы. УстановитьПолноеНаименование - экспротная процедура модуля. |
|||
14
Aprobator
26.11.12
✎
10:59
|
+(13) имеется ввиду модуль объекта справочника.
|
|||
15
Шапокляк
26.11.12
✎
11:02
|
Вроде в 7-ке есть УстановитьАтрибут()
|
|||
16
gash85
26.11.12
✎
11:03
|
(13) спасибо, буду пробовать!!
|
|||
17
Aprobator
26.11.12
✎
11:04
|
(15) во - как вариант может прокатить, кстати.
|
|||
18
Ork
26.11.12
✎
11:05
|
(16) Сначала проверь (10).
|
|||
19
Aprobator
26.11.12
✎
11:06
|
(18) да он смотрел отладчиком. См (5).
|
|||
20
gash85
26.11.12
✎
11:08
|
(18) проверено, таже ошибка
|
|||
21
gash85
26.11.12
✎
11:10
|
(15) отработало без ошибки, однако при чтении полученного значения через shift+f9 выдает: тип неопределено.
|
|||
22
Aprobator
26.11.12
✎
11:11
|
(21) тип или значение?
|
|||
23
Aprobator
26.11.12
✎
11:12
|
проверь сразу в приемнике, что там загрузилось.
|
|||
24
gash85
26.11.12
✎
11:20
|
(15) сработало! спасибо!
|
|||
25
Aprobator
26.11.12
✎
11:21
|
ну во )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |