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


1C++ rocks!

Сообщений: 52
Зарегистрирован: 29. Декабря 2010
Помогите разобраться с ошибкой
21. Марта 2011 :: 12:34
Печать  
выскакивает следующая ошибка - Для типизации поля "Докум", не найдено дополнительное типизирующее поле.
Есть подозрение что в поле Докум_вид натыкается на 0 и выдает такую ошибку. как бы обойти это?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Помогите разобраться с ошибкой
Ответ #1 - 21. Марта 2011 :: 12:39
Печать  
Пиши полностью текст запроса.
iddocdef  не может быть равно 0.
  
Наверх
 
IP записан
 
JBoy
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 52
Зарегистрирован: 29. Декабря 2010
Re: Помогите разобраться с ошибкой
Ответ #2 - 21. Марта 2011 :: 12:44
Печать  
                 |      select
                 |                  Рег.СвойствоКонтр as [СвойствоКонтр $Справочник.ЗначенияСвойств],
                 |                  Рег.Комиссионер as [Комиссионер $Справочник.Контрагенты],
                 |                  MAX(Рег.ВидДок) as Докум_Вид,
                 |                  Рег.Докум as [Докум $Документ],
                 |                  GROUPING(Рег.СвойствоКонтр) as ИтогПоСвойствоКонтр,
                 |                  GROUPING(Рег.Комиссионер) as ИтогПоКомиссионер,
                 |                  GROUPING(Рег.Докум) as ИтогПоДокум,
                 |                  sum(Рег.СуммаОстаток) as НачОстС,
                 |                  sum(Рег.СуммаПриход) as ПриходС,
                 |                  sum(Рег.РасходС) as РасходС,
                 |                  sum(Рег.СуммаОстаток) + sum(Рег.СуммаПриход) - sum(Рег.СуммаРасход) as КонОстС,
                 |                  sum(Рег.РасходСФикт) as РасходСФикт,
                 |                  0 as НалНачОст,
                 |                  0 as НалПриход,
                 |                  0 as НалРасход,
                 |                  0 as НалКонОст,
                 |                  0 as БНалПриход,
                 |                  0 as БНалРасход,
                 |                  0 as БНалВознаг,
                 |                  0 as ТрУПриход,
                 |                  0 as ТрУРасход
                 |      from (
                 |            select
                 |                        $Рг.Фирма as Фирма,
                 |                        $Рг.ФиктивныйВозврат as ФиктивныйВозврат,
                 |                        $Фирмы.УпрАналитика as УпрАналитика,
                 |                        $Фирмы.ЮрЛицо as ЮрЛицо,
                 |                        $Рг.Договор as Договор,
                 |                        Договоры.ParentExt as Комиссионер,
                 |                        $СвойстваКонтрагентов.ЗначениеСвойства as СвойствоКонтр,
                 |                        $Рг.КодОперации as КодОперации,
                 |                        RIGHT(Рг.iddoc,9) as Докум,
                 |                        Жур.IDDocDef as ВидДок,
                 |                        (1-Рг.debkred)* $Рг.ПродСтоимость as СуммаПриход,
                 |                        (Рг.debkred)* $Рг.ПродСтоимость as СуммаРасход,
                 |                        CASE WHEN $Рг.ФиктивныйВозврат = 1 THEN (Рг.debkred)* $Рг.ПродСтоимость ELSE 0 END as РасходСФикт,
                 |                        CASE WHEN ($Рг.ФиктивныйВозврат = 0 OR $Рг.ФиктивныйВозврат = 2) THEN (Рг.debkred)* $Рг.ПродСтоимость ELSE 0 END as РасходС,
                 |                        0 as СуммаОстаток
                 |            from $Регистр.ПартииОтданные as Рг (nolock)
                 |            inner join $Справочник.Договоры as Договоры (nolock) on Договоры.ID = $Рг.Договор
                 |            inner join $Справочник.Контрагенты as Контрагенты (nolock) on Контрагенты.ID = Договоры.ParentExt
                 |            inner join $Справочник.СвойстваКонтрагентов as СвойстваКонтрагентов (nolock) on СвойстваКонтрагентов.ID = $Контрагенты.ОсновноеСвойство
                 |            inner join $Справочник.Фирмы as Фирмы (nolock) on Фирмы.ID = $Рг.Фирма
                 |            inner join _1sjourn as Жур (nolock) on Жур.iddoc = Рг.iddoc
                 |            where Жур.date_time_iddoc > :НачДата and Жур.date_time_iddoc < :КонДата~
                 |                        and Жур.rf351 = 0x1
                 |                        and $Рг.КодОперации <> $Перечисление.КодыОпераций.ОтчетРеализатора
                 |                        and NOT (Договоры.ParentExt IN (SELECT Val FROM #Отработанные))
                 |            union all
                 |            select 
                 |                        $Рг.Фирма,
                 |                        0,
                 |                        $Фирмы.УпрАналитика,
                 |                        $Фирмы.ЮрЛицо,
                 |                        $Рг.Договор,
                 |                        Договоры.ParentExt,
                 |                        $СвойстваКонтрагентов.ЗначениеСвойства,
                 |                        '',
                 |                        '',
                 |                        '',
                 |                        0,
                 |                        0,
                 |                        0,
                 |                        0,
                 |                        $Рг.ПродСтоимость
                 |            from $РегистрИтоги.ПартииОтданные as Рг (nolock)
                 |            inner join $Справочник.Договоры as Договоры (nolock) on Договоры.ID = $Рг.Договор
                 |            inner join $Справочник.Контрагенты as Контрагенты (nolock) on Контрагенты.ID = Договоры.ParentExt
                 |            inner join $Справочник.СвойстваКонтрагентов as СвойстваКонтрагентов (nolock) on СвойстваКонтрагентов.ID = $Контрагенты.ОсновноеСвойство
                 |            inner join $Справочник.Фирмы as Фирмы (nolock) on Фирмы.ID = $Рг.Фирма
                 |            where Рг.period= :ПредМес
                 |                        and NOT (Договоры.ParentExt IN (SELECT Val FROM #Отработанные))
                 |            union all
                 |            select 
                 |                        $Рг.Фирма,
                 |                        $Рг.ФиктивныйВозврат,
                 |                        $Фирмы.УпрАналитика,
                 |                        $Фирмы.ЮрЛицо,
                 |                        $Рг.Договор,
                 |                        Договоры.ParentExt,
                 |                        $СвойстваКонтрагентов.ЗначениеСвойства,
                 |                        $Рг.КодОперации,
                 |                        '',
                 |                        '',
                 |                        0,
                 |                        0,
                 |                        0,
                 |                        0,
                 |                        $Рг.ПродСтоимость * (1 - Рг.debkred * 2)
                 |            from $Регистр.ПартииОтданные as Рг (nolock)
                 |            inner join $Справочник.Договоры as Договоры (nolock) on Договоры.ID = $Рг.Договор
                 |            inner join $Справочник.Контрагенты as Контрагенты (nolock) on Контрагенты.ID = Договоры.ParentExt
                 |            inner join $Справочник.СвойстваКонтрагентов as СвойстваКонтрагентов (nolock) on СвойстваКонтрагентов.ID = $Контрагенты.ОсновноеСвойство
                 |            inner join $Справочник.Фирмы as Фирмы (nolock) on Фирмы.ID = $Рг.Фирма
                 |            inner join _1sjourn as Жур (nolock) on Жур.iddoc = Рг.iddoc
                 |            where Жур.date_time_iddoc > :НачМес and Жур.date_time_iddoc < :ПредДата
                 |                        and Жур.rf351 = 0x1
                 |                        and $Рг.КодОперации <> $Перечисление.КодыОпераций.ОтчетРеализатора
                 |                        and NOT (Договоры.ParentExt IN (SELECT Val FROM #Отработанные))
                 |            ) as Рег
                 |      GROUP BY
                 |            Рег.СвойствоКонтр, Рег.Комиссионер,      Рег.Докум WITH ROLLUP
                 |select
                 |            Рег.СвойствоКонтр,
                 |            Рег.Комиссионер,
                 |            MAX(Рег.Док_Вид),
                 |            Рег.Докум,
                 |            GROUPING(Рег.СвойствоКонтр),
                 |            GROUPING(Рег.Комиссионер),
                 |            GROUPING(Рег.Докум),
                 |            0,
                 |            0,
                 |            0,
                 |            0,
                 |            0,
                 |            sum(Рег.НалНачОст),
                 |            sum(Рег.НалПриход),
                 |            sum(Рег.НалРасход),
                 |            sum(Рег.НалНачОст) + sum(Рег.СуммаПриход) - sum(Рег.СуммаРасход),
                 |            sum(Рег.БНалПриход),
                 |            sum(Рег.БНалРасход),
                 |            sum(Рег.БНалВознаг),
                 |            sum(Рег.ТрУПриход),
                 |            sum(Рег.ТрУРасход)
                 |from (select
                 |                  $Рг1.Фирма as Фирма,
                 |                  $Фирмы.УпрАналитика as УпрАналитика,
                 |                  $Фирмы.ЮрЛицо as ЮрЛицо,
                 |                  $Рг1.Договор as Договор,
                 |                  Договоры.ParentExt as Комиссионер,
                 |                  $СвойстваКонтрагентов.ЗначениеСвойства as СвойствоКонтр,
                 |                  $Рг1.КодОперации as КодОперации,
                 |                  Жур.IDDocDef as Док_Вид,
                 |                  RIGHT(Рг1.iddoc,9) as Докум,
                 |                  (1-Рг1.debkred)* $Рг1.СуммаУпр as Су
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите разобраться с ошибкой
Ответ #3 - 21. Марта 2011 :: 12:45
Печать  
JBoy писал(а) 21. Марта 2011 :: 12:34:
выскакивает следующая ошибка - Для типизации поля "Докум", не найдено дополнительное типизирующее поле.
Есть подозрение что в поле Докум_вид натыкается на 0 и выдает такую ошибку. как бы обойти это?


должно быть поле в селекте:

чтото as [Докум $Документ]
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите разобраться с ошибкой
Ответ #4 - 21. Марта 2011 :: 12:46
Печать  
   MAX(Рег.ВидДок) as Докум_вид,
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите разобраться с ошибкой
Ответ #5 - 21. Марта 2011 :: 12:50
Печать  
+ половину inner join  нужно заменить на left join, там , где нет фильтра на присоединяемую таблицу.
  
Наверх
 
IP записан
 
JBoy
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 52
Зарегистрирован: 29. Декабря 2010
Re: Помогите разобраться с ошибкой
Ответ #6 - 21. Марта 2011 :: 13:30
Печать  
Исправил Докум_Вид на Докум_вид, помогло... Не совсем понял с join-ами - если есть условие по присоединяемой таблице то left, иначе inner ?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите разобраться с ошибкой
Ответ #7 - 21. Марта 2011 :: 13:41
Печать  
ну , вот ты делаешь
inner join $Справочник.Фирмы as Фирмы (nolock) on Фирмы.ID = $Рг.Фирма

и потом нет нигде условия на фирму (ни в ветке where,  ни в условии соединения), следовательно, заместо inner лучше использовать left join
  
Наверх
 
IP записан
 
JBoy
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 52
Зарегистрирован: 29. Декабря 2010
Re: Помогите разобраться с ошибкой
Ответ #8 - 21. Марта 2011 :: 14:03
Печать  
просто фильтры еще не прилепил....пока сделал так как есть...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите разобраться с ошибкой
Ответ #9 - 21. Марта 2011 :: 14:06
Печать  
Да, и непонятно, почему ты не пользуешься виртуальными табличками.. типа ОстанкиИОбороты..
  
Наверх
 
IP записан
 
JBoy
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 52
Зарегистрирован: 29. Декабря 2010
Re: Помогите разобраться с ошибкой
Ответ #10 - 21. Марта 2011 :: 15:17
Печать  
в виртуальных таблицах не совсем правильно показываются начальные остатки по группировке документ...и потом ессно пляшут и конечные остатки...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите разобраться с ошибкой
Ответ #11 - 21. Марта 2011 :: 15:22
Печать  
JBoy писал(а) 21. Марта 2011 :: 15:17:
в виртуальных таблицах не совсем правильно показываются начальные остатки по группировке документ...и потом ессно пляшут и конечные остатки...


Эээ.. а в чем их "неправильность"  ?
  
Наверх
 
IP записан
 
JBoy
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 52
Зарегистрирован: 29. Декабря 2010
Re: Помогите разобраться с ошибкой
Ответ #12 - 21. Марта 2011 :: 15:25
Печать  
у меня возник вопрос другого плана - как исключить группировку Докум из внешнего селекта? т.е. выводил бы документы, но не выводил бы итоги по этой группировке
  
Наверх
 
IP записан
 
JBoy
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 52
Зарегистрирован: 29. Декабря 2010
Re: Помогите разобраться с ошибкой
Ответ #13 - 21. Марта 2011 :: 15:27
Печать  
Eprst писал(а) 21. Марта 2011 :: 15:22:
JBoy писал(а) 21. Марта 2011 :: 15:17:
в виртуальных таблицах не совсем правильно показываются начальные остатки по группировке документ...и потом ессно пляшут и конечные остатки...


Эээ.. а в чем их "неправильность"  ?

см последний пост http://www.1cpp.ru/forum/YaBB.pl?num=1297841583/15#15
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Помогите разобраться с ошибкой
Ответ #14 - 22. Марта 2011 :: 05:19
Печать  
Eprst писал(а) 21. Марта 2011 :: 13:41:
ну , вот ты делаешь
inner join $Справочник.Фирмы as Фирмы (nolock) on Фирмы.ID = $Рг.Фирма

и потом нет нигде условия на фирму (ни в ветке where,  ни в условии соединения), следовательно, заместо inner лучше использовать left join


Сам по себе Inner Join уже накладывает условие на Фирму.
Как минимум, Фирма != $ПустойИД (а так же Фирма is Not Null - но скорее всего, НУЛЛом она не будет и так).
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать