Переключение на Главную Страницу Страницы: 1 ... 5 6 [7] 8 9 ... 11 ОтправитьПечать
Очень популярная тема (более 25 ответов) Помогите, пожалуйста, в составлении запроса (число прочтений - 34857 )
maxy3d
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #90 - 18. Сентября 2014 :: 11:27
Печать  
Подскажите, пожалуйста, как правильно прописать прямом запросе :
Код
Выбрать все
|Товар	    = Регистр.Взаиморасщеты.Товар,Регистр.ПартииТоваров.Товар; 


Второй регистр нужно прописівать в Inner Join или в Left Join или еще как-то...?

Мне просто сейчас нужно ссылаясь на этот запрос:
Код
Выбрать все
Запрос = СоздатьОбъект("Запрос");
					ТекстЗапроса =
					"//{{ЗАПРОС(Сформировать)
					|Период с ВыбКонПериода по ВыбКонПериода;
					|Склад	    = Регистр.Взаиморасщеты.Магазин,Регистр.ПартииТоваров.Склад;
					|Товар	    = Регистр.Взаиморасщеты.Товар,Регистр.ПартииТоваров.Товар;

					|Вид		= Регистр.Взаиморасщеты.Товар.ВидИзделия,Регистр.ПартииТоваров.Товар.ВидИзделия;
					|ТипПФ	    = Регистр.Взаиморасщеты.Товар.ТипПФ,Регистр.ПартииТоваров.Товар.ТипПФ;
					|Тип		= Регистр.Взаиморасщеты.Товар.Тип,Регистр.ПартииТоваров.Товар.Тип;

					|Партия	   = Регистр.Взаиморасщеты.Партия,Регистр.ПартииТоваров.Партия;

					|Акция			=
					|Вуду		  = Регистр.Взаиморасщеты.Партия.ВидУчета,Регистр.ПартииТоваров.Партия.ВидУчета;
					|Клиент	   = Регистр.Взаиморасщеты.Партия.Поставщик,Регистр.ПартииТоваров.Партия.Поставщик;

					|Штук	     = Регистр.Взаиморасщеты.Количество,Регистр.ПартииТоваров.Штук;
					|Масса	    = Регистр.Взаиморасщеты.Масса,Регистр.ПартииТоваров.Масса;
					|МассаБК	  = Регистр.Взаиморасщеты.МассаБК,Регистр.ПартииТоваров.МассаБК;
					|Сумма	    = Регистр.Взаиморасщеты.Сумма,Регистр.ПартииТоваров.Сумма;
					|СуммаП	   = Регистр.Взаиморасщеты.СуммаПродажи;

					|Фирмочка	 = Регистр.Взаиморасщеты.Партия.Фирма,Регистр.ПартииТоваров.Партия.Фирма;
					|ВладелецТовара = Регистр.Взаиморасщеты.Партия.ВладелецТовара;

					|Функция ШтОст     = КонОст(Штук);
					|Функция МБКОст    = КонОст(МассаБК);
					|Функция МОст	= КонОст(Масса);
					|Функция КОст	= КонОст(Сумма);
					|Функция КПОст     = КонОст(СуммаП);
					//|Функция СВОст     = КонОст(СуммаСВ);
					//|Группировка Склад  без групп;
					|Группировка Клиент без групп;
					|Группировка Вид;   // без групп;
					|Группировка Товар Упорядочить по Товар.Наименование без групп;
					|Группировка Партия;

					|"//}}ЗАПРОС
					;

					Если Складик.Выбран() = 1 Тогда
						ТекстЗапроса = ТекстЗапроса + "Условие(Склад в Складик);";
					КонецЕсли;

					Если Акц.Выбран() = 1 Тогда
						ТекстЗапроса = ТекстЗапроса + "Условие(Акция = Акц);";
					КонецЕсли;

					Если Материал.Выбран() = 1 Тогда
						ТекстЗапроса = ТекстЗапроса + "Условие(ТипПФ в Материал);";
					Иначе
						Предупреждение("Выберите материал!!!",10);
						Возврат;
					КонецЕсли;
					ТекстЗапроса = ТекстЗапроса + "Условие(Тип = Константа.Изделие);";

					Если Фирма.Выбран() = 1 Тогда
						ТекстЗапроса = ТекстЗапроса + "Условие(Фирмочка = Фирма);";
					КонецЕсли;
					Если ВыбКод.РазмерСписка() = 0 Тогда
					Иначе
						ТекстЗапроса = ТекстЗапроса + "Условие (Товар в выбКод);";
					КонецЕсли;


					Если Поставщик.Выбран() = 1 Тогда
						ТекстЗапроса = ТекстЗапроса + "Условие(Клиент = Поставщик);";
					КонецЕсли;

					Если ВыбВидИзделия.Выбран() = 1 Тогда
						ТекстЗапроса = ТекстЗапроса + "Условие(Вид = ВыбВидИзделия);";
					КонецЕсли;

					Если Клиентик.Выбран() = 1 Тогда
						ТекстЗапроса = ТекстЗапроса + "Условие(ВладелецТовара = Клиентик);";
					КонецЕсли;


					Если Учет = Перечисление.ВидУчета.Бухгалтерия Тогда
						ТекстЗапроса = ТекстЗапроса + "Условие(Вуду = Учет);";
						//ТекстЗапроса = ТекстЗапроса + "Условие(Вуду <> Перечисление.ВидУчета.Торговля);";
					КонецЕсли;
					Если Размер > 0 Тогда
						ТекстЗапроса = ТекстЗапроса + "Условие(число(сокрлп(Партия.Размер)) = число(сокрлп(Размер)));";
					КонецЕсли;
					Если БрилКол = 1 Тогда
						ТекстЗапроса = ТекстЗапроса + "Условие((число(сокрлп(Партия.БрилКол)) > 0)
						|И (число(сокрлп(Партия.ЦвДрКол)) = 0));";
					КонецЕсли;

					Если ЦвДрЦ = 1 Тогда
						ТекстЗапроса = ТекстЗапроса + "Условие((число(сокрлп(Партия.ЦвДрКол)) > 0)
						|И (число(сокрлп(Партия.БрилКол)) = 0));";

					КонецЕсли;
					Если БриллДраг = 1 Тогда
						ТекстЗапроса = ТекстЗапроса + "Условие((число(сокрлп(Партия.ЦвДрКол)) > 0)
						|И (число(сокрлп(Партия.БрилКол)) > 0));";
					КонецЕсли;

					Если Жемчуг = 1 Тогда
						ТекстЗапроса = ТекстЗапроса + "Условие(число(сокрлп(Партия.ЖемчугКол)) > 0);";
					КонецЕсли;

					Если Циркон = 1 Тогда
						ТекстЗапроса = ТекстЗапроса + "Условие((число(сокрлп(Партия.БрилКол)) = 0)
						|И (число(сокрлп(Партия.ЦвДрКол)) = 0));";
					КонецЕсли;


					Если Красное = 1 Тогда
						ТекстЗапроса = ТекстЗапроса + "Условие(Партия.Цвет = Перечисление.Цвет.Красное);";
					КонецЕсли;
					Если Белое = 1 Тогда
						ТекстЗапроса = ТекстЗапроса + "Условие(Партия.Цвет = Перечисление.Цвет.Белое);";
					КонецЕсли;
					Если Желтое = 1 Тогда
						ТекстЗапроса = ТекстЗапроса + "Условие(Партия.Цвет = Перечисление.Цвет.Желтое);";
					КонецЕсли;

					Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
						Возврат;
					КонецЕсли;
					Таб = СоздатьОбъект("Таблица");
					Таб.ИсходнаяТаблица("Остаток");
					Таб.Вывест 


Сделать по толковому - прямой запрос.
И загвостка пока в том, что не знаю как в прямом зпросе прописать строку типа:
Код
Выбрать все
|Товар	    = Регистр.Взаиморасщеты.Товар,Регистр.ПартииТоваров.Товар; 

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


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #91 - 19. Сентября 2014 :: 06:35
Печать  
Подскажиет, пожалуйста, как прописать мне предыдущий вопрос и ОБЕЩАЮ, отстану Улыбка... Просто не нахожу в мануалах подобных случаев. Очередной раз, ОГРОМНОЕ СПАСИБО за помощь!!
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите, пожалуйста, в составлении запроса
Ответ #92 - 19. Сентября 2014 :: 08:23
Печать  
Цитата:
Второй регистр нужно прописівать в Inner Join или в Left Join или еще как-то...?
- union all

общий вид такой
Код
Выбрать все
select
from(
    select
    from $РегистрОстатки.Взаиморасщеты

    union all

    select
    from $РегистрОстатки.ПартииТоваров
) Данные
group by клиент,вид,товар,партия 

  

1&&2&&3
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Помогите, пожалуйста, в составлении запроса
Ответ #93 - 19. Сентября 2014 :: 08:23
Печать  
select a as товар, b as количество from взаиморащеты
union all
select a, b from партии

потом можно это обернуть еще в один запрос
select a,b from
(тут то, что выше) as выборка group by ...

З.Ы. загвостка - оно от слова гвоЗдь...
  
Наверх
ICQ  
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Помогите, пожалуйста, в составлении запроса
Ответ #94 - 19. Сентября 2014 :: 08:26
Печать  
Уже подсказали... Отмечу только, что если тут:
Код
Выбрать все
Регистр.Взаиморасщеты.Магазин,Регистр.ПартииТоваров.Склад 


