Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 10:48

Помогите!!! Не получается вытянуть значение из реквизита в COM соединении.

Автор cvmbackup, 03 мая 2012, 08:08

0 Пользователей и 1 гость просматривают эту тему.

cvmbackup

______________________________________________________________________
Код в 1С работает

doc=Документы.ТестовыйДокумент.НайтиПоНомеру("000000001");
if doc.Метаданные().Реквизиты.Количество() > 0 then
for doc_rekv_i = 0 to doc.Метаданные().Реквизиты.Количество() - 1 do
doc_rekv=doc.Метаданные().Реквизиты.Получить(doc_rekv_i);
znachenie=doc[doc_rekv.имя];
rekvizit=doc_rekv.Представление();
Сообщить(rekvizit+" - "+znachenie);
КонецЦикла;
КонецЕсли;

// в сообщении имя и значение реквизита


______________________________________________________________________
Код в delphi

.. соединились с базой через V82.COMConnector

var
doc, doc_rekv: OleVariant;
doc_rekv_i:Integer;
rekvizit, znachenie:string;
..
begin
..

doc:=V8Connect.Документы.ТестовыйДокумент.НайтиПоНомеру('000000001');

if doc.Метаданные().Реквизиты.Количество() > 0 then begin
for doc_rekv_i := 0 to doc.Метаданные().Реквизиты.Количество() - 1 do begin
doc_rekv:=doc.Метаданные().Реквизиты.Получить(doc_rekv_i);
znachenie:=doc[doc_rekv.имя]; //здесь выскакивает ошибка Could not convert variant of type (OleStr) into type (Boolean)
rekvizit:=doc_rekv.Представление();
ShowMessage(rekvizit+' - '+znachenie);
end;
end;

..
end.

Непонятно от куда там значение Boolean берется? Кто знает подскажите решение проблемы! 3 дня уже бьюсь, весь интернет перекопал.

Dethmontt

Интерпретатор Делфи квадратные скобки обрабатывает по своему (не как 1С) через них не получиться.
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dethmontt

Procedure КнопкаВыполнитьНажатие(Кнопка)

   cntr = Новый COMObject("V82.COMConnector");
   connection = cntr.Connect("File=""D:\Базы1С\Тест"";Usr="""";");
   query = connection.NewObject("Query");
   NameTable = "Документ.ТестовыйДокумент";
   query.Text = "Select * From "+NameTable+""; //условие на where
   tableVal_1C = query.Execute().Unload();
   For i = 0 to tableVal_1C.Count() - 1 Do
      For k = 0 to tableVal_1C.Columns.Count() - 1 Do
         valRek = tableVal_1C.Get(i).Get(k);
         Message(valRek);
      EndDo;
   endDo;   
         
endProcedure                                               
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

cvmbackup


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск