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