лежат значения из разных справочников, то надо будет делать выборку не только id, но еще и вида справочника
  
Наверх
ICQ  
IP записан
 
maxy3d
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #95 - 19. Сентября 2014 :: 08:51
Печать  
Спасибо - буду пробовать!
  
Наверх
 
IP записан
 
maxy3d
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #96 - 19. Сентября 2014 :: 08:55
Печать  
Если я хочу вставить в запрос условие например
Код
Выбрать все
товар в СписокЗначений 


тогда мне нужно написать типа такого:
Код
Выбрать все
|   $РегистрОстатки.Себестоимость(,,(Продукция in (Select val from #СписокИзделий)),(Продукция,Партия),) as Рег 


и
Код
Выбрать все
Запрос.УложитьСписокОбъектов(СписокИзделий,"#СписокИзделий", "Номенклатура"); 


?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите, пожалуйста, в составлении запроса
Ответ #97 - 19. Сентября 2014 :: 09:00
Печать  
да
  
Наверх
 
IP записан
 
maxy3d
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #98 - 19. Сентября 2014 :: 09:23
Печать  
Eprst писал(а) 19. Сентября 2014 :: 09:00:
да

в таком запросе:
Код
Выбрать все
ТекстЗапроса = "
	|Select
	|   Рег.Товар 	[Продукция $Справочник.Номенклатура],
	|   Рег.Партия	[Партия $Справочник.Партии],
	|   Рег.СтатьяЗатрат  [СтатьяЗатрат $Справочник.СтатьиЗатрат],
	|   Рег.КоличествоОстаток as КоличествоОст,
	|   Рег.СуммаРаботОстаток as СуммаРаботОст,
	|   Рег.СуммаКамнейОстаток as СуммаКамнейОст
	|FROM
	|   $РегистрОстатки.Себестоимость(,,(Продукция in (Select val from #СписокИзделий))
	|	AND (Партия in (Select val from #СписокПартий)),(Продукция,Партия),) as Рег
	//|where
	//|	Рег.КоличествоОстаток>0
	|";

    Запрос = СоздатьОбъект("ODBCRecordSet");
	Запрос.УложитьСписокОбъектов(СписокИзделий,"#СписокИзделий", "Номенклатура");
	Запрос.УложитьСписокОбъектов(СписокПартий,"#СписокПартий", "Партии");
	Запрос.Отладка(1);
	ТЗСебестоимость = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
 


Выдает вот такую ошибку:
Meta name parser error: недопустимое значение параметра "$РегистрОстатки.Себестоимость" (4)
Злой
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите, пожалуйста, в составлении запроса
Ответ #99 - 19. Сентября 2014 :: 09:33
Печать  
Продукция и Партия - это точно ИЗМЕРЕНИЯ регистра у вас ?
  
Наверх
 
IP записан
 
maxy3d
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #100 - 19. Сентября 2014 :: 09:42
Печать  
Eprst писал(а) 19. Сентября 2014 :: 09:33:
Продукция и Партия - это точно ИЗМЕРЕНИЯ регистра у вас ?

Я думал в том месте устанавливается алиас (переменная) на измерения регистра, но переписал на Товар,Партия - начало считать!
Спасибо!
  
Наверх
 
IP записан
 
maxy3d
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #101 - 19. Сентября 2014 :: 10:59
Печать  
trad писал(а) 19. Сентября 2014 :: 08:23:
Цитата:
Второй регистр нужно прописівать в Inner Join или в Left Join или еще как-то...?
- union all

общий вид такой
Код
Выбрать все
select
from(
    select
    from $РегистрОстатки.Взаиморасщеты

    union all

    select
    from $РегистрОстатки.ПартииТоваров
) Данные
group by клиент,вид,товар,партия 



Правильно ли я написал:
Код
Выбрать все
ТекстЗапроса = "
	|Select
	|FROM(
	|	Select
	| 	  Рег.Товар	[Товар $Справочник.Номенклатура],
	|	    Рег.Партия	[Заказ $Справочник.Партии],
	| 	  Рег.Склад 	[Склад $Справочник.Подразделения],
	|		$Номен.Тип  [Тип $Справочник.Тип],
	| 	  Рег.КоличествоОстаток as ККО,
	| 	  Рег.МассаОстаток as МКО,
	| 	  Рег.МассаКОстаток as МК
	|	FROM
	| 	  $РегистрОстатки.ПартииТоваров(,,,,) as Рег
	| 	  left join $Справочник.Номенклатура as Номен (nolock) on Номен.id = Рег.Товар
	|	where
	|		Рег.Склад = :Склад
	|		$Номен.Тип = :ТипТ
	|	UNION All
	|	Select
	| 	  Рег2.Товар	[Товар $Справочник.Номенклатура],
	|	    Рег2.Заказ	[Заказ $Справочник.Партии],
	| 	  $Номен.Тип  [Тип $Справочник.Тип],
	| 	  Рег2.КоличествоОстаток as ККО,
	| 	  Рег2.МассаОстаток as МКО,
	| 	  Рег2.МассаКОстаток as МК
	|	FROM
	| 	  $РегистрОстатки.Камни(,,,,) as Рег2
	| 	  left join $Справочник.Номенклатура as Номен (nolock) on Номен.id = Рег2.Товар
	|	where
	|		$Номен.Тип = :ТипТ
	|) as Выборка
	|group by Товар,Заказ
	|";

    Запрос = СоздатьОбъект("ODBCRecordSet");
	Запрос.УстановитьТекстовыйПараметр("Склад", Склад);
	Запрос.УстановитьТекстовыйПараметр("ТипТ", ТипТ);

	ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); 


к запросу:
Код
Выбрать все
Запрос = СоздатьОбъект("Запрос");
	ТекстЗапроса =
	"//{{ЗАПРОС(Сформировать)
	|Период с ДатаДок по ДатаДок;
	|Товар	= Регистр.ПартииТоваров.Товар,Регистр.Камни.Товар;
	|Тип	  = Регистр.ПартииТоваров.Товар.Тип,Регистр.Камни.Товар.Тип;
	|Заказ	= Регистр.ПартииТоваров.Партия,Регистр.Камни.Заказ;
	|СкладТ     = Регистр.ПартииТоваров.Склад;
	|Количество = Регистр.ПартииТоваров.ОстатокШтук;
	|Масса	  = Регистр.ПартииТоваров.ОстатокМасса;
	|МассаК	  = Регистр.Камни.МассаК;
	|Функция ККО = КонОст(Количество);
	|Функция МКО = КонОст(Масса);
	|Функция МК = КонОст(МассаК);
	|Группировка Товар  без групп;
	|Группировка Заказ;
	|Условие(СкладТ  = Склад);
	|Условие(Тип  = Константа.ТипИзделие);
	|"//}}ЗАПРОС
	;
	ТС=СкладС;
	Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
		Возврат;
	КонецЕсли; 


?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите, пожалуйста, в составлении запроса
Ответ #102 - 19. Сентября 2014 :: 11:14
Печать  
нет

1.не указаны поля выборки (или хотя бы *) из первого запроса
2.типизация в подзапросе не нужна
3.не равное количество полей в union all
  
Наверх
 
IP записан
 
maxy3d
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #103 - 19. Сентября 2014 :: 11:16
Печать  
Eprst писал(а) 19. Сентября 2014 :: 11:14:
нет

1.не указаны поля выборки (или хотя бы *) из первого запроса
2.типизация в подзапросе не нужна
3.не равное количество полей в union all


В другом регистре нет измерения "Склад"..
  
Наверх
 
IP записан
 
maxy3d
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #104 - 19. Сентября 2014 :: 11:22
Печать  
Может так:
Код
Выбрать все
ТекстЗапроса = "
	|Select
	|	Товар		[Товар $Справочник.Номенклатура],
	|	Заказ		[Заказ $Справочник.Партии],
	|   Рег.Склад 	[Склад $Справочник.Подразделения],
	|	$Номен.Тип  [Тип $Справочник.Тип],
	|FROM(
	|	Select
	| 	  Рег.Товар as Товар,
	|	    Рег.Партия as Заказ,
	| 	  Рег.Склад as Склад,
	| 	  Рег.КоличествоОстаток as ККО,
	| 	  Рег.МассаОстаток as МКО,
	| 	  Рег.МассаКОстаток as МК
	|	FROM
	| 	  $РегистрОстатки.ПартииТоваров(,,,,) as Рег

	|	UNION All
	|	Select
	| 	  Рег2.Товар as Товар,
	|	    Рег2.Заказ as Заказ,
	| 	  Рег2.КоличествоОстаток as ККО,
	| 	  Рег2.МассаОстаток as МКО,
	| 	  Рег2.МассаКОстаток as МК
	|	FROM
	| 	  $РегистрОстатки.Камни(,,,,) as Рег2
	|) as Выборка
	|left join $Справочник.Номенклатура as Номен (nolock) on Номен.id = Товар
	|where
	|	Выборка.Склад = :Склад
	|	Выборка.Тип = :ТипТ
	|group by Товар,Заказ
	|"; 

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 5 6 [7] 8 9 ... 11
ОтправитьПечать