Помощь с запросом

1. GubinDenis 26 08.12.16 08:18 Сейчас в теме
Здравствуйте. Имеется запрос
ЗапросШт = новый Запрос;
	ЗапросШт.Текст = "ВЫБРАТЬ
	                 |	ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации.Наименование КАК Подразделение,
	                 |	ШтатноеРасписаниеОрганизаций.Должность.Наименование КАК Должность,
	                 |	ШтатноеРасписаниеОрганизаций.а_ПроцентВредность,
	                 |	ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации.Код КАК кодПодр,
	                 |	ШтатноеРасписаниеОрганизаций.Должность.Код КАК кодДолжн
	                 |ИЗ
	                 |	РегистрСведений.ШтатноеРасписаниеОрганизаций КАК ШтатноеРасписаниеОрганизаций
	                 |
	                 |СГРУППИРОВАТЬ ПО
	                 |	ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации.Наименование,
	                 |	ШтатноеРасписаниеОрганизаций.Должность.Наименование,
	                 |	ШтатноеРасписаниеОрганизаций.а_ПроцентВредность,
	                 |	ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации.Код,
	                 |	ШтатноеРасписаниеОрганизаций.Должность.Код
	                 |
	                 |УПОРЯДОЧИТЬ ПО
	                 |	Подразделение,
	                 |	ШтатноеРасписаниеОрганизаций.Должность.Код";   	
	
		Выборка = ЗапросШт.Выполнить().Выбрать(ОбходРезультатаЗапроса.Прямой);
Показать


Из этого данные подставляются в другой запрос

Пока Выборка.Следующий() Цикл
	  	
	      ЗаполнитьЗначенияСвойств(ОбластьПодразделение.Параметры,Выборка);    


			
		ЗапросСотр = новый Запрос;
		
		ЗапросСотр.Текст = "ВЫБРАТЬ
		                   |	СотрудникиОрганизаций.Наименование КАК ФИО,
		                   |	СотрудникиОрганизаций.ТарифныйРазряд.Наименование,
		                   |	СотрудникиОрганизаций.ДатаУвольнения КАК дата
		                   |ИЗ
		                   |	Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
		                   |ГДЕ
		                   |	СотрудникиОрганизаций.ТекущееПодразделениеОрганизации.Код = &кодПодразд
		                   |	И СотрудникиОрганизаций.ТекущаяДолжностьОрганизации.Код = &кодДолжност
		                   |	И СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
		                   |
		                   |СГРУППИРОВАТЬ ПО
		                   |	СотрудникиОрганизаций.Наименование,
		                   |	СотрудникиОрганизаций.ТарифныйРазряд.Наименование,
		                   |	СотрудникиОрганизаций.ДатаУвольнения";
			 ЗапросСотр.УстановитьПараметр("кодДолжност",выборка.кодДолжн);			   
             ЗапросСотр.УстановитьПараметр("кодПодразд",выборка.кодПодр);             //выборка.кодПодр
		
		
            
			   ЗаполнитьЗначенияСвойств(Областьданные.Параметры,Выборка);

	         ВыборкаСотр = ЗапросСотр.Выполнить().Выбрать(ОбходРезультатаЗапроса.Прямой);

			 Пока  ВыборкаСотр.Следующий() Цикл
		//	 если выборка.кодДолжн<>ВыборкаСотр.кд  и  выборка.кодПодр<>ВыборкаСотр.кп тогда ВыборкаСотр.ФИО="ВАКАНТНО" конецЕсли; 
				
				       ЗаполнитьЗначенияСвойств(Областьданные.Параметры,ВыборкаСотр); 
					  

										     

				  конеццикла;
Показать


но по неизвестной мне причине выборка.кодДолжн (поле первого запроса)<>СотрудникиОрганизаций.ТекущаяДолжностьОрганизации.Код (поле второго запроса) и выборка.кодПодр (поле первого запроса)<> СотрудникиОрганизаций.ТекущееПодразделениеОрганизации.Код (поле второго запроса) .

Что я делаю не верно?
https://gyazo.com/92c5c802075138073061e687c3892130
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. bad_wag 51 08.12.16 09:32 Сейчас в теме
А почему они должны быть равны? Какой второй запрос? Может нужно использовать соединение, а не 2 запроса?
3. E_Johnny 08.12.16 09:45 Сейчас в теме
Нужны разъяснения сообщения.

Мало информационное изображение (чему соответствует каждая ячейка не понятно)

И как я понял из
но по неизвестной мне причине выборка.кодДолжн (поле первого запроса)<>СотрудникиОрганизаций.ТекущаяДолжностьОрганизации.Код (поле второго запроса) и выборка.кодПодр (поле первого запроса)<> СотрудникиОрганизаций.ТекущееПодразделениеОрганизации.Код (поле второго запроса)
- из этого следует, что условия ЗапросСотр ни разу не выполнились или они выполнились на перовом цикле и не выполняются в последующих?

4. GubinDenis 26 08.12.16 10:08 Сейчас в теме
Там будет некоторые манипуляции с данными, поэтому сделано 2 запроса.

Первый запрос " Выборка" возвращает штатное расписание, в том числе поля выборка.кодДолжн и выборка.кодПодр.
Эти 2 поля устанавливаются в качестве параметров во второй запрос
ЗапросСотр.УстановитьПараметр("кодДолжност",выборка.кодДолжн);
ЗапросСотр.УстановитьПараметр("кодПодразд",выборка.кодПодр);

Но при выводе эти поля не совпадают. https://gyazo.com/44e9bae28ea2914efa47450513661fcb. Складывается ощущение, что если должность вакантна (на ней не сотрудника), то подставляется предыдущая найденная запись. Может где-то нужно обнулять второй запрос?
5. Ганс 08.12.16 10:09 Сейчас в теме
1) А зачем получать код и по нему искать, можно ведь ссылку подхватить и с ней сравнивать?
2) СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) Дата увольнения точно такая?
6. GubinDenis 26 08.12.16 10:33 Сейчас в теме
1) Если не затруднит напишите пример.
2) Если дата увольнения не проставлена, то точно такая.
7. E_Johnny 08.12.16 12:18 Сейчас в теме
Сколько у тебя организаций в БД?
8. GubinDenis 26 08.12.16 12:24 Сейчас в теме
9. E_Johnny 08.12.16 12:25 Сейчас в теме
Попробуй обращаться к объектам, а не к их реквизитам:

в первом запросе

   ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации КАК кодПодр,
                     |    ШтатноеРасписаниеОрганизаций.Должность КАК кодДолжн 


Во втором запросе
|ГДЕ
                           |    СотрудникиОрганизаций.ТекущееПодразделениеОрганизации = &кодПодразд
                           |    И СотрудникиОрганизаций.ТекущаяДолжностьОрганизации = &кодДолжност



Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот