• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

  • Автор темы Rema
  • Дата начала
R

Rema

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

neon2

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

об этом же, но по справочникам. Вариант решения предлагается.
И здесь:


Кто-нибудь знает как получить из 1С V8.1 документ, имя которого заранее неизвестно ?
В принципе, документ - такой же объект метаданных, как и справочник, перечисление ...
Насчет метаданных - может здесь будет полезно :
 
R

Rema

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

Rema

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

sanekcool

Пришлось использовать следующую конструкцию:
name := 'ДокументМенеджер.ИмяДок'; doc := connect.NewObject(name);

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

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;
 
R

Rema

Например вот так:
obj := V1C.NewObject('DocumentManager.Name').Select();
while obj.Next() do ref := obj.GetObject();
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!