как обратиться к полю?

  • Автор темы HITMAN-NN
  • Дата начала
H

HITMAN-NN

#1
Люди помогите!!! Провожу интеграцию 1Сv81 с lotus, и мне нужно обратиться к полю в 1С через его имя, причем имя не забито в коде, а представляется как переменная, как сделать обращение?
 

Zab

Well-known member
07.08.2006
583
0
#2
... а в ответ тишина. Могу предположить, потому, что вопрос звучит странновато. Не совсем понятно, что спрашиваешь... Опиши конкретную ситуацию, какие именно данные хочешь прочитать, из объекта какого типа, как обращаешься к 1С? Накрайняк приведи код. Только не 200 строк ))
 
H

HITMAN-NN

#3
вот код:




Dim ws As New NotesUIWorkspace
Dim s As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim collection_1 As NotesDocumentCollection
Dim doc_1 As NotesDocument
Dim view As NotesView
Dim cnt As Variant
Dim baza As Variant
'получаем док. настройки для синхр.
Set db=s.CurrentDatabase
Set view=db.GetView("Nsinhr")
Set doc=view.GetFirstDocument
While Not(doc Is Nothing)
'подкл. к базе 1C
Set cnt = CreateObject("V81.comConnector")
Set baza = cnt.Connect({File="}+doc.put(0)+{";usr="}+doc.usr(0)+{";pwd="}+doc.pwd(0)+{"} )
'получаем док. для синхр в СМ
Set collection_1=db.Search({Form="}+doc.put_lotus_1(0)+{"},Nothing,0)
Set doc_1=collection_1.GetfirstDocument
While Not(doc_1 Is Nothing)
'далее см. где проводим синхр. в 1С
If doc.put_1C_1(0)="Справочники.Контрагенты" Then
Set istochnik=baza.Справочники.Контрагенты
Set viborka=istochnik.выбрать()
'ищем по ключу, где проводим синхр. в 1С(т.е. получаем документ для синхр.)
While viborka.следующий()
sinhr_CM=doc_1.GetItemValue(doc.keysinhrCM(0))
sinhr1C=doc.keysinhr1C(0)
'If viborka.наименование=sinhr_CM Then 'здесь тоже надо обратиться через переменную к полю 1С
'проводим синхр.
i=1
'While Not(Strtoken(doc.svyz(0), ";",i)="")
stroka=Strtoken(doc.svyz(0), ";",i)
sv_vaCM=Strtoken(stroka,"-",1)
sv_va1C=Strtoken(stroka,"-",2)
poleCM=Strtoken(sv_vaCM,"(",1)
tipCM=Strtoken(sv_CM,"(",2)
tipCM=Strtoken(tipCM,")",1)
pole1C=Strtoken(sv_va1C,"(",1)
tip1C=Strtoken(sv_va1C,"(",2)
tip1C=Strtoken(tip1C,")",1)
'Все плохо, ни хр... не работает команды обращения к полю в 1С через переменную по имени.
'НАДО ДУМАТЬ!!!!!!!!!
'Set НайденнаяСсылка = istochnik.НайтиПоРеквизиту(pole1C,Cstr(sinhr_CM(0)))

'If НайденнаяСсылка=True Then
i=i+5
'End If
i=i+1

Messagebox Cstr(i)
Exit Sub
Wend
End If
Wend
'вставить на условие др. справочник или че-то еще........
' End If
'берем следующий док. для синхр в СМ
Set doc_1=collection_1.GetNextDocument(doc_1)
Wend
' берем следующий док. настроек
Set doc=view.GetNextDocument(doc)
'Wend
 

Zab

Well-known member
07.08.2006
583
0
#4
Код:
ИмяРеквизита = "Наименование";
Зап.Текст =	"ВЫБРАТЬ Контрагенты."+ИмяРеквизита+" КАК НашРеквизит ИЗ Справочник.Контрагенты";
рез = Зап.Выполнить().Выбрать();
Пока Рез.Следующий() Цикл
рекв="";
НР = "НашРеквизит";
Выполнить("рекв = Рез."+НР);
Предупреждение(рекв);
КонецЦикла;
такой код в 1С будет работать...
тут сначала сформировали запрос, который получает данные из реквизита "Наименование" из переменной, а потом получили его в переменную "рекв" по имени в "НР".
Не знаю, сможешь ли ты применить это в своем контексте. В любом случае, если будут вопросы, пиши.
 
H

HITMAN-NN

#5
Понимаешь, имя реквизита мы заранее не знаем, мы его получаем из поля в lotus, т.е. переменная=doc.значениереквизитав1С
теперь вопрос: как через "переменная"(в которой лежит например наименование или инн и т.д.) обратиться к полю в 1С?

И еще вопрос, как взять значение поля со списком и перенести его в др. поле в lotus. Тоже это делаю из lotus через соединение COM. Вопрос возник из-за того что простым присваиванием этого поля к полю lotus, которое явл. простым текстовым полем, не удается, я так понял типо все значения списка передаются(массив) и если в lotus полече то было, тупо все стирается