Переключение на Главную Страницу Страницы: 1 ... 35 36 [37] 38 39 ... 51 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" - обсуждения. Часть № 2. (число прочтений - 245553 )
Asakra
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 83
Местоположение: Иркутск
Зарегистрирован: 28. Августа 2012
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #540 - 23. Апреля 2013 :: 05:26
Печать  
Eprst писал(а) 23. Апреля 2013 :: 05:15:
Никак.
Только соединением с самой табличкой движения регистра, либо писать запрос руктями к табличке движений регистра, без ВТ


ага. понел. сенкс.
  
Наверх
 
IP записан
 
temrmal
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 42
Зарегистрирован: 13. Января 2011
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #541 - 23. Апреля 2013 :: 18:59
Печать  
Как сделать условие на разность дат, к примеру по каждому документу что то типа: если Текущая дата минус N-ое количество дней тогда значение1, иначе значение 2?
  
Наверх
 
IP записан
 
temrmal
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 42
Зарегистрирован: 13. Января 2011
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #542 - 23. Апреля 2013 :: 20:53
Печать  
разобрался
DATEADD
  
Наверх
 
IP записан
 
Asakra
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 83
Местоположение: Иркутск
Зарегистрирован: 28. Августа 2012
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #543 - 06. Мая 2013 :: 11:31
Печать  
Подскажите, а как в ВТ по остаткам поставить условие по измерению с типом "Документ"? И как поставить условие по этому же реквизиту, но по виду документа? Только джойнить Журнал документов и Виды документов? или как? может пример у кого есть. база DBF.
  
Наверх
 
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #544 - 07. Мая 2013 :: 01:10
Печать  
Asakra писал(а) 06. Мая 2013 :: 11:31:
Подскажите, а как в ВТ по остаткам поставить условие по измерению с типом "Документ"? И как поставить условие по этому же реквизиту, но по виду документа? Только джойнить Журнал документов и Виды документов? или как? может пример у кого есть. база DBF.


Код
Выбрать все
ГДЕ СРЕД(РегПроектОО.КредДокумент,6) = $Жур.ТекущийДокумент
ГДЕ СРЕД(РегПроектОО.КредДокумент,6) В (ВЫБРАТЬ val FROM #СписДок)
ГДЕ ЛЕВО(РегПроектОО.КредДокумент,4) = :ВидДокумента.ТвойВидДока
ГДЕ ЛЕВО(РегПроектОО.КредДокумент,4) В окаN) 

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


1C++ rocks!

Сообщений: 83
Местоположение: Иркутск
Зарегистрирован: 28. Августа 2012
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #545 - 07. Мая 2013 :: 01:26
Печать  
Dolly_EV писал(а) 07. Мая 2013 :: 01:10:
Код
Выбрать все
ГДЕ СРЕД(РегПроектОО.КредДокумент,6) = $Жур.ТекущийДокумент
ГДЕ СРЕД(РегПроектОО.КредДокумент,6) В (ВЫБРАТЬ val FROM #СписДок)
ГДЕ ЛЕВО(РегПроектОО.КредДокумент,4) = :ВидДокумента.ТвойВидДока
ГДЕ ЛЕВО(РегПроектОО.КредДокумент,4) В окаN) 



СПАСИБО!
  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #546 - 14. Мая 2013 :: 05:52
Печать  
Я в панике! Вчера целый день убил. Не работает, хоть тресни:

Код
Выбрать все
ВЫБРАТЬ
РегОбщ.Период КАК [Период $Дата],РегОбщ.Товар КАК [Товар $Справочник.Товары],РегОбщ.Производитель КАК [Производитель $Справочник.Производитель],
Максимум(РегОбщ.СуммаПродСтК) КАК [СуммаПродСтК $число]
ИЗ (
ВЫБРАТЬ
РегОст.НачалоПериода КАК Период,РегОст.измТовар КАК Товар,$СпрТ.спрПроизводитель КАК Производитель,
РегОст.ресСуммаБазПродКонечныйОстаток СуммаПродСтК
 ИЗ $РегистрОстаткиОбороты.Товары(:ДатаНач, :ДатаКон~, Месяц ДОПОЛНЕНИЕ, ДвиженияИГраницыПериода, ВНУТРЕННЕЕ СОЕДИНЕНИЕ $Справочник.Товары КАК СпрТ $nolock ПО СпрТ.id = измТовар, $СпрТ.спрПроизводитель = :ВыбПроизводитель, (измТовар),(ресКоличество,ресСуммаБаз,ресСуммаБазПрод)) РегОст
ВНУТРЕННЕЕ СОЕДИНЕНИЕ $Справочник.Товары СпрТ $nolock ПО СпрТ.id = РегОст.измТовар

ГДЕ $СпрТ.спрПроизводитель = :ВыбПроизводитель and (РегОст.ресСуммаБазНачальныйОстаток <> 0 ИЛИ РегОст.ресКоличествоНачальныйОстаток<>0 ИЛИ РегОст.ресСуммаБазКонечныйОстаток <> 0 ИЛИ РегОст.ресКоличествоКонечныйОстаток<>0)
) КАК РегОбщ

СГРУППИРОВАТЬ РегОбщ.Период,РегОбщ.Товар,РегОбщ.Производитель
 




ПрямойЗапрос::ПолучитьТипКолонки(Метаданные МетаРеквизит=, Строка Тип=, Строка Вид=, Число Длина=-1, Число Точность=-1) : Поле агрегатного объекта не обнаружено
Тип = МетаРеквизит.Тип;


Вроде все версии всего последние ... ХЕЛП!!!!!
  
Наверх
 
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #547 - 14. Мая 2013 :: 06:42
Печать  
Цитата:
Я в панике! Вчера целый день убил. Не работает, хоть тресни:

РегОст.НачалоПериода КАК Период,РегОст.измТовар КАК Товар,$СпрТ.спрПроизводитель КАК Производитель,
РегОст.ресСуммаБазПродКонечныйОстаток СуммаПродСтК
ИЗ $РегистрОстаткиОбороты.Товары(:ДатаНач, :ДатаКон~, Месяц ДОПОЛНЕНИЕ, ДвиженияИГраницыПериода, ВНУТРЕННЕЕ СОЕДИНЕНИЕ $Справочник.Товары КАК СпрТ $nolock ПО СпрТ.id = измТовар, $СпрТ.спрПроизводитель = :ВыбПроизводитель, (измТовар),(ресКоличество,ресСуммаБаз,ресСуммаБазПрод)) РегОст


Синтаксис: $РегистрОстаткиОбороты.<ИмяРегистра>(НачалоПериода, КонецПериода, Периодичность, МетодДополнения, Условие, Измерения, Ресурсы, Соединения)

В общем, если я правильно понял задачу - должно быть так:
Код
Выбрать все
	|ВЫБРАТЬ
	|	РегОбщ.Период КАК [Период $Дата]
	|	,РегОбщ.Товар КАК [Товар $Справочник.Товары]
	|	,РегОбщ.Производитель КАК [Производитель $Справочник.Производитель]
	|	,Максимум(РегОбщ.СуммаПродСтК) КАК [СуммаПродСтК $число]
	|ИЗ (ВЫБРАТЬ
	|		РегОст.НачалоПериода КАК Период
	|		,РегОст.измТовар КАК Товар
	|		,$СпрТ.спрПроизводитель КАК Производитель
	|		,РегОст.ресСуммаБазПродКонечныйОстаток СуммаПродСтК
	|	ИЗ $РегистрОстаткиОбороты.Товары(:ДатаНач, :ДатаКон~, Месяц ДОПОЛНЕНИЕ, ДвиженияИГраницыПериода
	|									,()
	|									,(измТовар)
	|									,(ресКоличество,ресСуммаБаз,ресСуммаБазПрод),) КАК РегОст
	|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ $Справочник.Товары КАК СпрТ $nolock
	|	ПО СпрТ.id = РегОст.измТовар И $СпрТ.спрПроизводитель = :ВыбПроизводитель
	|	ГДЕ РегОст.ресСуммаБазНачальныйОстаток <> 0
	|	ИЛИ РегОст.ресКоличествоНачальныйОстаток<>0
	|	ИЛИ РегОст.ресСуммаБазКонечныйОстаток <> 0
	|	ИЛИ РегОст.ресКоличествоКонечныйОстаток<>0) КАК РегОбщ
	|СГРУППИРОВАТЬ РегОбщ.Период,РегОбщ.Товар,РегОбщ.Производитель
 



