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


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #30 - 11. Сентября 2014 :: 07:44
Печать  
Eprst писал(а) 11. Сентября 2014 :: 07:42:
Странный человек, грит проверил вот это, на самом деле текст запроса другой приводит.


Я пробую кучу разных вариантов, которые дописываю сам и которые советуют, вылаживаю и запрос и отладку, в чем "странный человек"? уточните! Какой "не тот" запрос я выложил?
  
Наверх
 
IP записан
 
maxy3d
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #31 - 11. Сентября 2014 :: 07:44
Печать  
Eprst писал(а) 11. Сентября 2014 :: 07:42:
Код
Выбрать все
|FROM
	|   $РегистрОстатки.Остатки(,,Фирма = :ВыбФирма AND Склад = :ВыбСклад,,) as Рег 



спс, пробую
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите, пожалуйста, в составлении запроса
Ответ #32 - 11. Сентября 2014 :: 07:47
Печать  
Ну почитай свои же ответы. Гришь добавил запятых, указываешь правильный текст запроса в ответе и говоришь, что он не работает.
На вопрос покажи, что именно ты проверяешь - указываешь другой текст запроса.

Отсюда и "странный" человек.
  
Наверх
 
IP записан
 
maxy3d
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #33 - 11. Сентября 2014 :: 07:48
Печать  
maxy3d писал(а) 11. Сентября 2014 :: 07:44:
Eprst писал(а) 11. Сентября 2014 :: 07:42:
Код
Выбрать все
|FROM
	|   $РегистрОстатки.Остатки(,,Фирма = :ВыбФирма AND Склад = :ВыбСклад,,) as Рег 



спс, пробую


ЗАРАБОТАЛО! СПАСИБО! Можете еще подсказать как добавить в сей запрос условие:
ВыбТовар - строка (в которой пользователь пишет прилизительное название товара, по которому запрос должен выбрать совппадающие элементы)?
Еще раз спасибо!
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите, пожалуйста, в составлении запроса
Ответ #34 - 11. Сентября 2014 :: 07:51
Печать  
Могу, смотри #4  ответ. Там готовый код.
  
Наверх
 
IP записан
 
maxy3d
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #35 - 11. Сентября 2014 :: 07:52
Печать  
Eprst писал(а) 11. Сентября 2014 :: 07:51:
Могу, смотри #4  ответ. Там готовый код.


Спс, смотрю
  
Наверх
 
IP записан
 
maxy3d
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #36 - 11. Сентября 2014 :: 08:00
Печать  
Всем ОГРОМНЕЙШЕЕ СПАСИБО! Все заработало - цель достигнута!
  
Наверх
 
IP записан
 
maxy3d
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #37 - 11. Сентября 2014 :: 09:41
Печать  
Подскажите пожалуйста, как в сие запросе, возможо выводить только те  позиции, по которым есть остатки?:
Код
Выбрать все
Процедура Сформировать()
    ТекстЗапроса = "
	|SELECT Остатки.Товар [Товар $Справочник.Номенклатура]
	|, Остатки.Партия [Партия $Справочник.Партии]
	|, Остатки.ШтукОстаток Количество
	|, Остатки.МассаОстаток Сумма
	|, Остатки.МассаБКОстаток СуммаБК
	|, Номенклатура.DESCR Наим
	|FROM $РегистрОстатки.Остатки(,
	|	INNER JOIN $Справочник.Номенклатура AS Номенклатура With (NOLOCK) ON Товар = Номенклатура.ID,
	|	(Фирма = :ВыбФирма)
	|	AND (Склад = :ВыбСклад)
	|	AND (Номенклатура.DESCR LIKE :ВыбТовар),
	|	(Товар, Партия),) AS Остатки
	|INNER JOIN $Справочник.Номенклатура AS Номенклатура With (NOLOCK) ON Остатки.Товар = Номенклатура.ID";

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

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


СПасибо!
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите, пожалуйста, в составлении запроса
Ответ #38 - 11. Сентября 2014 :: 09:51
Печать  
остаток в каком ресурсе?
  

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Помогите, пожалуйста, в составлении запроса
Ответ #39 - 11. Сентября 2014 :: 09:52
Печать  
|where Остатки.ШтукОстаток<>0
  
Наверх
 
IP записан
 
maxy3d
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #40 - 11. Сентября 2014 :: 10:19
Печать  
Eprst писал(а) 11. Сентября 2014 :: 09:52:
|where Остатки.ШтукОстаток<>0

СПАСИБО!
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите, пожалуйста, в составлении запроса
Ответ #41 - 11. Сентября 2014 :: 10:33
Печать  
регистр складского/партионного учета в котором на остатке в штуках 0, а в других ресурсах не 0 - должен настораживать
  

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


1C++ rocks!

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


тоесть как присвоить переменной значение из двух регистров? очередно раз спасибо!


