|
Получить текст запроса что 1С передает ОРАКЛу | ☑ | ||
---|---|---|---|---|
0
Апшерон
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 отправляет данные в скуль и оттуда вытащить текст запроса что он сформировал" Ну собственно вопрос, в какую сторону рыть что бы это получить... |
|||
1
novichok79
03.07.19
✎
11:27
|
с ораклом не знаком, наверное ТЖ надо смотреть.
|
|||
2
ДенисЧ
03.07.19
✎
11:31
|
Если они такие умные, то почему не подскажут, как перехватить обращение к серверу сторонней прграммы?
На МССКЛ я знаю. Наверняка и у оракла есть подобная приблуда... |
|||
3
silent person
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
|
вот, например темка
http://www.sql.ru/forum/678490/perehvat-zaprosov-ot-programmy-k-serveru-orakl |
|||
5
ДенисЧ
03.07.19
✎
11:32
|
(3) от смотрения на процедуру? Нужно смотреть на то, как её зовут...
|
|||
6
catena
03.07.19
✎
11:39
|
(3)Там не важно, что написано, будет все равно хранимая, т.к. Command.CommandType = 4;)))
|
|||
7
Exxter
03.07.19
✎
11:42
|
(0) Может тут?
Param5.Value = ДатаОплаты Формат даты какой? |
|||
8
rphosts
03.07.19
✎
11:50
|
(0) >Программисты что занимаются ОРАКЛОМ
Может это аникейщики которым впихнули оракл? Не запрос передается, а вызывается хранимая процедура MMAST.F1CPK.PAYMENTFM , пусть они по очереди (или всей толпой сразу) ее текст смотрят. |
|||
9
Апшерон
03.07.19
✎
12:44
|
(4) Спасибо, буду смотреть
|
|||
10
Garykom
гуру
03.07.19
✎
12:51
|
||||
11
Garykom
гуру
03.07.19
✎
12:52
|
Описание хранимки у ораклистов выбей, только не называй их так лучше ораклоидами ))
|
|||
12
Garykom
гуру
03.07.19
✎
12:54
|
(10)+ https://docs.microsoft.com/ru-ru/sql/ado/reference/ado-api/createparameter-method-ado?view=sql-server-2017
Для "Command.CreateParameter" |
|||
13
Cyberhawk
03.07.19
✎
12:54
|
Так хранимка же вызывается, какой еще текст "вытащить текст запроса что он сформировал"
|
|||
14
Cyberhawk
03.07.19
✎
12:54
|
А, выше указали уже, ладно
|
|||
15
singlych
03.07.19
✎
12:57
|
да по-любому дата передается 03.07.2019 а надо 2019.07.03
|
|||
16
Garykom
гуру
03.07.19
✎
13:02
|
(15) Хрен там скорее уже
"Сумма валютная" плохо соотносится с "Указывает значение с плавающей запятой двойной точности (DBTYPE_R8)." |
|||
17
singlych
03.07.19
✎
13:07
|
(16) ну кстати там даже написано "столбец 7"
|
|||
18
kolts23381
03.07.19
✎
15:40
|
Попробуйте программу flextracer
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |