Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
24 Фев 2018, 05:02
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: создание функции  (Прочитано 2059 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн BotMan

  • *
  • Сообщений: 45
  • РЕПУТАЦИЯ: 1
  • КПД: 2%
  • Регистрация: 2014-06-05
  • Сайт: 
  • Профессия: Ученик 1С
подскажите с таким моментом, создаю функцию и хочу чтобы она отработав возвращала результат, например :      
текстзапроса = ("select * from mybase");
текстзапроса.подключение();

функция подключение(ТекстЗапроса)
Соединение=СоздатьОбъект("ADODB.Connection");
Соединение.ConnectionString = "DRIVER={Microsoft ODBC for Oracle};бла бла бла";
Соединение.ConnectionTimeout = 15;
Соединение.CursorLocation= 3;
Соединение.Open(Соединение.ConnectionString);
НаборЗаписей = Соединение.Execute(ТекстЗапроса);   
возврат   НаборЗаписей.MoveFirst();
конецфункции

после выполнения ругается на :
Значение не представляет агрегатный объект (подключение)
:dfbsdfbsdf:

спасибо!

Жми спасибо, если подсказал 8)


Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
Re: создание функции
« Ответ #1: 17 Мар 2015, 13:19 »
почитайте про ADODB.Connection
НаборЗаписей=Соединение.Execute(ТекстЗапроса);
НаборЗаписей.MoveFirst();
//и так далее

Оффлайн BotMan

  • *
  • Сообщений: 45
  • РЕПУТАЦИЯ: 1
  • КПД: 2%
  • Регистрация: 2014-06-05
  • Сайт: 
  • Профессия: Ученик 1С
Re: создание функции
« Ответ #2: 17 Мар 2015, 13:57 »
почитайте про ADODB.Connection
НаборЗаписей=Соединение.Execute(ТекстЗапроса);
НаборЗаписей.MoveFirst();
//и так далее

так у меня с ним все нормально, он работает. ест задумка отправлять запрос в функцию, да подключается , получает результат и возвращает его, вот!
покажите плз простейший пример такой функции. я только учусь 1с. что можно вообще отправлять в функцию?
Жми спасибо, если подсказал 8)

Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
Re: создание функции
« Ответ #3: 17 Мар 2015, 19:40 »
текстзапроса.подключение()

текстзапроса - это текстовая переменная.
у текстовых переменных нет никаких свойств и методов.
вот и ругается на это..

как должно быть:
функция подключение(ТекстЗапроса)
  Соединение=СоздатьОбъект("ADODB.Connection");   
  Соединение.ConnectionString = "DRIVER={Microsoft ODBC for Oracle};бла бла бла";
  Соединение.ConnectionTimeout = 15;
  Соединение.CursorLocation= 3;
  Соединение.Open(Соединение.ConnectionString);
  НаборЗаписей = Соединение.Execute(ТекстЗапроса);   
  возврат   НаборЗаписей.MoveFirst();
конецфункции

Результат = Подключение(ТекстЗапроса);

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
Re: создание функции
« Ответ #4: 18 Мар 2015, 08:41 »
почитайте про ADODB.Connection
НаборЗаписей=Соединение.Execute(ТекстЗапроса);
НаборЗаписей.MoveFirst();
//и так далее

так у меня с ним все нормально, он работает. ест задумка отправлять запрос в функцию, да подключается , получает результат и возвращает его, вот!
покажите плз простейший пример такой функции. я только учусь 1с. что можно вообще отправлять в функцию?
Я ерунду написал, голова не работала. Возвращайте просто НаборЗаписей, а потом уже работайте с ним, ну и как написал Herby.
Результат = Подключение("select * from mybase");

функция подключение(ТекстЗапроса)
Соединение=СоздатьОбъект("ADODB.Connection");   
Соединение.ConnectionString = "DRIVER={Microsoft ODBC for Oracle};бла бла бла";
Соединение.ConnectionTimeout = 15;
Соединение.CursorLocation= 3;
Соединение.Open(Соединение.ConnectionString);
НаборЗаписей = Соединение.Execute(ТекстЗапроса);   
возврат   НаборЗаписей;
конецфункции

