Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Помогите функцию написать ! (число прочтений - 4473 )
Paranoid Android
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 76
Местоположение: Санкт-Петербург
Зарегистрирован: 10. Апреля 2007
Пол: Мужской
Помогите функцию написать !
05. Марта 2008 :: 14:22
Печать  
сообствено в первый раз

Подмигивание
запрос то я написал
единственная  строка в таблице и есть нужный результат !

     ТекстЗапроса="
     |SELECT  
     |  СпрН.Descr Наименование,
     |  $ПоследнееЗначение.Цены.Цена(СпрЦ.ID, :Кондата) Цена    
     |FROM
     |  $Справочник.Номенклатура СпрН
     |LEFT JOIN
     |  $Справочник.Цены СпрЦ ON СпрЦ.ParentExt = СпрН.ID AND
     |                           $СпрЦ.ТипЦен = :ТипЦен
     |WHERE СпрН.id=:ВыбНоменклатура
     |
     |";
нужно прочсто как тоо ввиде функции оформить


чтоб типа CREATE FUNCTION дайцену( ТипЦен ,номенклатура ,дата) типа как в 1с  Круглые глаза
  
Наверх
ICQ  
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Помогите функцию написать !
Ответ #1 - 05. Марта 2008 :: 14:24
Печать  
ТЗ = Рекордсет.ВыполнитьИнтрукцию(ТекстЗапроса);
Попытка
Ыыы = ТЗ.ПолучитьЗначение(1,1);
...
Улыбка
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Paranoid Android
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 76
Местоположение: Санкт-Петербург
Зарегистрирован: 10. Апреля 2007
Пол: Мужской
Re: Помогите функцию написать !
Ответ #2 - 05. Марта 2008 :: 14:26
Печать  
нет цену надо получать в запросе
и в нем же умножать на количество потом роллапом его суммировать
  
Наверх
ICQ  
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Помогите функцию написать !
Ответ #3 - 05. Марта 2008 :: 14:30
Печать  
А... не дочитал до конца Улыбка

CREATE FUNCTION MyFun (@Deci INT) RETURNS int
AS
begin
...
end
RETURN(@Res);
end


  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Paranoid Android
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 76
Местоположение: Санкт-Петербург
Зарегистрирован: 10. Апреля 2007
Пол: Мужской
Re: Помогите функцию написать !
Ответ #4 - 05. Марта 2008 :: 14:39
Печать  
непонял а что
RETURN(@Res) это что ?
  
Наверх
ICQ  
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Помогите функцию написать !
Ответ #5 - 05. Марта 2008 :: 14:47
Печать  
Вот пример полезной для одинэснега функции, разбирайся:

Код
Выбрать все
	|CREATE FUNCTION Convert36To10(@Res36 CHAR(9)) RETURNS int
	|AS
	|begin
	|DECLARE @j INT
	|DECLARE @Deci INT
	|DECLARE @Arr36 CHAR(36)
	|SELECT @Arr36 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
	|SELECT @Deci = 0
	|SELECT @j = 1
	|while @j <= LEN(LTRIM(RTRIM(@Res36)))
	|begin
	|if @j <> 1
	|SELECT @Deci = @Deci*36
	|SELECT @Deci = @Deci + CHARINDEX(SUBSTRING(LTRIM(RTRIM(@Res36)), @j,1),@Arr36) -1
	|SELECT @j = @j+1
	|end
	|RETURN(@Deci);
	|end

 

  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Помогите функцию написать !
Ответ #6 - 05. Марта 2008 :: 14:48
Печать  
Вот:
Не мое!
Это Садовникова.Но думаю поможет.

Код
Выбрать все
Функция ОпределитьНеобходимостьСозданияФункции(ИмяФункцииВSQL, СоздаватьФункцию)
	Создаватьфункцию = 0;

	ТекстЗапроса = "
	| Set NoCount ON
	| Select ISNULL(OBJECT_ID('dbo."+ИмяФункцииВSQL+"'),0)
	| ";

	РезЗапроса = ВыполнитьЗапрос(ТекстЗапроса, "При выполнении запроса на поиск функции <<"+ИмяФункцииВSQL+">> произошла ошибка!");

	Если РезЗапроса = "##Ошибка##" Тогда
		Возврат 0;
	ИначеЕсли РезЗапроса = 0 Тогда
		СоздаватьФункцию = 1;
	иначе
		Если фПересоздавать = 1 Тогда
			ТекстЗапроса = "Set NoCount ON
			|DROP FUNCTION dbo."+ИмяФункцииВSQL;
			РезЗапроса = ВыполнитьЗапрос(ТекстЗапроса, "При выполнении запроса на удалении функции <<"+ИмяФункцииВSQL+">> произошла ошибка!");
			Если РезЗапроса = "##Ошибка##" Тогда
				Возврат 0;
			КонецЕсли;
			СоздаватьФункцию = 1;
		КонецЕсли;
	КонецЕсли;

	Возврат 1;
