Получить в Delphi справочник из "1С:Предприятие" по параметр

Тема в разделе "Delphi - СОМ", создана пользователем Rema, 16 фев 2010.

  1. Rema

    Rema Гость

    Появилась необходимость получить документ из платформы 1С, в которой конструкции
    Док = Документы.ИмяДок и Док = Документы["ИмяДок"] считаются эквивалентными,
    но в Delphi, при подключении к 1С через COMConnector, конструкция {doc := connect.Документы.ИмяДок;} работает,
    а конструкция {name := 'ИмяДок'; doc := connect.Документы[name];} выдает сообщение: "Недопустимое число параметров"
    Кто-нибудь знает как получить из 1С V8.1 документ, имя которого заранее неизвестно ?
     
  2. neon2

    neon2 Гость

    Посмотри здесь:
    http://doc-prg.narod.ru/art_00012/art_00012.htm
    об этом же, но по справочникам. Вариант решения предлагается.
    И здесь:
    http://doc-prg.narod.ru/art_00011/art_00011.htm

    В принципе, документ - такой же объект метаданных, как и справочник, перечисление ...
    Насчет метаданных - может здесь будет полезно :
    http://doc-prg.narod.ru/art_00009/art_00009.htm
     
  3. Rema

    Rema Гость

    Спасибо за подсказки. Метод по первой ссылке вполне подходящий, но требует вмешательства в конфигурацию 1С, а это не всегда возможно. Пришлось использовать следующую конструкцию:
    name := 'ДокументМенеджер.ИмяДок'; doc := connect.NewObject(name);
     
  4. Rema

    Rema Гость

    Вдогонку ещё вопрос: кто знает, как получить список пользователей до подключения к 1С, чтобы создать форму, аналогичную той, которая появляется при запуске 1С, и сформировать строку подключения интерактивно ?
     
  5. sanekcool

    sanekcool Гость

    Приведите, пожалуйста, пример работы с такой конструкцией.
    Как сделать перебор элементов документа/справочника?

    Count := doc.Количество(); // Выдаёт ошибку "Method 'Количество' not supported by automation object"
    if Count>0 then begin
    i:=-1;
    while i<(Count-1) do begin
    i:=i+1;
    elem:=doc.Получить(i); // Выдаёт ошибку "Method 'Получить' not supported by automation object"
    end;
    end;
     
  6. Rema

    Rema Гость

    Например вот так:
    obj := V1C.NewObject('DocumentManager.Name').Select();
    while obj.Next() do ref := obj.GetObject();
     
Загрузка...

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