Имя: Пароль:
1C
1С v8
OLE соединение управляемое приложение - 1С 7.7
0 gash85
 
29.11.12
15:39
1с 8.2 управляемое приложение

Подключаюсь к базе 1С 7.7 по оле с целью создать там элементы иерархического справочника. На моменте проверки считываемого объекта базы на принадлежность к группе выдает ошибку {(1)}: Метод объекта не обнаружен (ЭтоГруппа). Подскажите, в чем дело?

в клиентской процедуре:

   глV7 = Новый COMОбъект ("V77.Application");
   Каталог="/d\\user3\1c$\icc\";
   Открыта = глV7.Initialize(глV7.RMTrade, Каталог+" /NАвто", "");    
   
   Если Открыта = 0 Тогда
       Сообщить("Ошибка открытия информационной базы");
   Иначе
       
       _контрагенты=глV7.CreateObject("Справочник.Покупатели");
       _группа=глV7.CreateObject("Справочник.Покупатели");
       _контрагенты.ВыбратьЭлементы();
       
       _страны=глV7.CreateObject("Справочник.Страны");
       _страны.ВыбратьЭлементы();
       
       _адреса=глV7.CreateObject("Справочник.Адрес");
               
       СписДоступа = СписокМенеджеров(ГруппаДоступа);
       
       Для Каждого СтрЗап из СписДоступа Цикл
           
           СписНевыгрКлиентов = СписокНевыгруженныхКлиентов();
           Для Каждого СтрНевыгр из СписНевыгрКлиентов Цикл
                   СсылкаКлиентКод = СокрЛП(СтрНевыгр.Значение);
               Если Лев(СсылкаКлиентКод,2) = СтрЗап.Значение Тогда
                                       
                   чек = 0;
                   пока _контрагенты.ПолучитьЭлемент()=1 цикл            
                       док=_контрагенты.ТекущийЭлемент();
                       Если СокрЛП(док.код) = СсылкаКлиентКод Тогда
                           чек = 1;
                           Прервать;
                       КонецЕсли;                        
                   КонецЦикла;
                   
                   Если чек = 0 Тогда
                           Клиент77 = глV7.CreateObject("Справочник.Покупатели");
                           Клиент77.Новый();
                           
                           сч = 0;
                           _группа.ВыбратьЭлементы();
                           Пока _группа.ПолучитьЭлемент()=1 Цикл
                               Если _группа.ЭтоГруппа=1 и СокрЛП(_группа.код) = ПолучитьКодРодителя(СсылкаКлиентКод) Тогда
                                   группа = _группа.ТекущийЭлемент();
                                   сч = 1;
                                   Прервать;
                               КонецЕсли;    
                           КонецЦикла;    
                           
                           Если сч = 0 Тогда
                               группа = _группа=глV7.CreateObject("Справочник.Покупатели");
                               группа.НоваяГруппа();
                               группа.Наименование = ПолучитьНаименованиеРодителя(СсылкаКлиентКод);
                               группа.Код = ПолучитьКодРодителя(СсылкаКлиентКод);
                               группа.Записать();
                           КонецЕсли;
1 gash85
 
29.11.12
15:40
не исправил как было, ошибка при _группа.ЭтоГруппа(),
без скобок это дополнительно тестил
2 чувак
 
29.11.12
15:44
тычёё?
3 чувак
 
29.11.12
15:44
ЭтоГруппа это метод, а не атрибут
4 gash85
 
29.11.12
15:46
ЭтоГруппа()
Синтаксис:
ЭтоГруппа()
Назначение:
Возвращает флаг группы: 1 - если элемент является группой, 0 - если это обычный элемент.

т.е. все верно написано по логике
5 yanejsh
 
29.11.12
15:50
выведи, какой тип значения у "_группа"?
6 gash85
 
29.11.12
15:51
(5)значение - COMОбъект
7 yanejsh
 
29.11.12
15:53
я с COM мало работал. Но может метод ЭтоГруппа() тоже надо на английском вводить?
8 qw12er
 
29.11.12
15:54
Посмотреть через отладчик не предлагать?=)
9 gash85
 
29.11.12
15:55
на тестовой базе файловой отработало все с пшиком. первоначально код был в общем модуле. Накатил на серверную базу - всегда подключение вылетало с ошибкой. Стал переписывать подключение OLE c директивой на клиенте - подключается, но в этом месте, где никогда раньше ошибки не было почему-то косяк. В чем дело - не пойму.
10 gash85
 
29.11.12
15:56
(8) и что я им увижу? смотрю значение _группа - COMОбъект, _группа.ЭтоГруппа() - ошибка. Большего там не увидишь.
11 Trucker
 
29.11.12
16:08
(10) Что возвращает  _группа.Выбран() ?
12 Drac0
 
29.11.12
16:12
Через отладчик посмотри, возвращает ли код или наименование объекта?
13 gash85
 
29.11.12
16:15
_группа код, наименование возвращает.
ну и _группа.ВыбратьЭлементы()=1 и _группа.ПолучитьЭлемент()=1
14 gash85
 
29.11.12
16:22
Я не знаю как это объяснить. Код остался прежним, ошибка не вылетела. Страшно запускать повторно.
15 yanejsh
 
29.11.12
16:31
ты 4 раза создаешь объект Покупатели. что-то лишка