Переключение на Главную Страницу Страницы: 1 ... 30 31 [32] 33 34 ... 51 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" - обсуждения. Часть № 2. (число прочтений - 245617 )
artamir
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 58
Зарегистрирован: 03. Мая 2011
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #465 - 02. Ноября 2012 :: 09:42
Печать  
Только собрался перевести 1С из дбф на MSSQL, как натолкнулся на грабли Печаль

Версия ПрямогоЗапроса = 1.8.5 23.05.2012

ТекстЗапроса = "
                 |ВЫБРАТЬ
                 |            $ж_Билет.ТекущийДокумент      КАК [Документ            $Документ.Билет                        ]
                 |      ,      $д_Билет.Агент                        КАК [Агент                  $Справочник.Сотрудники            ]
                 |      ,      $д_Билет.АгентБронь                  КАК      [АгентБронь            $Справочник.Сотрудники            ]
                 |      ,      $д_Билет.Компания                  КАК      [Авиакомпания      $Справочник.Контрагенты            ]
                 |      ,      $д_Билет.Покупатель                  КАК      [Пасажир            $Справочник.Контрагенты            ]
                 |      ,      $д_Билет.Авиакасса                  КАК      [Покупатель            $Справочник.Контрагенты            ]
                 |      ,      $д_Билет.Статус                        КАК      [Статус                  $Перечисление.СтатусБилета      ]
                       
                 |      ,      $д_Билет.БазовыйТарифСум            КАК      [БазовыйТариф_Сум      $Число]
                 |      ,      $д_Билет.БазовыйТарифСумВал            КАК      [БазовыйТариф_Вал      $Число]
                 |      ,      $д_Билет.Таксы_ИтогЛей                  КАК      [Таксы_Сум                  $Число]
                 |      ,      $д_Билет.Таксы_ИтогВал                  КАК      [Таксы_Вал                  $Число]
                 |      ,      $д_Билет.ПеняЛей                        КАК      [Пеня_Сум                  $Число]
                 |      ,      $д_Билет.ПеняВал                        КАК      [Пеня_Вал                  $Число]

                 |      ,      $д_Билет.СумКомЛей                        КАК      [КомБрутто_Сум            $Число]
                 |      ,      $д_Билет.СумКомВал                        КАК      [КомБрутто_Вал            $Число]
                 |      ,      $д_Билет.СумКомЛейСубагентов      КАК      [КомСкидки_Сум            $Число]
                 |      ,      $д_Билет.СумКомВалСубагентов      КАК      [КомСкидки_Вал            $Число]
                 
                 |      ,      $д_Билет.СервисФи                        КАК      [СерФиБрутто_Сум      $Число]
                 |      ,      $д_Билет.СервисФиВал                  КАК      [СерФиБрутто_Вал      $Число]
                 |      ,      $д_Билет.СкидкаСервисФи                  КАК      [СерФиСкидки_Сум      $Число]
                 |      ,      $д_Билет.СкидкаСервисФиВал            КАК      [СерФиСкидки_Вал      $Число]
                 
                 |      ,      $д_Билет.ТаксаХХ                        КАК      [ТаксыХХ_Сум            $Число]
                 |      ,      $д_Билет.ТаксаХХВал                        КАК      [ТаксыХХ_Вал            $Число]
                 
                 |ИЗ
                 |      ЖурналДокументов      КАК ж_Билет $nolock
                 
                 |ВНУТРЕННЕЕ СОЕДИНЕНИЕ
                 |      Документ.Билет      КАК      д_Билет $nolock
                 |ПО
                 |      $д_Билет.ТекущийДокумент = $ж_Билет.ТекущийДокумент      
                 
                 |ГДЕ
                 |      $ж_Билет.Проведен = 1
                 |И
                 |";

ПрямойЗапрос ругается на выделенную строку Печаль

ПрямойЗапрос::Выполнить(Строка ТипОбъекта=ИндексированнаяТаблица, Строка ТекстВыполнения=, Число БезПодготовки=0) : Ошибка типизации поля Документ            $Документ.Билет                        .
ЗапросODBC.ВыполнитьИнструкцию(ТекстЗапроса,ПолучательЗапроса,1);
{D:\1s_file\1SSQL\SystemData\Classes\ПрямыеЗапросы\ПрямойЗапрос.ert(13484) }


Причем в ДБФ версии все нормально
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #466 - 02. Ноября 2012 :: 09:46
Печать  
табуляцию выкини из текста запроса
  
Наверх
 
IP записан
 
artamir
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 58
Зарегистрирован: 03. Мая 2011
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #467 - 02. Ноября 2012 :: 09:47
Печать  
Без табуляции некрасиво Печаль
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #468 - 02. Ноября 2012 :: 09:48
Печать  
есть пробелы
  
Наверх
 
IP записан
 
artamir
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 58
Зарегистрирован: 03. Мая 2011
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #469 - 02. Ноября 2012 :: 10:06
Печать  
Пробелы - это не совсем то Печаль

Не очень красиво, зато РАБОТАЕТ  Очень довольный

СПАСИБО!
  
Наверх
 
IP записан
 
Igor YN
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 13. Мая 2011
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #470 - 04. Ноября 2012 :: 15:34
Печать  
Опять в ОстаткиОбороты выдает
ПрямойЗапрос::ПолучитьТипКолонки(Метаданные МетаРеквизит=, Строка Тип=, Строка Вид=, Число Длина=-1, Число Точность=-1) : Поле агрегатного объекта не обнаружено
Тип = МетаРеквизит.Тип;
{D:\Тест планы Август\Classes\ПрямойЗапрос.ert(265) }
Что делать? Релиз прследний.
Если кто в теме - выдам текст запроса...
  
Наверх
 
IP записан
 
Igor YN
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 13. Мая 2011
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #471 - 04. Ноября 2012 :: 18:14
Печать  
Предыдущую ошибку исправил (ответ нашел на форуме)
Зато появилась ещё одна:
     ТекстЗапроса = "
     |ВЫБРАТЬ
     |ОЗ.Менеджер        КАК [Менеджер     $Справочник.Сотрудники],
     |ОЗ.Покупатель      КАК [Покупатель   $Справочник.Покупатели],
     |ОЗ.Заказ           КАК [Заказ        $Документ],
     |ОЗ.Номенклатура    КАК [Номенклатура $Справочник.Номенклатура],
     |ОЗ.Номер           КАК [Номер        $Строка],
     |ОЗ.Нахождение      КАК [Нахождение   $Справочник.Сотрудники],
     |ОЗ.НомерЭл         КАК [НомерЭл      $Число],
     |ОЗ.ТекущийДокумент КАК [ТекущийДокумент $Документ],
     |ОЗ.ВидДокумента    КАК [ТекущийДокумент_вид КАК $ВидДокумента],
     |СУММА(ОЗ.КоличествоНачальныйОстаток)  КАК [КоличествоНачальныйОстаток $Число],
     |СУММА(ОЗ.КоличествоПриход)           КАК [КоличествоПриход $Число],
     |СУММА(ОЗ.КоличествоРасход)           КАК [КоличествоРасход $Число],
     |СУММА(ОЗ.КоличествоКонечныйОстаток)  КАК [КоличествоКонечныйОстаток $Число],
     |СУММА(ОЗ.СебестРемИзд)               КАК [СебестРемИзд $Число]
     |ИЗ(
     |ВЫБРАТЬ
     |Ремонт.Менеджер        КАК Менеджер,
     |Ремонт.Покупатель      КАК Покупатель,
     |Ремонт.Заказ           КАК Заказ,
     |Ремонт.Номенклатура    КАК Номенклатура,
     |Ремонт.Номер           КАК Номер,
     |Ремонт.Нахождение      КАК Нахождение,
     |Ремонт.НомерЭл         КАК НомерЭл,
     |Ремонт.ТекущийДокумент КАК ТекущийДокумент,
     |Ремонт.ВидДокумента    КАК ТекущийДокумент_вид,
     |Ремонт.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
     |Ремонт.КоличествоПриход           КАК КоличествоПриход,
     |Ремонт.КоличествоРасход           КАК КоличествоРасход,
     |Ремонт.КоличествоКонечныйОстаток  КАК КоличествоКонечныйОстаток,
     |0                                 КАК СебестРемИзд
     |ИЗ
     |$РегистрОстаткиОбороты.Ремонт(:ВыбНачПериода,:ВыбКонПериода~, ДОКУМЕНТ,,,(Менеджер, Покупатель,Заказ, Номенклатура, Номер, Нахождение, НомерЭл)) КАК Ремонт
     |ОБЪЕДИНИТЬ
     |ВЫБРАТЬ
     |$Ремонт.Менеджер,
     |$Ремонт.Покупатель,
     |$Ремонт.Заказ,
     |$Ремонт.Номенклатура,
     |$Ремонт.Номер,
     |$Ремонт.Нахождение,
     |$Ремонт.НомерЭл,
     |$Ремонт.ТекущийДокумент,
     |$Ремонт.ВидДокумента,
     |0,
     |0,
     |0,
     |0,
     |$Ремонт.СебестРемИзд
     |ИЗ
     |Регистр.Ремонт КАК Ремонт $nolock
     |) КАК ОЗ
     |СГРУППИРОВАТЬ ОЗ.Менеджер, ОЗ.Покупатель, ОЗ.Заказ, ОЗ.Номенклатура, ОЗ.Номер, ОЗ.Нахождение, ОЗ.НомерЭл, ОЗ.ТекущийДокумент
     |ИМЕЮЩИЕ
     |СУММА(ОЗ.КоличествоНачальныйОстаток) <> 0 ИЛИ СУММА(ОЗ.КоличествоПриход) <> 0 ИЛИ СУММА(ОЗ.КоличествоРасход) <> 0 ИЛИ СУММА(ОЗ.КоличествоКонечныйОстаток) <> 0
     |";