КонецФункции
//*******************************************
Процедура Сформировать()

КонецПроцедуры

Функция СоздатьФункцию(ИмяФункции, ТекстЗапроса)
	Перем СоздаватьФункцию;

	Если ОпределитьНеобходимостьСозданияФункции(ИмяФункции, СоздаватьФункцию) = 0 Тогда
		Возврат 0;
	КонецЕсли;

	Если СоздаватьФункцию = 1 Тогда
		РезЗапроса = ЗапросСКЛ.Выполнить(ТекстЗапроса);
		Если РезЗапроса <> 1 Тогда
			Сообщить("При выполнении запроса на создание функции <<"+ИмяФункции+">> произошла ошибка!", "!!!");
			Сообщить(ЗапросСКЛ.ПолучитьОписаниеОшибки());
			Возврат 0;
		КонецЕсли;
	КонецЕсли;

	Возврат 1;
КонецФункции

Думаю дальше  сам разберешься?
Это спасибо Садовникову.
 

  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Помогите функцию написать !
Ответ #7 - 05. Марта 2008 :: 14:49
Печать  
Я так думаю принцип понятен?
  
Наверх
 
IP записан
 
Paranoid Android
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 76
Местоположение: Санкт-Петербург
Зарегистрирован: 10. Апреля 2007
Пол: Мужской
Re: Помогите функцию написать !
Ответ #8 - 06. Марта 2008 :: 07:30
Печать  
varelchik ясно спасибо очень пригодится !! Класс

все вот одно не понял:
мой код выдаст табличку типа
номенклатура                               цена
Сигареты L&M X-Slims Linx 21-00 | 173.3

как сделать так   @Deci = цена
чего тоя не догоняю 
вопрос то тупой я поинмаю


  
Наверх
ICQ  
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Помогите функцию написать !
Ответ #9 - 06. Марта 2008 :: 08:16
Печать  
ТекстЗапроса="
|CREATE FUNCTION ДайЦену(@идТипЦен Char(9), @идНоменклатура Char(9), @Дата Char(8)) Returns Numeric (19, 2)
|BEGIN
|
|      Declare @Цена Numeric (19, 2)
|
|      SELECT Top 1
|        @Цена = $ПоследнееЗначение.Цены.Цена(СпрЦ.ID, @Дата)
|      FROM
|        $Справочник.Номенклатура СпрН
|      LEFT JOIN
|        $Справочник.Цены СпрЦ ON СпрЦ.ParentExt = СпрН.ID AND --Это что такое??
|                                 $СпрЦ.ТипЦен = @идТипЦен
|      WHERE СпрН.id=@идНоменклатура
|
|      Return @Цена
|END
|";

  
Наверх
 
IP записан
 
Paranoid Android
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 76
Местоположение: Санкт-Петербург
Зарегистрирован: 10. Апреля 2007
Пол: Мужской
Re: Помогите функцию написать !
Ответ #10 - 06. Марта 2008 :: 08:49
Печать  
Гениально 
с меня пиво (Если ты В Питере)  Улыбка


$Справочник.Цены СпрЦ ON СпрЦ.ParentExt = СпрН.ID AND       $СпрЦ.ТипЦен = @идТипЦен 
это условие в соединении

СПАСИБО !
  
Наверх
ICQ  
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Помогите функцию написать !
Ответ #11 - 06. Марта 2008 :: 08:54
Печать  
Цитата:
Гениально  
с меня пиво (Если ты В Питере)  Улыбка


$Справочник.Цены СпрЦ ON СпрЦ.ParentExt = СпрН.ID AND       $СпрЦ.ТипЦен = @идТипЦен  
это условие в соединении

СПАСИБО !


Я имел ввиду, зачем делать запрос по справочнику номенклатуры, если ты из него ничего не берешь? Тебе достаточно справочника цен.
  
Наверх
 
IP записан
 
Paranoid Android
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 76
Местоположение: Санкт-Петербург
Зарегистрирован: 10. Апреля 2007
Пол: Мужской
Re: Помогите функцию написать !
Ответ #12 - 06. Марта 2008 :: 11:11
Печать  
GivePrice' is not a recognized built-in function name

написала  Плачущий

вот как к ней обращатся то ?
  
Наверх
ICQ  
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Помогите функцию написать !
Ответ #13 - 06. Марта 2008 :: 11:25
Печать  
Select dbo.GivePrice(....
  
Наверх
 
IP записан
 
Paranoid Android
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 76
Местоположение: Санкт-Петербург
Зарегистрирован: 10. Апреля 2007
Пол: Мужской
Re: Помогите функцию написать !
Ответ #14 - 06. Марта 2008 :: 11:26
Печать  
точно!
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать