Имя: Пароль:
1C
1С v8
работа с COM
,
0 Black Dragon
 
26.08.11
17:36
Всем доброго здравия!

есть такой момент

   Если ЕстьПодключение Тогда
       СпрКонтрагенты = База.CreateObject("Справочник.Контрагенты");
       СпрКонтрагентыПодчиненный = База.CreateObject("Справочник.я_Контрагенты");
       СпрКонтрагенты.ВыбратьЭлементы();
       Пока СпрКонтрагенты.ПолучитьЭлемент() Цикл
           ДопЭлемент = СпрКонтрагентыПодчиненный.НайтиПоРеквизиту("Контрагент",СпрКонтрагенты.ТекущийЭлемент());
           Если ДопЭлемент <> Неопределено Тогда
               Если СпрКонтрагенты.ЭтоГруппа Тогда
                   НовыйКонтрагент = Справочники.Контрагенты.СоздатьГруппу();
                   НовыйКонтрагент.Наименование = СпрКонтрагенты.Наименование;
               Иначе    
                   НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();


и вот при вызове НайтиПоРеквизиту("Контрагент",СпрКонтрагенты.ТекущийЭлемент())
сообщает что метод не найден.Как это?
1 lxs
 
26.08.11
17:37
а причем тут 8.1?
2 lxs
 
26.08.11
17:38
(точнее 8)
3 lxs
 
26.08.11
17:39
СпрКонтрагенты = База.Контрагенты;//если все-таки это снеговик
4 Black Dragon
 
26.08.11
17:40
а методами 8-ки можно работать?
5 NcSteel
 
26.08.11
17:41
(4) Пятница?
6 lxs
 
26.08.11
17:44
(5) под пивком по ходу))
7 Black Dragon
 
26.08.11
17:44
{Форма.Форма.Форма(6)}: Поле объекта не обнаружено (Контрагенты)
       СпрКонтрагенты = База.Контрагенты;
8 Black Dragon
 
26.08.11
17:45
(6) под пивком? ))))))
9 Black Dragon
 
26.08.11
17:46
База = Новый COMОбъект("V77.Application");
   Попытка
       СтрокаПодключения = "/D""" + СокрЛП(ПутьБазы) + """ /N""" + СокрЛП(Пользователь) + """ /P""" + СокрЛП(Пароль) + """";
       Открыта = База.Initialize(База.RMTrade,СтрокаПодключения,"NO_SPLASH_SHOW");
       Если Открыта Тогда
           Сообщить("Подключение установлено!");
           ЭлементыФормы.НадписьСостояниеПодключения.Заголовок = "Подключение к базе данных установлено";
           ЕстьПодключение = Истина;
       Иначе
           Предупреждение("Ошибка при подключении!");
           ЕстьПодключение = Ложь;
       КонецЕсли;
   Исключение
       Предупреждение("Ошибка при подключении!");
       ЕстьПодключение = Ложь;
   КонецПопытки;
10 lxs
 
26.08.11
17:50
(9) Тогда мои сообщения не читай
11 lxs
 
26.08.11
17:50
И в 7.7 разве есть метод найтиПоРеквизиту() ?
12 Black Dragon
 
26.08.11
17:51
НайтиПоРеквизиту(<?>,,);
Синтаксис:
НайтиПоРеквизиту(<ИмяРеквизита>,<Значение>,<ФлагГлобальногоПоиска>)
Назначение:
Найти элемент справочника по значению реквизита.
Возвращает: 1 - если действие выполнено;
0 - если действие не выполнено (элемент не найден).
Параметры:
<ИмяРеквизита> - строка с наименованием реквизита;
<Значение> - значение реквизита для поиска;
<ФлагГлобальногоПоиска> - флаг поиска:
 0 - поиск выполняется в пределах подчинения справочника,
 1 - поиск выполняется по всему справочнику.
Замечание:
Метод можно использовать только для реквизитов с установленным признаком ''Сортировка''.
Метод  можно использовать только для объектов, созданных функцией СоздатьОбъект.
13 Black Dragon
 
26.08.11
17:54
но все таки в чем может быть причина? как может быть метод не найден?
14 Black Dragon
 
26.08.11
18:04
Вот нашел:

Заметьте, что если вместо "Сообщить(Спр.Наименование)" вы укажете "Сообщить(Спр.ТекущийЭлемент())", то вместо строкового/числового представления этого элемента программа выдаст вам в окошке сообщение "OLE"
15 vmv
 
26.08.11
18:34
7.7? фу - некрософт
16 Black Dragon
 
30.08.11
10:51
хотел бы вернуться к обсуждению вопроса - есть два справочника, один основной, второй имеет реквизит-ссылку на основной, как кроме прямого перебора подчиненного выбрать элемент "подчиненного" для переноса в базу v8?
17 Black Dragon
 
30.08.11
10:57
Видимо придется переносить через файл...
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой