1. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Первый товар уже в продаже: Консультация на тему ИБ от Ondrik8

    Скрыть объявление
  2. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Второй товар маркетплейса: Надёжная обфускация вашей программы от PingVinich

    Скрыть объявление

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

Тема в разделе "1C и всё что с ней связано", создана пользователем HITMAN-NN, 11 янв 2008.

  1. HITMAN-NN

    HITMAN-NN Гость

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

    Zab Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    583
    Симпатии:
    0
    ... а в ответ тишина. Могу предположить, потому, что вопрос звучит странновато. Не совсем понятно, что спрашиваешь... Опиши конкретную ситуацию, какие именно данные хочешь прочитать, из объекта какого типа, как обращаешься к 1С? Накрайняк приведи код. Только не 200 строк ))
     
  3. HITMAN-NN

    HITMAN-NN Гость

    Репутация:
    0
    вот код:




    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
     
  4. Zab

    Zab Well-Known Member
    1C Team

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

    HITMAN-NN Гость

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

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

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