Имя: Пароль:
1C
 
Обращение к 1С из Delphi
,
0 AndreyV62
 
29.06.16
16:59
procedure TForm1.Button2Click(Sender: TObject);
var C1,Connection,OleNomen,OleFizLica: OleVariant;
    StrData,refEvalExpr  : OleVariant;
    Query, Choose  : OleVariant;
    queryRes  : OleVariant;
    Rslt : OleVariant;
    Next       : Boolean;
    Str,SQL : string;
    Count : integer;
    objsel, TabRez : Variant;
    df, dt: Double;
begin

C1 := CreateOleObject('V82.comconnector');
Connection := C1.Connect('Srvr="td-1c";Ref="Programmers";Usr="' + Trim(Edit8.Text) + '";Pwd="' + Trim(Edit9.Text) + '";');


objsel := Connection.NewObject('Запрос');

objsel.Текст := ' ВЫБРАТЬ ПЕРВЫЕ 100'+
                  ' ЗаказПокупателя.Дата,'+
                  ' ЗаказПокупателя.Номер,'+
                  ' ЗаказПокупателя.Ссылка,'+
                  ' ЗаказПокупателя.ДатаОтгрузки,'+
                  ' ЗаказПокупателя.Контрагент'+
                ' ИЗ'+
                ' Документ.ЗаказПокупателя КАК ЗаказПокупателя'+
                ' ГДЕ'+
                ' ЗаказПокупателя.Эксмо_ДатаОтгрузки >= &ДатаОтгр'+
                ' ЗаказПокупателя.СкладГруппа.Код = &Код';

    df := cxDateEdit8.Date + cxTimeEdit11.Time;

    objsel.УстановитьПараметр('ДатаОтгр', '20160601');
    objsel.УстановитьПараметр('Код','AST000046');

    Query := Connection.NewObject('Запрос');
    Query.Text := objsel.Текст;
    Rslt := Query.Execute();

    StrData := Rslt.Выбрать();

    Next := True;
    While Next do
       begin
         Next := StrToBool(StrData.Следующий());
         if Next then
           begin
             Form1.Memo1.Lines.Add(trim(StrData.Номер)+#9+trim(StrData.Дата));
             Application.ProcessMessages;
           end;
       end;

end;

// При отработке запрсоса выдаётся сообщение, что не заданы параметры. Может кто сталкивался? Был такой пользователь "paulic" на его осное я и попытался реализовать запрос к 1С.
1 Зая Бусечка
 
29.06.16
17:00
Параметры ставятся одному объекту, а выполняется другой...
2 Nuobu
 
29.06.16
17:01
Query := Connection.NewObject('Запрос');
    Query.Text := objsel.Текст;
    Rslt := Query.Execute();

Вот это выкинь.

сделай так:

    Rslt := objsel.Execute();
3 AndreyV62
 
29.06.16
17:10
Спасибо. А это разве принципиально для того, чтобы запрос принял команды на установку параметров?
    objsel.УстановитьПараметр('ДатаОтгр', '20160601');
    objsel.УстановитьПараметр('Код','AST000046');
4 Зая Бусечка
 
29.06.16
17:11
(3) параметры принимает конкректный объект, а не "вообще запрос"
5 Nuobu
 
29.06.16
17:13
(3) Запрос = Новый Запрос;
Запрос.Текст = "Выбрать тралялял, тарялял1, траляля2
из
Регистр как регистрНичегоПримечательного
ГДЕ
Парам1 = &Парам1
И
Парам2 = &Парам2";
Запрос.УстановитьПараметр("парам1", Парам1);
Запрос.УстановитьПараметр("парам2", Парам2);

Запрос2 = Новый Запрос;
Запрос2.Текст = Запрос.Текст;
Запрос2.Выполнить(); // Тут ругается, не пойму чего?? можете помочь?
6 AndreyV62
 
29.06.16
17:16
ЗаказПокупателя.СкладГруппа.Код = &Код';

Выдаётся ошибка - не указан параметр "Код"
7 Nuobu
 
29.06.16
17:18
(6) Покажи переделанный текст.
8 AndreyV62
 
30.06.16
13:23
О чудо - работает.

Спасибо огромное.
9 AndreyV62
 
30.06.16
13:45
objsel.Текст := ' ВЫБРАТЬ ПЕРВЫЕ 100'+
                  ' ЗаказПокупателя.Дата,'+
                  ' ЗаказПокупателя.Номер,'+
                  ' ЗаказПокупателя.Ссылка,'+
                  ' ЗаказПокупателя.ДатаОтгрузки,'+
                  ' ЗаказПокупателя.Контрагент'+
                ' ИЗ'+
                ' Документ.ЗаказПокупателя КАК ЗаказПокупателя'+
                ' ГДЕ'+
                ' ЗаказПокупателя.ДатаОтгрузки >= &ДатаОтгр'+
                ' И ЗаказПокупателя.СкладГруппа.Код = &Код';

    df := cxDateEdit8.Date + cxTimeEdit11.Time;

    objsel.УстановитьПараметр('ДатаОтгр', df);

    objsel.УстановитьПараметр('Код','AST000046');

Как параметру дата можно скормить cxDateEdit8.Date + cxTimeEdit11.Time? Подскажите
10 Зая Бусечка
 
30.06.16
13:46
(9) Отформатируй его в виде '20160630140000'
т.е 30 июня, 14 часов ровно
11 AndreyV62
 
30.06.16
13:52
Спасибо.
А синтаксис не подскажете применительно к cxDateEdit8.Date + cxTimeEdit11.Time?
12 Зая Бусечка
 
30.06.16
13:53
(11) Кто из нас дельфист - ты или я?
13 Nuobu
 
30.06.16
14:05
14 Garykom
 
гуру
30.06.16
14:14
(12) "После 1С разобраться в какой то Delphi это раз плюнуть"©
15 Зая Бусечка
 
30.06.16
14:42
(14) Так сказала Саша (с)  ))))
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.