2. И подскажите, пожалуйста, правильно ли присвоина переменная "Вид"? в оригинале написано:
Код
Выбрать все
|Вид		= Регистр.Взаиморасчеты.Товар.ВидИзделия; 


Как в прямом:
Код
Выбрать все
|Select
	|   Взаим.Товар	   [Товар $Справочник.Номенклатура],
	|   Взаим.Партия	[Партия $Справочник.Партии],
	|   Взаим.Склад 	[Склад $Справочник.Подразделения],
	|   Вид	 		[Вид $Справочник.Номенклатура.ВидИзделия], 



или правильней так:
Код
Выбрать все
|Select
	|   Взаим.Товар	   [Товар $Справочник.Номенклатура],
	|   Взаим.Партия	[Партия $Справочник.Партии],
	|   Взаим.Склад 	[Склад $Справочник.Подразделения],
	|   Вид	 		[Вид $Перечисления.ВидИзделия], 


3. Как в запросе прописать переменную, которая может быть как группой так и элементом или вообще не выбрана?
« Последняя редакция: 15. Сентября 2014 :: 10:05 - maxy3d »  
Наверх
 
IP записан
 
maxy3d
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #43 - 15. Сентября 2014 :: 07:38
Печать  
trad писал(а) 11. Сентября 2014 :: 10:33:
регистр складского/партионного учета в котором на остатке в штуках 0, а в других ресурсах не 0 - должен настораживать

Фирма занимается изготовление ювелирки - каждое изделие - это уникальная партия (в связи с весом и камнями), хотя может быть одинаковый артикул товара.
  
Наверх
 
IP записан
 
maxy3d
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 89
Зарегистрирован: 05. Сентября 2014
Re: Помогите, пожалуйста, в составлении запроса
Ответ #44 - 15. Сентября 2014 :: 09:11
Печать  
Навсякий случай, для ясности моей задачи, это полный запрос, который я сейчас пытаюсь переделать на прямой запрос:
Код
Выбрать все
Запрос = СоздатьОбъект("Запрос");
	ТекстЗапроса =
	"//{{ЗАПРОС(Сформировать)
	|Период с ВыбКонПериода по ВыбКонПериода;
	|Товар	    = Регистр.Взаиморасщеты.Товар,Регистр.ПартииТоваров.Товар;
	|Партия	   = Регистр.Взаиморасщеты.Партия,Регистр.ПартииТоваров.Партия;
	|Склад	    = Регистр.Взаиморасщеты.Магазин,Регистр.ПартииТоваров.Склад;
	|Вид		= Регистр.Взаиморасщеты.Товар.ВидИзделия,Регистр.ПартииТоваров.Товар.ВидИзделия;
	|ТипПФ	    = Регистр.Взаиморасщеты.Товар.ТипПФ,Регистр.ПартииТоваров.Товар.ТипПФ;
	|Тип		= Регистр.Взаиморасщеты.Товар.Тип,Регистр.ПартииТоваров.Товар.Тип;
	|Акция			=
	|Вуду		  = Регистр.Взаиморасщеты.Партия.ВидУчета,Регистр.ПартииТоваров.Партия.ВидУчета;
	|Клиент	   = Регистр.Взаиморасщеты.Партия.Поставщик,Регистр.ПартииТоваров.Партия.Поставщик;
	|Штук	     = Регистр.Взаиморасщеты.Количество,Регистр.ПартииТоваров.Штук;
	|Масса	    = Регистр.Взаиморасщеты.Масса,Регистр.ПартииТоваров.Масса;
	|МассаБК	  = Регистр.Взаиморасщеты.МассаБК,Регистр.ПартииТоваров.МассаБК;
	|Сумма	    = Регистр.Взаиморасщеты.Сумма,Регистр.ПартииТоваров.Сумма;
	|СуммаП	   = Регистр.Взаиморасщеты.СуммаПродажи;
	|Фирмочка	 = Регистр.Взаиморасщеты.Партия.Фирма,Регистр.ПартииТоваров.Партия.Фирма;
	|ВладелецТовара = Регистр.Взаиморасщеты.Партия.ВладелецТовара;
	|Функция ШтОст  = КонОст(Штук);
	|Функция МБКОст = КонОст(МассаБК);
	|Функция МОст   = КонОст(Масса);
	|Функция КОст   = КонОст(Сумма);
	|Функция КПОст  = КонОст(СуммаП);
	|Группировка Клиент без групп;
	|Группировка Вид;   // без групп;
	|Группировка Товар Упорядочить по Товар.Наименование без групп;
	|Группировка Партия;
	|Условие(Тип = Константа.Изделие);
	|"//}}ЗАПРОС
	;

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

	Если Акц.Выбран() = 1 Тогда
		ТекстЗапроса = ТекстЗапроса + "Условие(Акция = Акц);";
	КонецЕсли;
	Если Фирма.Выбран() = 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 записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 ... 11
ОтправитьПечать