|
Выполнение оракловой функции в 1С
|
|||
---|---|---|---|
#18+
Есть оракловая функция, которая создает запись в таблице и возвращает id этой новой записи. Как выглядит код 1С, который позволит запустить эту функцию, и результат её выполнения сохранит в переменную? Другими словами, нужен пример кода использования оракловых функции в 1С. Вопрос конечно очень простой, но когда я увидел код в 1С .... там всё по-русски . Вобщем расчитываю на вашу помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2008, 15:03 |
|
Выполнение оракловой функции в 1С
|
|||
---|---|---|---|
#18+
LimonFX, Тебе никто не запрещает писать в англиской нотации. Если Оракл доступен через ADO, то делается легко. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2008, 15:23 |
|
Выполнение оракловой функции в 1С
|
|||
---|---|---|---|
#18+
LimonFXЕсть оракловая функция, которая создает запись в таблице и возвращает id этой новой записи. Как выглядит код 1С, который позволит запустить эту функцию, и результат её выполнения сохранит в переменную? Другими словами, нужен пример кода использования оракловых функции в 1С. Вопрос конечно очень простой, но когда я увидел код в 1С .... там всё по-русски . Вобщем расчитываю на вашу помощь. Через ADODB и его объекты.. Примерно так. Пример - из MS SQL, но это не принципиально - какая ConnectionString будет, к той базе и подключится. Ну. возможно, детали кода в строке str другие будут. Con = СоздатьОбъект("ADODB.Connection"); Con.ConnectionString = ConnectionString; Con.Open(); cmd = СоздатьОбъект("ADODB.Command"); cmd.ActiveConnection=con; str="declare |@d_start varchar(10), |@d_end varchar(10) |set @d_start='" +форматДат(НачДата)+ "' |set @d_end='" +форматДат(КонДата+1)+ "' |exec __t_proc1 @d_start,@d_end; |"; cmd.CommandText=str;cmd.execute(); Rcs = СоздатьОбъект("ADODB.RecordSet"); rcs.open("select Дата,Склад, cast( Списание as char(30)) AS Списание,cast( Оприходование as char(30)) AS Оприходование from ___t1",con); пока (rcs.EOF()=0) цикл тб.НоваяСтрока(); тб.День=(rcs.fields(0).Value()); тб.Склад=rcs.fields(1).Value(); тб.Списано=число(rcs.fields(2).Value()); тб.Оприходовано=число(rcs.fields(3).Value()); rcs.MoveNext(); КонецЦикла; ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2008, 15:31 |
|
Выполнение оракловой функции в 1С
|
|||
---|---|---|---|
#18+
pail Не очень понятно. Вот к примеру, в Delphi делается так qrServices.SQL.Text := 'begin' + ' :ID := myfunc(:param1, :param2); ' + 'end;'; qrServices.ParamByName(param1).AsInteger := 1; qrServices.ParamByName(param2).AsInteger := 2; qrServices.ExecSQL; Result := qrServices.ParamByName('ID').AsInteger; Как тоже самое повторить в 1С? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2008, 15:47 |
|
Выполнение оракловой функции в 1С
|
|||
---|---|---|---|
#18+
Каким кодом здесь дельфи? 1. Кто сказал, что в 1С можно пользоваться родными дельфийскими объектами ? COM и только COM. Например, ADODB. 2. Принципы программирования COM (упрощено) - синтаксис - от вызывающего контекста. Имена методов и свойств - из вызываемого. Документации и помощи в разделах этого сайта - сколько угодно. На этом откланиваюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2008, 15:56 |
|
Выполнение оракловой функции в 1С
|
|||
---|---|---|---|
#18+
Умиляют ваши ответы: Один написал что это делается очень легко, но было бы полезнее на конкретном примере показать как это "легко" выглядит. Второй не совсем понял суть вопроса, тоже намекает что это легко и отправляет меня на дальнейшие поиски. В которых я уже нахожусь второй день. Поэтому то я и решил задать вопрос здесь. Не ожидал что на такой простой вопрос тяжело будет ответить. Всего-то надо запустить оракловую функцию и сохранить в переменную результат её выполнения. Пример кода будет строчек 5-10, не больше. Я конечно же мог сделать автономную транзакцию в своей оракловой функции и тогда бы у наших (не очень квалифицированных) 1С программистов не возникло сложностей, сделав так - select MyOraFunc(param1,param2) from dual. Но к сожалению автономные транзакции использовать нельзя, поэтому приходится искать, как в коде 1С реализовывается запуск оракловых функций. Кстати, и еще привел кусок кода как это делается в Delphi. Я больше чем уверен, что разбирающийся в 1С человек не задумываясь смог бы продемонстрировать тоже самое в 1С диалекте. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2008, 16:38 |
|
Выполнение оракловой функции в 1С
|
|||
---|---|---|---|
#18+
LimonFX Я больше чем уверен, что разбирающийся в 1С человек не задумываясь смог бы продемонстрировать тоже самое в 1С диалекте. Я владею и дельфи, и 1С, и еще десятком языков, и могу использовать их в любых сочетаниях. Если Вы кроме дельфей знаете еще хотя бы один язык ( а также что такое COM) - вы свободно перепишете этот код самостоятельно. Если нет - не надо сваливать на 1С собственное неумение. Хороший повод научиться. И не надо рассчитывать на то, что на форуме кто-нибудь будет писать код за Вас. Привести пример существующего кода, имеющего отношение к проблеме - можно. Наваять минутной импровизацией нечто без проверки - тоже можно. Но Разжевать, перед тем как в рот положить - увольте от таких лентяев. Сам ленив. А "то же самое" на дельфи не получится - объектная модель другая. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2008, 17:14 |
|
Выполнение оракловой функции в 1С
|
|||
---|---|---|---|
#18+
LimonFXКстати, и еще привел кусок кода как это делается в Delphi. Я больше чем уверен, что разбирающийся в 1С человек не задумываясь смог бы продемонстрировать тоже самое в 1С диалекте.Очень усильно умиляют люди не умеющие читать. Вам уже написали ВСЕ. А вы не можете воспользоваться прокладкой между креслом и монитором чтобы использовать данный пример. Думаю что человек Разумный смог бы не задумываясь перевести синтаксис в ДЕСЯТОК языков, если перед его глазами есть пример из этого языка. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2008, 20:17 |
|
Выполнение оракловой функции в 1С
|
|||
---|---|---|---|
#18+
Программист 1с Давай попробуем разобраться что за пример описан сверху. Я его понял так: 1)объявляются переменные d_start и d_end 2)далее в эти переменный заносятся какие-то значения set @d_start='"+форматДат(НачДата) и set @d_end='"+форматДат(КонДата+1) 3)потом запускается процедура с этими параметрами exec __t_proc1 @d_start,@d_end; 4)я предполагаю что результат своей работы эта процедура сохраняет в таблицу t1 ( select ... from ___t1", ) 5)и в конце выполняется выборка данных из этой таблицы Теперь смотрим что писал я в первом посте. Есть оракловая функция, которая создает запись в таблице и возвращает id этой новой записи. Как выглядит код 1С, который позволит запустить эту функцию, и результат её выполнения сохранит в переменную. В выше описанном примере я такого не заметил. В 1С я вообще не разбираюсь и времени особо нет для этого. Но я более чем уверен что показать на примере такой код очень просто. Вместо этого простого кода, я вижу как мне доказывают что я неучь и лентяй (вот только за этим я сюда и пришел). Поэтому я еще раз прошу помочь показать на примере или скинуть ссылку где описывается как работать с оракловыми процедурами и функциями в 1С. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2008, 10:26 |
|
Выполнение оракловой функции в 1С
|
|||
---|---|---|---|
#18+
LimonFX В 1С я вообще не разбираюсь и времени особо нет для этого. Но я более чем уверен что показать на примере такой код очень просто. Вместо этого простого кода, я вижу как мне доказывают что я неучь и лентяй (вот только за этим я сюда и пришел). Поэтому я еще раз прошу помочь показать на примере или скинуть ссылку где описывается как работать с оракловыми процедурами и функциями в 1С. А из 1С там требуется знать только СоздатьОбъект(CreateObject), а дальше уже чисто методы ADODB ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2008, 11:08 |
|
Выполнение оракловой функции в 1С
|
|||
---|---|---|---|
#18+
LimonFX, // Создание нового объекта Command Command = Новый СОМОбъект("ADODB.Command"); // Организация связи с поставщиком данных для объекта Command Command.ActiveConnection = Connection; // Задание хранимой процедуры Command.CommandText = "Имя вашей хранимой процедуры"; // Применение метода CreateParameter объекта Command для // создания нового объекта Parameter, который будет // использован при выполнении хранимой процедуры. // 3 = integer без знака // 4 = возвращаемое значение(код завершения процедуры) ReturnParameter = Command.CreateParameter("Return", 3, 4); // Добавление в семейство Parameters объекта Command нового параметра Command.Parameters.Append(ReturnParameter); // Получение объекта Recordset Command.Execute(); // ReturnParameter.Value содержит возвращенное значение Предупреждение("Результат вызова = " + Строка(ReturnParameter.Value), 3); ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2008, 12:53 |
|
Выполнение оракловой функции в 1С
|
|||
---|---|---|---|
#18+
BestProgrammist Спасибо. Ща попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2008, 13:54 |
|
Выполнение оракловой функции в 1С
|
|||
---|---|---|---|
#18+
LimonFX В 1С я вообще не разбираюсь и времени особо нет для этого. тут не в 1С дело . вы просто не понимаете и не желаете понимать как клиентские приложения работают с СУБД, тупо требуя кода. а таких тут не любят. примеров, и описаний по ADODB в интернете полно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2008, 10:44 |
|
|
start [/forum/topic.php?fid=28&fpage=153&tid=1524198]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 163ms |
0 / 0 |