powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / конвертаиция в число в 1С
7 сообщений из 7, страница 1 из 1
конвертаиция в число в 1С
    #37576046
_radomir_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Есть такой запрос в 1с
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 переменая=56322.65;
	 
	ЗапросSQLВыб4="
					|SELECT     top 1 range , discount
					|FROM         discount_size
					|WHERE     (range < cast('"+переменая+"' as decimal(18,2)) ) 
					|order by range desc ";	
										

	ЗапросВыб4.CommandText = ЗапросSQLВыб4;                             
	Рез4=ЗапросВыб4.Execute();


Ругается
{ОбщийМодуль.ПроцедурыГКмастер(4803)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Error converting data type varchar to numeric.
Рез4=ЗапросВыб4.Execute();
...
Рейтинг: 0 / 0
конвертаиция в число в 1С
    #37576223
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глупый вопрос - а переменая=56322,65 - вот так?
...
Рейтинг: 0 / 0
конвертаиция в число в 1С
    #37576230
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точнее так:
cast(переменая)
...
Рейтинг: 0 / 0
конвертаиция в число в 1С
    #37576780
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используйте параметры ПАРАМЕТРЫ!
Код: sql
1.
2.
3.
4.
5.
6.
ЗапросSQLВыб4="
|SELECT     top 1 range , discount
|FROM discount_size
|WHERE     range < ?
|order by range desc
|"


Обратить внимание на ? это есть наш параметр.
Используется ADODB.Command
Код: sql
1.
2.
3.
4.
5.
ЗапросВыб4.CommandType = 1;
ЗапросВыб4.CommandText = ЗапросSQLВыб4;
ЗапросВыб4.Parameters.Refresh();
ЗапросВыб4.Parameters.Item(0).Value = 56322.65;
Рез4 = ЗапросВыб4.Execute();
...
Рейтинг: 0 / 0
конвертаиция в число в 1С
    #37577832
_radomir_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XenoX, а вот в этом запросе как параметры передавать? пишет что
{ОбщийМодуль.ПроцедурыГКмастер(4863)}: Ошибка при вызове метода контекста (Item): Произошла исключительная ситуация (ADODB.Parameters): Не удается найти объект в семействе, соответствующий требуемому имени или порядковому номеру. ЗапросВыб4.Parameters.Item(1).Value = дисконт_сизе;


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
ЗапросSQLВыб5="
					|If Exists
					|(
					|SELECT     discount_size.discount, cards_discount.discount_size                      
					|FROM         discount_size Cross JOIN
					|                     cards_discount
					|where ( ? < ? ) 
					|)
					|return
					|ELSE 
					| IF EXISTS 
					|(
					|SELECT     cards_discount.discount_size, cards_discount.date_start, cards_discount.date_end, cards_discount.code_1c82                      
					|FROM cards_discount
					|where cards_discount.date_end is Null 
					|)
					|begin
					|update cards_discount SET date_end =CONVERT(DATETIME, '"+Формат(Дата(ДатаДока-1),"ДФ=yyyy-MM-dd")+"',102)
					|insert into cards_discount(date_start,code_1c82,discount_size,date_end) values(CONVERT(DATETIME, '"+Формат(Дата(ДатаДока),"ДФ=yyyy-MM-dd")+"',102), ? ,? , Null)
					|END";	
										

	ЗапросВыб5.CommandText = ЗапросSQLВыб5; 
	ЗапросВыб4.Parameters.Refresh();
	ЗапросВыб4.Parameters.Item(0).Value = дисконт;
	ЗапросВыб4.Parameters.Item(1).Value = дисконт_сизе;
	ЗапросВыб4.Parameters.Item(2).Value = коде_дисконт_1с82;
	ЗапросВыб4.Parameters.Item(3).Value = дисконт;

	Рез5=ЗапросВыб5.Execute();
...
Рейтинг: 0 / 0
конвертаиция в число в 1С
    #37578284
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Показите значение ваших переменных
2) оч. смущает конструкция
Код: sql
1.
where (? < ?)


3)
Код: sql
1.
CONVERT(DATETIME, '"+Формат(Дата(ДатаДока-1),"ДФ=yyyy-MM-dd")


Тоже спокойно можно заменить на параметры.

Ощущение такое, что запрос не может нормально подготовится, посему не создается нужное количество параметров.
...
Рейтинг: 0 / 0
конвертаиция в число в 1С
    #37579340
_radomir_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XenoX,
первоначально запрос имел такой вид

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
ЗапросSQLВыб5="
					|If Exists
					|(
					|SELECT     discount_size.discount, cards_discount.discount_size                      
					|FROM         discount_size Cross JOIN
					|                     cards_discount
					|where ('"+дисконт+"' < '"+дисконт_сизе+"') 
					|)
					|return
					|ELSE 
					| IF EXISTS 
					|(
					|SELECT     cards_discount.discount_size, cards_discount.date_start, cards_discount.date_end, cards_discount.code_1c82                      
					|FROM cards_discount
					|where cards_discount.date_end is Null 
					|)
					|begin
					|update cards_discount SET date_end =CONVERT(DATETIME, '"+Формат(Дата(ДатаДока-1),"ДФ=yyyy-MM-dd")+"',102)
					|insert into cards_discount(date_start,code_1c82,discount_size,date_end) values(CONVERT(DATETIME, '"+Формат(Дата(ДатаДока),"ДФ=yyyy-MM-dd")+"',102),'"+коде_дисконт_1с82+"','"+дисконт+"', Null)
					|END";	

ЗапросВыб5.CommandText = ЗапросSQLВыб5; 		
Рез5=ЗапросВыб5.Execute();


Вы написали, что можно работать параметрами тоесть вместо where ('"+дисконт+"' < '"+дисконт_сизе+"') как я понял писать where (? < ?). Как в 1с в запросе sql использовать множество этих параметров?Значения дисконт и дисконт_сизе соответственно числовые.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / конвертаиция в число в 1С
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]