и еще "ресКоличество,ресСуммаБаз," из ресурсов выкинуть, если они нигде не используются.
и еще: у тебя в коде этот запрос также выглядит? как ты в нем что-то понимаешь?)) записал бы уж вообще в одну строку))
...
и еще: и подзапрос тут не нужен и "Сгруппировать" не нужно - достаточно иннер джоин ВТОстаткиОбороты с Спр.Товары
  
Наверх
ICQ  
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #548 - 14. Мая 2013 :: 07:07
Печать  
Т.е. как-то так:
Код
Выбрать все
	|ВЫБРАТЬ
	|	РегОст.НачалоПериода КАК [Период $Дата]
	|	,РегОст.Товар КАК [Товар $Справочник.Товары]
	|	,$СпрТ.спрПроизводитель КАК [Производитель $Справочник.Производитель]
	|	,РегОст.ресСуммаБазПродКонечныйОстаток КАК [СуммаПродСтК $число]
	|ИЗ $РегистрОстаткиОбороты.Товары(:ДатаНач, :ДатаКон~, Месяц ДОПОЛНЕНИЕ, ДвиженияИГраницыПериода
	|								,()
	|								,(измТовар)
	|								,(ресКоличество,ресСуммаБаз,ресСуммаБазПрод),) КАК РегОст
	|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
	|	$Справочник.Товары КАК СпрТ $nolock
	|ПО СпрТ.id = РегОст.измТовар И $СпрТ.спрПроизводитель = :ВыбПроизводитель
	|ГДЕ РегОст.ресСуммаБазНачальныйОстаток <> 0
	|	ИЛИ РегОст.ресКоличествоНачальныйОстаток<>0
	|	ИЛИ РегОст.ресСуммаБазКонечныйОстаток <> 0
	|	ИЛИ РегОст.ресКоличествоКонечныйОстаток<>0 

  
Наверх
ICQ  
IP записан
 
U_zer
Экс-Участник


Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #549 - 14. Мая 2013 :: 07:18
Печать  
Спасибо! Почти угадал, только это просто кусок нужного мне запроса.
Мне вообще-то нужно

     |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ $Справочник.Товары КАК СпрТ $nolock
     |      ПО СпрТ.id = РегОст.измТовар И $СпрТ.спрПроизводитель = :ВыбПроизводитель

Засунуть внутрь ВТ. Как это сделать? Ругается непотребно.
  
Наверх
 
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #550 - 14. Мая 2013 :: 07:28
Печать  
"Соединение" внутри ВТ еще не пробовал нигде, но может проблема в том, что "Доступные поля: только измерения регистра."?
  
Наверх
ICQ  
IP записан
 
U_zer
Экс-Участник


Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #551 - 14. Мая 2013 :: 08:08
Печать  
А какие проблемы?
ВНУТРЕННЕЕ СОЕДИНЕНИЕ $Справочник.Товары КАК СпрТ $nolock
          ПО СпрТ.id = измТовар

На это ругается что не знает имя таблицы $Справочник.Товары
Я по форуму искал, никто не использует это что-ли внутри ВТ??? Нерешительный
  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #552 - 14. Мая 2013 :: 10:37
Печать  
Dolly_EV писал(а) 14. Мая 2013 :: 07:28:
"Соединение" внутри ВТ еще не пробовал нигде, но может проблема в том, что "Доступные поля: только измерения регистра."?


Вот что выдает:

Код
Выбрать все
ВЫБРАТЬ
РегОбщ.Период КАК [Период $Дата],РегОбщ.Товар КАК [Товар $Справочник.Товары],РегОбщ.Производитель КАК [Производитель $Справочник.Производитель],
Максимум(РегОбщ.СуммаПродСтК) КАК [СуммаПродСтК $число]
ИЗ (
ВЫБРАТЬ
РегОст.НачалоПериода КАК Период,РегОст.измТовар КАК Товар,$СпрТ.спрПроизводитель КАК Производитель,
РегОст.ресСуммаБазПродКонечныйОстаток СуммаПродСтК
 ИЗ $РегистрОстаткиОбороты.Товары(:ДатаНач, :ДатаКон~, Месяц ДОПОЛНЕНИЕ, ДвиженияИГраницыПериода, , (измТовар),(ресКоличество,ресСуммаБаз,ресСуммаБазПрод), ) РегОст
ВНУТРЕННЕЕ СОЕДИНЕНИЕ $Справочник.Товары КАК СпрТ $nolock ПО СпрТ.id = РегОст.измТовар

ГДЕ $СпрТ.спрПроизводитель = :ВыбПроизводитель  
) КАК РегОбщ

СГРУППИРОВАТЬ РегОбщ.Период,РегОбщ.Товар,РегОбщ.Производитель

ПрямойЗапрос::Выполнить(Строка ТипОбъекта=ИндексированнаяТаблица, Строка ТекстВыполнения=, Число БезПодготовки=0) : Meta name parser error: неизвестное метаимя или алиас "$СпрТ"
ЗапросODBC.ВыполнитьИнструкцию(ТекстЗапроса,ПолучательЗапроса,1);
{E:\Mine\Otladka\mdwork\classes\ПрямойЗапрос.ert(13484) }
 

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


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #553 - 15. Мая 2013 :: 03:33
Печать  
Цитата:
Dolly_EV писал(а) 14. Мая 2013 :: 07:28:
"Соединение" внутри ВТ еще не пробовал нигде, но может проблема в том, что "Доступные поля: только измерения регистра."?


Вот что выдает:

Код
Выбрать все
ВНУТРЕННЕЕ СОЕДИНЕНИЕ $Справочник.Товары КАК СпрТ $nolock ПО СпрТ.id = РегОст.измТовар
ГДЕ $СпрТ.спрПроизводитель = :ВыбПроизводитель  
) КАК РегОбщ
 


НЕ надо здесь $, а около СпрТ.id = РегОст.измТовар - надо!
  
Наверх
ICQ  
IP записан
 
U_zer
Экс-Участник


Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #554 - 15. Мая 2013 :: 05:39
Печать  
Dolly_EV писал(а) 15. Мая 2013 :: 03:33:
Цитата:
Dolly_EV писал(а) 14. Мая 2013 :: 07:28:
"Соединение" внутри ВТ еще не пробовал нигде, но может проблема в том, что "Доступные поля: только измерения регистра."?


Вот что выдает:

Код
Выбрать все
ВНУТРЕННЕЕ СОЕДИНЕНИЕ $Справочник.Товары КАК СпрТ $nolock ПО СпрТ.id = РегОст.измТовар
ГДЕ $СпрТ.спрПроизводитель = :ВыбПроизводитель  
) КАК РегОбщ
 


НЕ надо здесь $, а около СпрТ.id = РегОст.измТовар - надо!



Нее, заработало так:

Код
Выбрать все
ВЫБРАТЬ
РегОбщ.Период КАК [Период $Дата],РегОбщ.Товар КАК [Товар $Справочник.Товары],РегОбщ.Производитель КАК [Производитель $Справочник.Производитель],
Максимум(РегОбщ.СуммаПродСтК) КАК [СуммаПродСтК $число]
ИЗ (
ВЫБРАТЬ
РегОст.НачалоПериода КАК Период,РегОст.измТовар КАК Товар,$СпрТ.спрПроизводитель КАК Производитель,
РегОст.ресСуммаБазПродКонечныйОстаток СуммаПродСтК
 ИЗ $РегистрОстаткиОбороты.Товары(:ДатаНач, :ДатаКон~, Месяц ДОПОЛНЕНИЕ, ДвиженияИГраницыПериода, , (измТовар),(ресКоличество,ресСуммаБаз,ресСуммаБазПрод), ) РегОст
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Товары КАК СпрТ ПО СпрТ.id = РегОст.измТовар

ГДЕ $СпрТ.спрПроизводитель = :ВыбПроизводитель
) КАК РегОбщ

СГРУППИРОВАТЬ РегОбщ.Период,РегОбщ.Товар,РегОбщ.Производитель
 



Это ж убиться веником ....  Ужас
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 35 36 [37] 38 39 ... 51
ОтправитьПечать