Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Подключаемся c помощью OLE к 1с 7.7. из 8.2
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Log1c
Что хочу: получить наименование товара который находится в 7.7 из 8.2

Что делаю:
Перем База;

Функция ПодключитьБазу()
    База=Новый COMОбъект("V1CEnterprise.Application");
    
    Попытка  
        СтрокаПодключения = "/D"""+СокрЛП(ПутьКБазе)+""" /N"""+СокрЛП(Пользователь)+""" /P"""+СокрЛП(Пароль)+"""";
        Открыта=База.Initialize(База.RMTrade,СтрокаПодключения,"NO_SPLASH_SHOW");
        
        Если Открыта Тогда
            ЕстьПодключение = Истина;
        Иначе
            #Если Клиент Тогда
                Сообщить("Ошибка при подключении!");
            #КонецЕсли
            ЕстьПодключение = Ложь;
        КонецЕсли;    
    Исключение
        #Если Клиент Тогда
            Сообщить("Ошибка при подключении!");
        #КонецЕсли
        ЕстьПодключение = Ложь;
    КонецПопытки;

    Возврат ЕстьПодключение;
КонецФункции

Процедура КнопкаВыполнитьНажатие(Кнопка)
Сообщить("Подключение к базе " + ПодключитьБазу()); //Истина
    спр = База.CreateObject("Справочник.ТМЦ");
    Если спр.НайтиПоРеквизиту("КодТовара", КодТовара) = 1 Тогда
        Сообщить(спр.ТекущийЭлемент().Наименование);    
    Иначе
        Сообщить("Не нашли");
    КонецЕсли;
КонецПроцедуры


Требуемый код товара присутствует.

Вопросы:
1. Если фун-я ПодключитьБазу() возвращает Истину, значит с подключением проблем нет?
2. Что мне надо написать в "Процедура КнопкаВыполнитьНажатие(Кнопка)" чтобы вернуло "наименование" любого товара?
sava1
Что значит любого?
Log1c
Цитата(sava1 @ 03.11.14, 15:29) необходимо зарегистрироваться для просмотра ссылки
Что значит любого?


Чтобы хоть какие-то данные вытаскивало.

Пускай будет первого в выборке(сортировка по коду).
sava1
1. Подключение
    ПодключеннаяБаза = Новый COMОбъект("V77S.Application");
    
    Открыта = ПодключеннаяБаза.Initialize(ПодключеннаяБаза.RMTrade, "/d" + База + " /N" + Пользователь + " /P" + Пароль,"");


2.Поиск склада

        СпрТемп = ПодключеннаяБаза.CreateObject("Справочник.Склади");
        СпрТемп.НайтиПоКоду(пКод);
        Склад_8 = СоздатьСклад( СпрТемп.ТекущийЭлемент());


ВОт так когдато переносил контрагентов

СпрЗап = База77.CreateObject("Справочник.Контрагенты");
    СпрЗап.ВыбратьЭлементы();
    Пока СпрЗап.ПолучитьЭлемент() = 1 Цикл
        Если СпрЗап.ПометкаУдаления()<> 0 Тогда Продолжить;
        КонецЕсли;
        Если СпрЗап.ЭтоГруппа()<> 0 Тогда Продолжить;
        КонецЕсли;
        //
        те = СпрЗап.ТекущийЭлемент();  
        Рез = Создать_Контрагента(те);
    КонецЦикла;
Log1c
Да, если перебирать справочник и сообщать КодТовара - то все ок.

Значит у меня ошибка в
Если спр.НайтиПоРеквизиту("КодТовара", КодТовара) = 1 Тогда

Видно надо указывать родителя.
sava1
Уникальность кода какая - во всем справочнике/в пределах подчинения ?

Если есть полный код - ищем по полному.
Log1c
Цитата(sava1 @ 03.11.14, 16:17) необходимо зарегистрироваться для просмотра ссылки
Уникальность кода какая - во всем справочнике/в пределах подчинения ?

Если есть полный код - ищем по полному.


- "КодТовара" это реквизит справочника. Не имеет ничего общего с реквизитом по умолчанию для справочников "Код".
- Справочник.ТМЦ ничему не подчинен, но иерархический.

alex1c
НайтиПоРеквизиту(<?>,,);
Синтаксис:
НайтиПоРеквизиту(<ИмяРеквизита>,<Значение>,<ФлагГлобальногоПоиска>)
Назначение:
Найти элемент справочника по значению реквизита.
Возвращает: 1 - если действие выполнено;
0 - если действие не выполнено (элемент не найден).
...
Замечание:
Метод можно использовать только для реквизитов с установленным признаком ''Сортировка''.

Обратите внимание на ''Сортировка''.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.