Имя: Пароль:
1C
1С v8
КД. При выгрузке вылетает ошибка СУБД.
0 espanol
 
23.03.12
09:41
Начало выгрузки:   23.03.12 09:38:03
Ошибка исполнения обработчика:  ПВД_ПередОбработкойПравила_ИзменениеЦен
 - State 42000, native 8114, message [Microsoft][ODBC SQL Server Driver][SQL Server]Error converting data type varchar to numeric.
Выгружено объектов:   0
Окончание выгрузки:   23.03.12 09:38:03


Выгружаю цены, при выгрузке указываю параметр, какой тип цены выгружать.
Все типы цен кроме одного выгружаются нормально. А последняя выдает ошибку вот эту. В чем может быть причина?
1 espanol
 
23.03.12
10:21
Может кто все таки знает?  Вот запрос:


   КатегорияЦены = Параметры.ПараметрыАлгоритмов;

   Запрос = СоздатьОбъект("ODBCRecordSet");
   
   ТекстЗапроса= "
   |SELECT              
   |    Номенклатура.ID                                    as    [Номенклатура        $Справочник.Номенклатура]
   |,    Цены.CODE                                        as    [Код                $Строка]
   |,    $Цены.Валюта                                    as    [Валюта                $Справочник.Валюты]
   |,    $Цены.КатегорияЦены                                as    [КатегорияЦены        $Справочник.КатегорииЦен]
   |,    $ПоследнееЗначение.Цены.Цена(Цены.ID, :ВыбДата) as    [Цена                $Число]
   |FROM
   |    $Справочник.Цены Цены
   |INNER JOIN
   |    $Справочник.Номенклатура Номенклатура ON Цены.ParentExt = Номенклатура.ID
   |WHERE
   |    $Цены.КатегорияЦены = :КатегорияЦены
   |ORDER BY
   |    $Цены.КатегорияЦены
   |,    Цены.CODE
   |";
         
   Запрос.УстановитьТекстовыйПараметр("ВыбДата",       ТекущаяДата());
   Запрос.УстановитьТекстовыйПараметр("КатегорияЦены", КатегорияЦены);
   
   РезультатЗапроса = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
2 espanol
 
23.03.12
10:55
Дело только в этой строке: $ПоследнееЗначение.Цены.Цена(Цены.ID, :ВыбДата)
Я так думаю это проблема с MSSQLSERVER2005... но как исправить чтобы работало, неужели никто не знает?
3 zva
 
23.03.12
10:57
Скорей всего там isnull нужно добавить, на нужную дату цены не было
4 МихаилМ
 
23.03.12
11:01
что-то сомневаюсь,
1с8
поддерживает работу компоненты 1с++

1с++

может выдать TSQL текст

выложите его сюда.
5 espanol
 
23.03.12
11:08
(4) Я в 1С 7.7 делаю:


SELECT              
   Номенклатура.ID                                    as    [Номенклатура        $Справочник.Номенклатура]
,    Цены.CODE                                        as    [Код                $Строка]
,    Цены.sp4594                                    as    [Валюта                $Справочник.Валюты]
,    Цены.sp585                                as    [КатегорияЦены        $Справочник.КатегорииЦен]
,    (
select top 1
cast(c588_vv.value as numeric(17, 2))
from
_1sconst as c588_vv (nolock)
where
c588_vv.id = 588 and
c588_vv.objid = Цены.ID and
(c588_vv.date <= '20120323')
order by c588_vv.date desc, c588_vv.time desc, c588_vv.docid desc, c588_vv.row_id desc
) as    [Цена                $Число]
FROM
   sc590 Цены
INNER JOIN
   sc270 Номенклатура ON Цены.ParentExt = Номенклатура.ID
WHERE
   Цены.sp585 = '     3   '
ORDER BY
   Цены.sp585
,    Цены.CODE
6 espanol
 
23.03.12
11:08
Видимо на этой херне падает: cast(c588_vv.value as numeric(17, 2))
7 МихаилМ
 
23.03.12
11:11
это понятно.

ну сосмотрите что вернет сей код без каста
8 espanol
 
23.03.12
11:21
Ошибка исполнения обработчика:  ПВД_ПередОбработкойПравила_ИзменениеЦен
 - State 42000, native 170, message [Microsoft][ODBC SQL Server Driver][SQL Server]Line 9: Incorrect syntax near '('.
Выгружено объектов:   0
Окончание выгрузки:   23.03.12 11:19:46



|SELECT              
|    Номенклатура.ID                                    as    [Номенклатура        $Справочник.Номенклатура]
|,    Цены.CODE                                        as    [Код                $Строка]
|,    Цены.sp4594                                    as    [Валюта                $Справочник.Валюты]
|,    Цены.sp585                                as    [КатегорияЦены        $Справочник.КатегорииЦен]
|,    (
|select top 1
//|cast(c588_vv.value as numeric(17, 2))
|c588_vv.value as numeric(17, 2)
|from
|_1sconst as c588_vv (nolock)
|where
|c588_vv.id = 588 and
|c588_vv.objid = Цены.ID and
|(c588_vv.date <= '20120323')
|order by c588_vv.date desc, c588_vv.time desc, c588_vv.docid desc, c588_vv.row_id desc
|) as    [Цена                $Число]
|FROM
|    sc590 Цены
|INNER JOIN
|    sc270 Номенклатура ON Цены.ParentExt = Номенклатура.ID
|WHERE
|    Цены.sp585 = '     3   '
|ORDER BY
|    Цены.sp585
|,    Цены.CODE
|";
9 espanol
 
23.03.12
11:22
чета не пойму откуда эта ошибка....
10 espanol
 
23.03.12
11:23
ай туплю, убрать  as numeric(17, 2) забыл
11 espanol
 
23.03.12
11:24
вроде как выгружает, но выгружать будет часа 2
12 zva
 
23.03.12
11:25
а _1sconst - что за таблица?
13 espanol
 
23.03.12
11:28
(12) цены вроде как
14 zva
 
23.03.12
11:30
NULL там нигде нет?
15 espanol
 
23.03.12
11:33
(14) как это узнать?
Закон Брукера: Даже маленькая практика стоит большой теории.