Имя: Пароль:
1C
1С v8
Подключение по OLE
,
0 merlin789
 
09.10.12
18:07
Пытаюсь сделать загрузку документов между 2 базами 8-ки  через OLE. Справочники, реквизиты шапки документа читаются, но не удается прочитать данные табличной части. Пробовал 2-мя способами: в случае с циклом он даже внутрь не заходит (хотя в т.ч. записи есть), в случае с запросом не могу вывести данных в таблицу.
На форуме искал, не помогло..
       V8=Новый COMОбъект("V82.COMConnector");
   СтрПодключения="File=""D:\Базы 1с\тест"";Usr=""Администратор"";Pwd=""""";
   Сообщить(СтрПодключения);
   Попытка  
       База=V8.Connect(СтрПодключения);
   Исключение
       сообщить(ОписаниеОшибки());
       Предупреждение("Ошибка при подключении!");
       ЕстьПодключение = Ложь;
   КонецПопытки;
   //ТаблУслуги= Новый ТаблицаЗначений;
   ТаблДок=ЭлементыФормы.ДокиСписок.Значение;
   Для каждого док из ТаблДок цикл
   Документ=База.Документы.РеализацияТоваровУслуг.НайтиПоНомеру("00000000004");//Док.Номер);
   Для каждого товар из Документ.Товары цикл
   Сообщить(Товар.Номенклатура.Наименование);
   КонецЦикла;
   ТаблУслуги=Документ.Услуги.Выгрузить();
   Для каждого Услуга из ТаблУслуги цикл
        Сообщить(Услуга.Номенклатура.Наименование);
       КонецЦикла;
       КонецЦикла;
Запрос = База.NewObject("Запрос");
Запрос.Текст = "
|ВЫБРАТЬ
|Услуги
|ИЗ
|Документ.РеализацияТоваровУслуг
|где
|Номер=""00000000004""";
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ДокиСписок.Значение=РезультатЗапроса;
ЭлементыФормы.ДокиСписок.СоздатьКолонки();
1 Kashemir
 
09.10.12
18:16
Должно работать. У тебя строки точно существуют в искомом документе ?
2 Kashemir
 
09.10.12
18:16
Документ.Товары.Количество() что говорит ?
3 hhhh
 
09.10.12
18:20
(0) это старые грабли, можно сказать детские. У НайтиПоНомеру два параметра: номер и дата
4 hhhh
 
09.10.12
18:21
(0) а запрос так

Запрос.Текст = "
|ВЫБРАТЬ
|*
|ИЗ
|Документ.РеализацияТоваровУслуг.Услуги
|где
|Номер=""00000000004""";
5 EvgeniuXP
 
09.10.12
18:21
(0) Зачем OLE между двумя 8?
6 hhhh
 
09.10.12
18:22
(4)+

|где
|Ссылка.Номер=""00000000004""";
7 EvgeniuXP
 
09.10.12
18:22
(0) пишет OLE, сам использует COM.
8 merlin789
 
09.10.12
18:39
(1)Да, проверял
(2)Говорит 0, хотя там не 0
(4)Запрос, отработал, но на выходе выдаетсяя COM-объект как его перевести в таблицу?
(5),(7) Ошибочка вышла... А задача стоит через прямое подключение к базе некоторые документы из самописной конфы загружать
Упростил код+ убрал блок подключения к базе
   Документ=База.Документы.РеализацияТоваровУслуг.НайтиПоНомеру("00000000004");//Док.Номер);
   //Для каждого товар из Документ.Товары цикл
   //Сообщить(Товар.Номенклатура.Наименование);
   //КонецЦикла;
   //ТаблУслуги=Документ.Услуги.Выгрузить();
   Для каждого Услуга из Документ.Услуги цикл
        Сообщить(Услуга.Номенклатура.Наименование);
   КонецЦикла;
9 merlin789
 
09.10.12
18:40
Заранее сорри, комменты не вырезал :[
10 Kashemir
 
09.10.12
18:44
(8) Говорит 0, хотя там не 0  - не поверишь, это значит там 0.
11 Галахад
 
гуру
09.10.12
18:46
Йопта, тебе ж сказали: Дата.
Документ=База.Документы.РеализацияТоваровУслуг.НайтиПоНомеру("00000000004", ТекущаяДата())
12 merlin789
 
09.10.12
18:46
(8) Я запросом в другой базе проверяю-там не ноль..
13 merlin789
 
09.10.12
18:51
(3),(11) its magic, but it's work!!
Непонятно тогда почему реквизиты шапки он без даты тянет, а табличная часть только с датой?
14 Kashemir
 
09.10.12
18:53
(13) Тебе действительно непонятно ?
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.