Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Получить текст запроса что 1С передает ОРАКЛу

Получить текст запроса что 1С передает ОРАКЛу
Я
   Апшерон
 
03.07.19 - 10:55
Просьба сильно не бить ссаными трапками, я аникейщики на которого начальство повесило 1Ску поэтому зараннее извините если что пишу криво и не теми терминами..

Есть Бух 3.0 в ней сделана интеграция с ОРАКЛОМ, а именно 1Ска выгружает туда информацию по счетам... код такой


    // передача в Оракл
    DataBaseConnection = ПодключениеКОракл();

    Command = Новый COMObject("ADODB.Command");
    
    Command.CommandText = "MMAST.F1CPK.PAYMENTFM";
    Command.ActiveConnection = DataBaseConnection;
    Command.CommandType = 4; // adCmdStoredProc
    
    //Param1 = Command.CreateParameter("", 131, 1);     // NUMBER, Идентификатор счета заказчика
    Param1 = Command.CreateParameter("", 3, 1);     // NUMBER, Идентификатор счета заказчика
    Param2 = Command.CreateParameter("", 200, 1, 36); // VARCHAR2, Идентификатор документа оплаты из 1С
    Param3 = Command.CreateParameter("", 200, 1, 20); // VARCHAR2, Номер документа оплаты из 1С
    Param4 = Command.CreateParameter("", 200, 1, 25); // VARCHAR2, Источник поступления банк/касса
    Param5 = Command.CreateParameter("", 7, 1, 4);    // DATE, Дата оплаты
    Param6 = Command.CreateParameter("", 200, 1, 20); // VARCHAR2, Валюта договора контрагента
    Param7 = Command.CreateParameter("", 5, 1);       // NUMBER, Сумма валютная
    Param8 = Command.CreateParameter("", 5, 1);       // NUMBER, Сумма рублёвая
    Param9 = Command.CreateParameter("", 3, 1);       // INTEGER DEFAULT 0, Признак удаления оплат, перед добавлением [0 - нет, 1 - да]
    Param10 = Command.CreateParameter("", 200, 1, 36); // VARCHAR2, Идентификатор документа Счет
    
    Command.Parameters.Append(Param1);
    Command.Parameters.Append(Param2);
    Command.Parameters.Append(Param3);
    Command.Parameters.Append(Param4);
    Command.Parameters.Append(Param5);
    Command.Parameters.Append(Param6);
    Command.Parameters.Append(Param7);
    Command.Parameters.Append(Param8);
    Command.Parameters.Append(Param9);
    Command.Parameters.Append(Param10);
    
    Param1.Value = ИдСчета;
    Param2.Value = Строка(ДокументОплаты.УникальныйИдентификатор());
    Param3.Value = ?(ЭтоБанк, ДокументОплаты.НомерВходящегоДокумента, ДокументОплаты.Номер);
    Param4.Value = ИсточникПоступления;
    Param5.Value = ДатаОплаты;
        Param6.Value = КодВалюты;
    Param7.Value = СуммаВВалюте;
    Param8.Value = Сумма;
    Param9.Value = Очищать;
    Param10.Value = Строка(ДокументСчет.УникальныйИдентификатор());
    
    Command.Execute();

В процессе выполнения генерится ошибка

    [Oracle][ODBC][Ora]ORA-06550: Строка 1, столбец 7:
    PLS-00306: ошибочно число или типы аргументов при обращении к 'PAYMENTFM'
    ORA-06550: Строка 1, столбец 7:
    PL/SQL: Statement ignored

Программисты что занимаются ОРАКЛОМ сказали что 1Ска передает некорректные параметры, но какой именно некорректный они не знают и что бы им это узнать я должен предоставить им запрос что 1Ска отправляет в ОРАКЛ. Я им показал код 1С, они говорят не то... далее цитата "Надо перехватить событие когда объект ADODB.Command отправляет данные в скуль и оттуда вытащить текст запроса что он сформировал"
Ну собственно вопрос, в какую сторону рыть что бы это получить...
 
 
   novichok79
 
1 - 03.07.19 - 11:27
с ораклом не знаком, наверное ТЖ надо смотреть.
   ДенисЧ
 
2 - 03.07.19 - 11:31
Если они такие умные, то почему не подскажут, как перехватить обращение к серверу сторонней прграммы?
На МССКЛ я знаю. Наверняка и у оракла есть подобная приблуда...
   silent person
 
3 - 03.07.19 - 11:31
с ораклом тоже не знаком, но вот что пишут.

https://docs.microsoft.com/ru-ru/dotnet/api/system.data.oracleclient.oraclecommand.commandtext?view=netframework-4.8

OracleCommand.CommandText Property
Определение
Пространство имен:
System.Data.OracleClient
Assembly:
System.Data.OracleClient.dll
Возвращает или задает оператор SQL или хранимую процедуру, которую необходимо выполнить в базе данных.

судя по тому, что в строке     Command.CommandText = "MMAST.F1CPK.PAYMENTFM"; явно не текст запроса, то это хранимая процедура. а ее вроде в sql базе посмотреть можно.
   ДенисЧ
 
4 - 03.07.19 - 11:32
   ДенисЧ
 
5 - 03.07.19 - 11:32
(3) от смотрения на процедуру? Нужно смотреть на то, как её зовут...
   catena
 
6 - 03.07.19 - 11:39
(3)Там не важно, что написано, будет все равно хранимая, т.к. Command.CommandType = 4;)))
   Exxter
 
7 - 03.07.19 - 11:42
(0) Может тут?
Param5.Value = ДатаОплаты

Формат даты какой?
   rphosts
 
8 - 03.07.19 - 11:50
(0) >Программисты что занимаются ОРАКЛОМ
Может это аникейщики которым впихнули оракл?
Не запрос передается, а вызывается хранимая процедура MMAST.F1CPK.PAYMENTFM , пусть они по очереди (или всей толпой сразу) ее текст смотрят.
   Апшерон
 
9 - 03.07.19 - 12:44
(4) Спасибо, буду смотреть
   Garykom
 
10 - 03.07.19 - 12:51
 
 Рекламное место пустует
   Garykom
 
11 - 03.07.19 - 12:52
Описание хранимки у ораклистов выбей, только не называй их так лучше ораклоидами ))
   Garykom
 
12 - 03.07.19 - 12:54
   Cyberhawk
 
13 - 03.07.19 - 12:54
Так хранимка же вызывается, какой еще текст "вытащить текст запроса что он сформировал"
   Cyberhawk
 
14 - 03.07.19 - 12:54
А, выше указали уже, ладно
   singlych
 
15 - 03.07.19 - 12:57
да по-любому дата передается 03.07.2019 а надо 2019.07.03
   Garykom
 
16 - 03.07.19 - 13:02
(15) Хрен там скорее уже
"Сумма валютная" плохо соотносится с "Указывает значение с плавающей запятой двойной точности (DBTYPE_R8)."
   singlych
 
17 - 03.07.19 - 13:07
(16) ну кстати там даже написано "столбец 7"
   kolts23381
 
18 - 03.07.19 - 15:40
Попробуйте программу flextracer

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует