Имя: Пароль:
1C
1С v8
создание справочника в удаленной базе
0 Kurbash
 
19.05.15
15:40
Всем привет. Создаю через СОМ-соединение элемент  справочника в удаленной базе.

СПП=СоединениеДругаяБаза.Справочники.Справочник.СоздатьЭлемент();


Хочу в один из реквизитов засунуть ссылку с помощью запроса:

Запрос=СоединениеДругаяБаза.NewObject("Запрос");
Запрос.Текст="Выбрать справочник.НужныйСправочник.Ссылка как элемент..."
Результат=Запрос.Выполнить().Выбрать();

СПП.Реквизит=Результат.Элемент-не канает, XMLСтрока тоже не канает, реквизит не заполняется...где ошибся?
1 Kurbash
 
19.05.15
15:41
запрос отрабатыввает нормально , записи в результате есть
2 butterbean
 
19.05.15
15:42
Результат.Следующий() где??
3 Kurbash
 
19.05.15
15:42
да это все есть уже, я просто не все стал писать сюда
4 Cyberhawk
 
19.05.15
15:44
(3) Покажи на картинке код с точкой останова и таблом
5 Kurbash
 
19.05.15
15:44
&НаСервере
Функция ПолучитьКонтрагента(Наименование,ИНН)
    
    СоединениеДругаяБаза = ПолучитьПодключение();
    
    Если Не СоединениеДругаяБаза = Неопределено Тогда
        
        Контрагент=СоединениеДругаяБаза.Справочники.Контрагенты.ПустаяСсылка();
        
        Запрос=СоединениеДругаяБаза.NewObject("Запрос");
        Запрос.Текст="ВЫБРАТЬ
        |    Контрагенты.Ссылка КАК Контрагент
        |ИЗ
        |    Справочник.Контрагенты КАК Контрагенты
        |ГДЕ
        |    Контрагенты.Наименование = &Наименование
        |    И Контрагенты.ИНН = &ИНН";
        
        Запрос.УстановитьПараметр("Наименование",Наименование);
        Запрос.УстановитьПараметр("ИНН",ИНН);
        
        Результат=Запрос.Выполнить().Выбрать();
        
        Пока Результат.Следующий() Цикл
            Контрагент=Результат.Контрагент;    
        КонецЦикла;
        
        
        Возврат СоединениеДругаяБаза.XMLСтрока(КОнтрагент);
        
    КонецЕсли;
                
    КонецФункции
6 Kurbash
 
19.05.15
15:45
вот полный код функции возвращения для реквизита
7 Kurbash
 
19.05.15
15:50
8 Serginio1
 
19.05.15
15:50
Возврат СоединениеДругаяБаза.XMLСтрока(КОнтрагент);
возврати УниверсальныйИдентификатор.

Если тебе нужен объект , то
СериализаторXDTO.ЗаписатьXDTO(Контрагент.ПолучитьОбъект())

Если хочешь текст то СериализаторXDTO.ЗаписатьXML
9 Asmody
 
19.05.15
15:52
(5) реквизита формы Контрагент нет ли?
10 Kurbash
 
19.05.15
15:52
(8)это вставлять при присвоени значения реквизиту?
СПП=СериализаторXDTO.ЗаписатьXDTO(Контрагент.ПолучитьОбъект())?
11 butterbean
 
19.05.15
15:53
(8) нафига это все здесь?
12 Serginio1
 
19.05.15
15:55
реквизит=Справочники.Контрагент.УстановитьСсылкуНового(Новый УниверсальныйИдентификатор(ПолучитьКонтрагента(Наименование,ИНН)
)
13 Kurbash
 
19.05.15
15:56
что делать то?
14 Kurbash
 
19.05.15
15:58
(12) не канает
15 Serginio1
 
19.05.15
15:58
(11) Прошу прощения не понял суть вопроса.
Ответ в 12

(14) А есть ли у тебя справочник с таким Уид?
16 Kurbash
 
19.05.15
15:59
есть
17 Kurbash
 
19.05.15
16:01
УстановитьСсылкуНового(Новый ///ВОТ ТУТ РУГАЕТСЯ///УниверсальныйИдентификатор(ПолучитьКонтрагента(Наименование,ИНН)
18 Serginio1
 
19.05.15
16:03
Еще раз прошу прощения

реквизит=Справочники.Контрагент.ПолучитьСсылку(Новый УниверсальныйИдентификатор(ПолучитьКонтрагента(Наименование,ИНН)
19 Kurbash
 
19.05.15
16:03
{Форма.Форма.Форма(342,88)}: Тип не определен (УниверсальныйИдентификатор)
20 ДенисЧ
 
19.05.15
16:04
(18) УникальныйИдентификатор()
21 Kurbash
 
19.05.15
16:05
СПП.Реквизит = СоединениеДругаяБаза.Справочники.Контрагенты.УстановитьСсылку(Новый УниверсальныйИдентификатор(ПолучитьКонтрагента(Источник.Контрагент.Наименование,Источник.Контрагент.ИНН)));
22 Kurbash
 
19.05.15
16:05
ругается {Форма.Форма.Форма(342,88)}: Тип не определен (УниверсальныйИдентификатор)
23 ДенисЧ
 
19.05.15
16:05
(22) УНИКАЛЬНЫЙ !!!!
24 Serginio1
 
19.05.15
16:06
Тьфу  Новый УникальныйИдентификатор
25 Kurbash
 
19.05.15
16:07
ага, страничку не обновил написал, сейчас попробую
26 Kurbash
 
19.05.15
16:08
{Форма.Форма.Форма(342)}: Ошибка при вызове конструктора (УникальныйИдентификатор)
        СПП.Реквизит = СоединениеДругаяБаза.Справочники.Контрагенты.УстановитьСсылку(Новый УникальныйИдентификатор(ПолучитьКонтрагента(Источник.Контрагент.Наименование,Источник.Контрагент.ИНН)));//СоединениеДругаяБаза.Справочники.Контрагенты.НайтиПоНаименованию(Источник.Контрагент.Наименование);
по причине:
Недопустимое значение параметра (параметр номер '1')
27 Cyberhawk
 
19.05.15
16:11
Покажи на картинке значение параметра номер 1 в табло
28 Kurbash
 
19.05.15
16:15
29 Kurbash
 
19.05.15
16:16
гуид то он видит
30 Serginio1
 
19.05.15
16:17
(29) А что у тебя Источник.Контрагент.Наименование
31 Kurbash
 
19.05.15
16:17
текстовая строка
32 Cyberhawk
 
19.05.15
16:18
В табло покажи значение параметра конструктора, т.е. "ПолучитьКонтрагента(Источник.Контрагент.Наименование,Источник.Контрагент.ИНН)"
33 Serginio1
 
19.05.15
16:22
А зачем ты туд

СПП.Реквизит = СоединениеДругаяБаза.Справочники.Контрагенты.УстановитьСсылку(НСоединениеДругаяБаза.NewObject("УникальныйИдентификатор",(ПолучитьКонтрагента(Источник.Контрагент.Наименование,Источник.Контрагент.ИНН)))

А наверное проще вернуть просто вернуть
Контрагент
34 Serginio1
 
19.05.15
16:22
А вообще проще использовать внешние отчеты.
35 Serginio1
 
19.05.15
16:24
Например v8: 8.2, COM-соединение, C#, dynamic строки

Премущества отладка, подсказка через точку
36 Kurbash
 
19.05.15
16:25
хм, я меня возвращается все нормально:

http://prntscr.com/76ypss

а когда свывожу в табло значение СПП.реквизит, там упсто:(
37 Cyberhawk
 
19.05.15
16:31
Озвучь задачу внятно и по-простому еще раз
38 Serginio1
 
19.05.15
16:32
(36) Так может потому, что реквизит может быть только ссылкой? Использование только для элемента?
39 Serginio1
 
19.05.15
16:33
38 Только элементом