Имя: Пароль:
1C
1С v8
Запрос через Com
,
0 Dark_Warrior
 
24.10.14
09:03
Всем доброго дня. Подскажите, пожалуйста, как из запроса через com-соединение с другой базой получить некоторые реквизиты ТЧ объекта (документ)? Знаю что по COM можно передавать только простые типы данных, собственно они мне и нужны.

Коннект = Соединение.NewObject("Запрос");
        Коннект.Текст = "ВЫБРАТЬ
|    ВедомостьНаВыплатуЗарплатыПеречислением.Зарплата.(
|        Сотрудник.Наименование,
|        КВыплате,
|        БанковскийСчет.Наименование
|    ),
|    ВедомостьНаВыплатуЗарплатыПеречислением.Ссылка
|ИЗ
|    Документ.ВедомостьНаВыплатуЗарплатыПеречислением КАК ВедомостьНаВыплатуЗарплатыПеречислением
|ГДЕ
|    ВедомостьНаВыплатуЗарплатыПеречислением.Дата МЕЖДУ &ДатаНач И &ДатаКон";
            Коннект.УстановитьПараметр("ДатаНач",Объект.ДатаНач);
            Коннект.УстановитьПараметр("ДатаКон",КонецДня(Объект.ДатаКон));
            Результат = Коннект.Выполнить();
            Выборка = Результат.Выбрать();

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

Платформа 8.3.5.1186, базы бух3.0 и зуп3.0.
1 Smallrat
 
24.10.14
09:57
дык - там же группировка - после выборки надо еще раз выборку делать.
Почему не написать

|ВедомостьНаВыплатуЗарплатыПеречислениемЗарплата.Сотрудник.Наименование,
|ВедомостьНаВыплатуЗарплатыПеречислениемЗарплата.КВыплате,
|ВедомостьНаВыплатуЗарплатыПеречислениемЗарплата.БанковскийСчет.Наименование
|ВедомостьНаВыплатуЗарплатыПеречислениемЗарплата.ВедомостьНаВыплатуЗарплатыПеречислением.Ссылка
|ИЗ
|    Документ.ВедомостьНаВыплатуЗарплатыПеречислением.Зарплата КАК ВедомостьНаВыплатуЗарплатыПеречислениемЗарплата
2 Smallrat
 
24.10.14
09:58
|ВедомостьНаВыплатуЗарплатыПеречислениемЗарплата.ВедомостьНаВыплатуЗарплатыПеречислением.Ссылка ->
|ВедомостьНаВыплатуЗарплатыПеречислениемЗарплата.Ссылка
3 Dark_Warrior
 
24.10.14
10:42
(1) (2) Все равно имя колонки ТЧ получается
4 Dark_Warrior
 
24.10.14
10:43
5 Smallrat
 
24.10.14
10:49
что говорит Результат.Количество() ?
6 Smallrat
 
24.10.14
10:50
упс Результат.Выгрузить().Количество()
7 Dark_Warrior
 
24.10.14
10:51
(6) (5) Правильное количество документов.
8 Smallrat
 
24.10.14
10:52
Что-то я нагнал с табчастью - я почему то подумал про выборку реквизитов для документа, а там же период - так что там надо сгруппировать по ссылкам.
Потом делать вложенные выборки
9 Smallrat
 
24.10.14
10:53
Попробуй в первоначальном варианте запроса:
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
  Ссылка = Выборка.Ссылка;
  ВыборкаВложенная = Выборка.Выбрать()
  Пока ВыборкаВложенная .Следующий() Цикл
10 Dark_Warrior
 
24.10.14
11:31
(9) Хм... Метод объекта не обнаружен, говорит. Если вместо Выбрать() указать Select(), то просто ничего не происходит.

http://i017.radikal.ru/1410/16/ca4479ee990b.jpg
11 Smallrat
 
24.10.14
11:45
все время про группировки путаюсь, сорри((
в (9)
ВыборкаВложенная = Выборка.Зарплата.Выбрать()
12 hhhh
 
24.10.14
11:48
(11) Следующий() забыл. Ну сколько тебе можно напоминать? Запиши где-нибудь на ладони. После Выбрать() обязательно следующей строчкой Следующий().
13 Chai Nic
 
24.10.14
11:49
Классический костыль:

ТабЗапроса=ЗначениеИзСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(Коннект.Выполнить().Выгрузить());
14 Dark_Warrior
 
24.10.14
11:50
(12) ВыборкаВложенная.Следующий() ?
15 Dark_Warrior
 
24.10.14
11:52
+ (14) дальше цикл
ВыборкаВложенная = Выборка.Зарплата.Выбрать();
Пока ВыборкаВложенная.Следующий() Цикл
16 hhhh
 
24.10.14
11:53
(11) извиняюсь, это не вам (12), а автору.
17 Smallrat
 
24.10.14
11:53
(12) вроде в (9) с учётом (11) всё есть
18 Dark_Warrior
 
24.10.14
11:54
(16) Я имел в виду тоже самое, что и  (17) =)
19 hhhh
 
24.10.14
11:56
(18) точка останова где стоит? На какой строчке?
20 Dark_Warrior
 
24.10.14
11:57
(19) (17) Все получилось, нужные реквизиты попадают в базу-приемник. Огромное спасибо за помощь!
21 Chai Nic
 
24.10.14
11:58
(18) А потом у вас поплывут копейки.. )
Не заморачивайтесь с получением реквизитов через com, кидайте всю таблицу целиком сериализацией в строку как в (13) - проблем меньше будет!
22 Dark_Warrior
 
24.10.14
12:10
(21) Рассмотрю вариант, спасибо)