Имя: Пароль:
1C
1С v8
Получить остатки по счету запросом из СОМОбъекта
0 america2013
 
27.11.13
15:27
Здравствуйте, почтенные форумчане!!!
Прошу помочь Вас, разъяснить мне такой момент: каким образом из подключенного СОМОбъекта получить остатки по счету?

Сначала был такой код:

    V8 = Новый COMОбъект("V82.ComConnector");
//...
    ПараметрДляЗапроса = "Справочник.Организации";
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Спр.Код,
    |    Спр.Наименование
    |ИЗ
    |    "+ПараметрДляЗапроса+" КАК Спр";
    Результат = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(ВыборкаДетальныеЗаписи.Наименование);
    КонецЦикла;
    
    V8 = "";


В результате прекрасно получаю список организаций из базы.

Но требуется так же получить остатки по счету.
В консоли имею запрос:

ВЫБРАТЬ
    ТиповойОстаткиИОбороты.Субконто1,
    ТиповойОстаткиИОбороты.СуммаНачальныйОстаток,
    ТиповойОстаткиИОбороты.СуммаКонечныйОстаток

ИЗ
    РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&d1, &d2, , , Счет.Код = &Schet, , ) КАК ТиповойОстаткиИОбороты

Как такой запрос поместить в первый код?
С нетерпением ожидаю ответа. Заранее благодарен!
1 butterbean
 
27.11.13
15:29
Ctrl+C  Ctrl+V
2 hhhh
 
27.11.13
15:32
ну если только

ВЫБРАТЬ
    ТиповойОстаткиИОбороты.Субконто1.Наименование,
3 Wobland
 
27.11.13
15:33
(1) не всё так просто, автор заготовил нам какой-то подвох
4 america2013
 
27.11.13
15:41
Вот что у меня получается (извините, если бред полный написал):



    V8 = Новый COMОбъект("V82.ComConnector");
//...


    ПараметрДляЗапроса = "V8";


    Запрос = Новый Запрос;
    Запрос.Текст =

    "    ВЫБРАТЬ
    |    ТиповойОстаткиИОбороты.Субконто1,
    |    ТиповойОстаткиИОбороты.КоличествоНачальныйОстаток,
    |    ТиповойОстаткиИОбороты.КоличествоКонечныйОстаток
    |ИЗ
    |    " + ПараметрДляЗапроса + ".РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&d1, &d2, , , Счет.Код = &Schet, , ) КАК ТиповойОстаткиИОбороты ";


    Результат = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(ВыборкаДетальныеЗаписи.Наименование);
    КонецЦикла;
    
    V8 = "";


В результате выполнения пишет:


{Форма.Форма.Форма(196)}: Ошибка при вызове метода контекста (Выполнить)
    Результат = Запрос.Выполнить();
по причине:
{(10, 2)}: Таблица не найдена "V8.РегистрБухгалтерии.Типовой.ОстаткиИОбороты"
<<?>>V8.РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&d1, &d2, , , Счет.Код = &Schet, , ) КАК ТиповойОстаткиИОбороты
5 america2013
 
27.11.13
15:49
Очень интересный мне вариант здесь, практически то, что нужно:
http://alsproject.ru/publ/obshhie/podkljuchenie_1s_7_7_k_1s_8_2_cherez_ole/2-1-0-31

Но не работает:

Запрос = v8.NewObject("Запрос");
6 america2013
 
27.11.13
15:50
...и подключение у меня (8.2 -> 8.2)
7 america2013
 
27.11.13
15:52
...пробовал менять на:
Запрос = v8.CreateObject("Запрос");

пишет:

{Форма.Форма.Форма(153)}: Метод объекта не обнаружен (CreateObject)
    Запрос = v8.CreateObject("Запрос");
8 catena
 
27.11.13
15:57
У вас и первый запрос не в чужой базе выполняется, а в своей
9 catena
 
27.11.13
15:58
(7)
V8 = Новый COMОбъект("V82.ComConnector");
connect = connector.Connect(СтрПодключения)
Запрос=connect.NewObject("Запрос");
10 Wobland
 
27.11.13
15:58
текст запроса - это просто строка. кторая в свою очередь может быть скормлена тамошнему запросу, который предварительно был создан как NewObject
11 america2013
 
27.11.13
16:04
Опачки. Выяснилось, что платформы сервер-клиент разные(((
Иду исправлять...
12 america2013
 
27.11.13
16:19
С помощью самокопания и интернета, и несомненно вашей телепатической поддержки : ) требуемое подключение и вывод из базы успешно завершен!!! Безмерно благодарен вам, товарищи!!!

Привожу конечный код:

    V8 = Новый COMОбъект("V82.ComConnector");
//...
    Открытие = V8.Connect(СтрокаСоединения);
    
    Запрос = Открытие.NewObject("Запрос");
    Запрос.Текст =

    "    ВЫБРАТЬ
    |    ТиповойОстаткиИОбороты.Субконто1,
    |    ТиповойОстаткиИОбороты.КоличествоНачальныйОстаток,
    |    ТиповойОстаткиИОбороты.КоличествоКонечныйОстаток
    |ИЗ
    |    " + ПараметрДляЗапроса + ".РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&d1, &d2, , , Счет.Код = &Schet, , ) КАК ТиповойОстаткиИОбороты ";

    Запрос.УстановитьПараметр("d1", НачПериода);    
    Запрос.УстановитьПараметр("d2", КонПериода);    
    Запрос.УстановитьПараметр("Schet", "1320");    
        
    Результат = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        //...
    КонецЦикла;
    
    V8 = "";
13 Wobland
 
27.11.13
16:25
забавно коннектор назвал. а ПараметрДляЗапроса тебе зачем?
14 america2013
 
28.11.13
09:27
(13) Прошу прощения, опубликовал не тот код, благодарю, что поправили. Вот правильный:

    V8 = Новый COMОбъект("V82.ComConnector");
//...
    Открытие = V8.Connect(СтрокаСоединения);
    
    Запрос = Открытие.NewObject("Запрос");
    Запрос.Текст =
    "    ВЫБРАТЬ
    |    ТиповойОстаткиИОбороты.Субконто1,
    |    ТиповойОстаткиИОбороты.КоличествоНачальныйОстаток,
    |    ТиповойОстаткиИОбороты.КоличествоКонечныйОстаток
    |ИЗ
    |    РегистрБухгалтерии.Типовой.ОстаткиИОбороты(&d1, &d2, , , Счет.Код = &Schet, , ) КАК ТиповойОстаткиИОбороты
    |";

    Запрос.УстановитьПараметр("d1", НачПериода);    
    Запрос.УстановитьПараметр("d2", КонПериода);    
    Запрос.УстановитьПараметр("Schet", "1320");    
        
    Результат = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    V8 = "";
15 zakidonoff
 
28.11.13
09:31
Вежливость - наше всё...
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.