8.х ОБМЕН OLE в V 8.1

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем pal_vas, 24 ноя 2008.

  1. TopicStarter Overlay
    pal_vas
    Offline

    pal_vas Опытный в 1С

    Регистрация:
    7 ноя 2008
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Ребята если есть у кого информация по рабте с OLE в v.8 скиньте ссылочку или файлик
    pal_vas@mail.ru
  2. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Поиск по форуму. Тем полно по самым разным направлениям.
  3. TopicStarter Overlay
    pal_vas
    Offline

    pal_vas Опытный в 1С

    Регистрация:
    7 ноя 2008
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура Загрузить123()    экспорт
    V8 = Новый COMОбъект("V8.Application");
    Попытка
    Открыта = V8.Connect("File=""C:\InfoBases"";Usr=""Администратор"";Pwd=""1"";");
    Исключение
    Предупреждение ("Ошибка открытия информационной базы");
    Возврат;
    КонецПопытки;
    Импорт = V8.NewObject("Справочник.Контрагенты");
    Импорт.Выбрать();
    Пока Импорт.Следующий() Цикл
    Если Не Импорт.ЭтоГруппа Тогда
    Сообщить(Импорт.Наименование);
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
    
    Каталог бызы : C:\InfoBases, база файловая, пользователь Администратор, пароль 1, при зауске процедуры пишет "Ошибка открытия информационной базы", что не так то у меня, вроде должно работать :unsure:
    ПОДСКАЖИТЕ ПЛИИИИИИИЗ
  4. TopicStarter Overlay
    pal_vas
    Offline

    pal_vas Опытный в 1С

    Регистрация:
    7 ноя 2008
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Вопрос снимаю, разобрался...
    Подскажите теперь следующее:
    Сделать чтоб при проведении элемента справочника в другой базе создвался такой же объект.
    1. В процедуре при записи выполняется следующая операция:
    Код:
    Процедура Загрузить123()    экспорт
    V8 = Новый COMОбъект("V8.Application");
    Попытка    Открыта = V8.Connect"File=""C:InfoBases"";Usr=""Администратор"";Pwd=""1"";");
    Исключение
    Предупреждение ("Ошибка открытия информационной базы");
    Возврат;
    КонецПопытки;
    
    
    2.Далее создаю новый элемент:
    Код:
    МенОрг= V8.Справочники.Контагенты;
    Элемент = МенОрг.СоздатьЭлемент();
    Элемент.Наименование = 
    
    // сдесь необходимо указать значение реквизита (наименование) элента который записывается, как правильно это сделать??
  5. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Так и делайте:
    Код:
    Элемент.Наименование = "ООО Ромашка";
    
  6. TopicStarter Overlay
    pal_vas
    Offline

    pal_vas Опытный в 1С

    Регистрация:
    7 ноя 2008
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Да нет необходимо чтоб Элемент.Наименование = наименовнию записанного элемента справочника....
  7. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Записанного где? В той базе, откуда цепляетесь?
  8. TopicStarter Overlay
    pal_vas
    Offline

    pal_vas Опытный в 1С

    Регистрация:
    7 ноя 2008
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Да, при записи элемента в базе 1, создавался элемент с такимиже значениями реквизитов в базе 2.
    Цепляюсь из базы 1.
  9. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Получите ссылку на нужный элемент и присвойте наименование нужного элемента, например:

    Код:
    Существующий = Справочники.Контрагенты.НайтиПоКоду("к001");
    
    Элемент.Наименование = Существующий.Наименование;
    
    И задавайте более конкретнее вопрос, с пояснениями.
  10. TopicStarter Overlay
    pal_vas
    Offline

    pal_vas Опытный в 1С

    Регистрация:
    7 ноя 2008
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Вопрос как раз в том как мне получиь эту ссылку, ведь я не знаю код тлько что записанного элемента...
    Есть 2 базы, в базе 1 в справочнике "Контрагенты" какой нибудь пользователь создал новый элемент, необходимо чтоб в базе 2, по событию записи этого созданного элемента, создавался такой же элемент справочника с такими значениями реквизитов. Вот и вся задача...
  11. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    В процедуру ПослеЗаписи() например, воткните свой кусок кода. А данные получаются так: ЭтотОбъект.<РеквизитОбъекта>
  12. TopicStarter Overlay
    pal_vas
    Offline

    pal_vas Опытный в 1С

    Регистрация:
    7 ноя 2008
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Да спасиб огромное теперь все работает :unsure: ,....
    После кождого проведения элемента справочника программа спрашивет теперь, "Закрыть приложение?", как от этого избавиться??
  13. TopicStarter Overlay
    pal_vas
    Offline

    pal_vas Опытный в 1С

    Регистрация:
    7 ноя 2008
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Да подскажите еще, если я не создаю новый элемент в Базе 1, а изменяю существующий, как в таком случае быть? Я так понимаю необходимов базе 2 найти элемент который мы изменили и перезаписать его полностью?
  14. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Для проверки при записи на предмет создания нового или редактирования существующего элемента надо использовать конструкцию ЭтоНовый, которая возвращает Истина, если элемент только что создан, либо Ложь - если элемент уже был записан ранее.

    Элементы справочника, во-первых, не проводятся. Во-вторых, попробуйте обнулить СОМОбъект (V8 = Неопределено).
  15. TopicStarter Overlay
    pal_vas
    Offline

    pal_vas Опытный в 1С

    Регистрация:
    7 ноя 2008
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Да, спасибо, констукцию ЭтоНовый применил теперь проверяется на предмет нового, но почему то когда в базе1 создаю новый элемент, записываю его, программа пытается создать в базе 2 сначалаа одн элемент, потом такой же с такими же реквизитами, естественно после попытки пишет что код не уникален...., как с этим быть?
    Да кстати попробовал обнулить СOMОбъект как вы посоветовали, ничего не получилось, есть еще варианты??
    Код:
    Процедура ПослеЗаписи()
    МеханизмНумерацииОбъектов.ОбновитьПодсказкуКодНомерОбъекта(ЭтотОбъект.Метаданные(), ЭлементыФормы.ДействияФормы.Кнопки.Действия, ЭлементыФормы.Код);
    V8 = Новый COMОбъект("V81.Application");
    Попытка
    Открыта = V8.Connect("File=""C:БазаБухняОбмен"";Usr=""Администратор"";Pwd=""1"";");
    Исключение
    Предупреждение ("Ошибка открытия информационной базы");
    Возврат;
    КонецПопытки;
    МенОрг = V8.Справочники.Контрагенты;
    Мен = МенОрг.СоздатьЭлемент();
    Мен.код = ЭтотОбъект.Код;
    Мен.Наименование =    ЭтотОбъект.Наименование;
    Мен.Записать();
    V8 = Неопределено;     /////////Сдесь пытаюсь обнулить..
    КонецПроцедуры
    
    
    
    
    
  16. TopicStarter Overlay
    pal_vas
    Offline

    pal_vas Опытный в 1С

    Регистрация:
    7 ноя 2008
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    С Application как т долго работает, испльзовать стал ComConnector, так быстрей и программа не спрашивает закрыть не закыть,..., теперь необходимо сделать следующее, что если элемент в Базе 1 не новый тогда, в базе 2 найти по коду этого объекта существующий и заменить зачения реквизитов, я так пробую делать но не работает, поскажите где ошибка?
    Код:
    Процедура ПослеЗаписи()
    МеханизмНумерацииОбъектов.ОбновитьПодсказкуКодНомерОбъекта(ЭтотОбъект.Метаданные(), ЭлементыФормы.ДействияФормы.Кнопки.Действия, ЭлементыФормы.Код);
    V8 = Новый COMОбъект("V81.ComConnector");
    Попытка
    ComОбъект = V8.Connect("File=""C:\БазаБухняОбмен"";Usr=""Администратор"";Pwd=""1"";");
    Исключение
    Предупреждение ("Ошибка открытия информационной базы");
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/возврат')">	Возврат ;</span>
    КонецПопытки;
    МенОрг = ComОбъект.Справочники.Контрагенты;
    Поиск =  этотобъект.код;
    код1 = МенОрг.Найтипокоду(поиск);
    если код1 = менОрг.пустаяссылка тогда
    Сообщить("Нет такого");
    Мен = МенОрг.СоздатьЭлемент();
    Мен.код = ЭтотОбъект.Код;
    Мен.Наименование =	ЭтотОбъект.Наименование;
    Мен.Записать();
    
    иначе Сообщить("Есть такой");
    конецесли;
    КонецПроцедуры
    
  17. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    ComConnector очень ограниченный объект. Лучше все-таки разобраться почему Application тормозит. Запускать на одной машине например.
  18. TopicStarter Overlay
    pal_vas
    Offline

    pal_vas Опытный в 1С

    Регистрация:
    7 ноя 2008
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    :unsure: У кого нибудть есть пример по обмену через COM справочников, наример тех же "Контрагентов", я ж не первый с этим мучаюсь, ответте плиз :aua: :vis:
    можно на мыло pal_vas@mail.ru
    Очень надо, сроки ужо жмууууууууут :smile:

Поделиться этой страницей