Оффлайн BotMan

  • *
  • Сообщений: 45
  • РЕПУТАЦИЯ: 1
  • КПД: 2%
  • Регистрация: 2014-06-05
  • Сайт: 
  • Профессия: Ученик 1С
Re: создание функции
« Ответ #5: 18 Мар 2015, 13:56 »
подскажите плз как правильно разместить функцию в коде:
перем текстзапроса;
Процедура приоткрытии()
конецпроцедуры

процедура сформировать()
текстзапроса = "select * from mubase";
результат = подключение(текстзапроса);

конецпроцедуры
   функция подключение(ТекстЗапроса)
  Соединение=СоздатьОбъект("ADODB.Connection");   
  Соединение.ConnectionString = "DRIVER={Microsoft ODBC for Oracle};UID=sys;PWD=qqq;SERVER=tmbrest";
  Соединение.ConnectionTimeout = 15;
  Соединение.CursorLocation= 3;
  Соединение.Open(Соединение.ConnectionString);
  НаборЗаписей = Соединение.Execute(ТекстЗапроса);   
  возврат   НаборЗаписей.MoveFirst();
конецфункции

подскажите пож, где как правило распологают процедуры???
Добавлено: 18 Мар 2015, 14:34

ругается
Значение не представляет агрегатный объект (EOF)
:dfbbdrfb:

	перем текстзапроса2;
                     
      функция подключение(ТекстЗапроса2)
  Соединение=СоздатьОбъект("ADODB.Connection");   
  Соединение.ConnectionString = "DRIVER={Microsoft ODBC for Oracle};бла, бла, бла";
  Соединение.ConnectionTimeout = 15;
  Соединение.CursorLocation= 3;
  Соединение.Open(Соединение.ConnectionString);
  НаборЗаписей = Соединение.Execute(ТекстЗапроса2);   
  возврат   НаборЗаписей.MoveFirst();
конецфункции


текстзапроса2 = "select name from mybase";

Результат = Подключение(ТекстЗапроса2);
  пока результат.EOF() = 0 цикл
тзМестоХранения.НоваяСтрока();
тзМестоХранения.НеУчитывая =  результат.Fields("name").Value;
результат.MoveNext();
  сообщить(результат.Fields("name").Value);
  КонецЦикла;
    результат.Cancel();
    результат.Close();
Жми спасибо, если подсказал 8)

Последний раз редактировалось: BotMan; 18 Мар 2015, 14:34. Причина: Объединение сообщений

Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
Re: создание функции
« Ответ #6: 18 Мар 2015, 16:22 »
Функция которую вызывают, должна быть выше места, откуда эта функция вызывается. Иначе ее 1С не видит.

Если не хотите перемещать функцию то можно воспользоваться ключевым словом Далее (см. справку)
Добавлено: 18 Мар 2015, 16:23

И возвращать нужно не НаборЗаписей.MoveFirst();

а просто НаборЗаписей;

Оффлайн BotMan

  • *
  • Сообщений: 45
  • РЕПУТАЦИЯ: 1
  • КПД: 2%
  • Регистрация: 2014-06-05
  • Сайт: 
  • Профессия: Ученик 1С
Re: создание функции
« Ответ #7: 18 Мар 2015, 16:45 »
да спасибо, уже разобрался, методом тыка.
получается когда пишут код, то функции пишут в самом начале?
Жми спасибо, если подсказал 8)

Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
Re: создание функции
« Ответ #8: 18 Мар 2015, 19:08 »
получается когда пишут код, то функции пишут в самом начале?

необязательно. я же написал, что можно объявить название функции в начале модуля с ключевым словом далее (в справке все подробно расписано)


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
189 Сообщений
AIFrame AIFrame
81 Сообщений
alexandr_ll
41 Сообщений
BuhRust
29 Сообщений
wise wise
27 Сообщений
oleg-x
26 Сообщений
MuI_I_Ika MuI_I_Ika
25 Сообщений
pavl_vs
22 Сообщений
Кейли Кейли
21 Сообщений
andron81_81
20 Сообщений

* Кто онлайн

  • Точка Гостей: 134
  • Точка Скрытых: 0
  • Точка Пользователей: 0

Нет пользователей онлайн.

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal