• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Получить в 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();
 
Мы в соцсетях:

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