ПрямойЗапрос::Выполнить(Строка ТипОбъекта=ИндексированнаяТаблица, Строка ТекстВыполнения=, Число БезПодготовки=0) : State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'ВидДокумента'.
ЗапросODBC.ВыполнитьИнструкцию(ТекстЗапроса,ПолучательЗапроса,1);
{D:\Тест планы Август\Classes\ПрямойЗапрос.ert(13484) }
Что не так, подскажите плз.
  
Наверх
 
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #472 - 05. Ноября 2012 :: 06:57
Печать  
МАКСИМУМ(ОЗ.ВидДокумента) КАК [ТекущийДокумент_вид $ВидДокумента],
  
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #473 - 06. Ноября 2012 :: 05:00
Печать  
Код
Выбрать все
 //  |ОЗ.ВидДокумента    КАК [ТекущийДокумент_вид КАК $ВидДокумента],

   |максимум(ОЗ.ТекущийДокумент_вид )  КАК [ТекущийДокумент_вид КАК $ВидДокумента], 



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


1C++ rocks!

Сообщений: 40
Зарегистрирован: 13. Мая 2011
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #474 - 06. Ноября 2012 :: 08:48
Печать  
Спасибо! Самому догадаться наверное невозможно...
  
Наверх
 
IP записан
 
temrmal
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 42
Зарегистрирован: 13. Января 2011
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #475 - 11. Ноября 2012 :: 09:29
Печать  
А кто подскажет как реализовать полное соединение? Пишу полное соединение - он его не понимает. Может по англ. написать?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #476 - 12. Ноября 2012 :: 04:51
Печать  
temrmal писал(а) 11. Ноября 2012 :: 09:29:
А кто подскажет как реализовать полное соединение? Пишу полное соединение - он его не понимает. Может по англ. написать?

лучше уж union all использовать, чем full join
  
Наверх
 
IP записан
 
Kalen
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 185
Зарегистрирован: 29. Марта 2010
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #477 - 12. Ноября 2012 :: 07:59
Печать  
temrmal писал(а) 11. Ноября 2012 :: 09:29:
..Пишу полное соединение - он его не понимает. Может по англ. написать?

База ДБФ?
  
Наверх
GTalkICQ  
IP записан
 
temrmal
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 42
Зарегистрирован: 13. Января 2011
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #478 - 12. Ноября 2012 :: 15:16
Печать  
Нет, sql.
  
Наверх
 
IP записан
 
Kalen
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 185
Зарегистрирован: 29. Марта 2010
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #479 - 13. Ноября 2012 :: 08:00
Печать  
Тогда английский может и работает. На ДБФ (1sqlite) работать не будет. Как уже сказал Ёпрст, можно вместо полного использовать объединение и группировку.
  
Наверх
GTalkICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 30 31 [32] 33 34 ... 51
ОтправитьПечать