ЗапросШт = новый Запрос;
ЗапросШт.Текст = "ВЫБРАТЬ
| ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации.Наименование КАК Подразделение,
| ШтатноеРасписаниеОрганизаций.Должность.Наименование КАК Должность,
| ШтатноеРасписаниеОрганизаций.а_ПроцентВредность,
| ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации.Код КАК кодПодр,
| ШтатноеРасписаниеОрганизаций.Должность.Код КАК кодДолжн
|ИЗ
| РегистрСведений.ШтатноеРасписаниеОрганизаций КАК ШтатноеРасписаниеОрганизаций
|
|СГРУППИРОВАТЬ ПО
| ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации.Наименование,
| ШтатноеРасписаниеОрганизаций.Должность.Наименование,
| ШтатноеРасписаниеОрганизаций.а_ПроцентВредность,
| ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации.Код,
| ШтатноеРасписаниеОрганизаций.Должность.Код
|
|УПОРЯДОЧИТЬ ПО
| Подразделение,
| ШтатноеРасписаниеОрганизаций.Должность.Код";
Выборка = ЗапросШт.Выполнить().Выбрать(ОбходРезультатаЗапроса.Прямой);
Показать
Из этого данные подставляются в другой запрос
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ОбластьПодразделение.Параметры,Выборка);
ЗапросСотр = новый Запрос;
ЗапросСотр.Текст = "ВЫБРАТЬ
| СотрудникиОрганизаций.Наименование КАК ФИО,
| СотрудникиОрганизаций.ТарифныйРазряд.Наименование,
| СотрудникиОрганизаций.ДатаУвольнения КАК дата
|ИЗ
| Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
|ГДЕ
| СотрудникиОрганизаций.ТекущееПодразделениеОрганизации.Код = &кодПодразд
| И СотрудникиОрганизаций.ТекущаяДолжностьОрганизации.Код = &кодДолжност
| И СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
|
|СГРУППИРОВАТЬ ПО
| СотрудникиОрганизаций.Наименование,
| СотрудникиОрганизаций.ТарифныйРазряд.Наименование,
| СотрудникиОрганизаций.ДатаУвольнения";
ЗапросСотр.УстановитьПараметр("кодДолжност",выборка.кодДолжн);
ЗапросСотр.УстановитьПараметр("кодПодразд",выборка.кодПодр); //выборка.кодПодр
ЗаполнитьЗначенияСвойств(Областьданные.Параметры,Выборка);
ВыборкаСотр = ЗапросСотр.Выполнить().Выбрать(ОбходРезультатаЗапроса.Прямой);
Пока ВыборкаСотр.Следующий() Цикл
// если выборка.кодДолжн<>ВыборкаСотр.кд и выборка.кодПодр<>ВыборкаСотр.кп тогда ВыборкаСотр.ФИО="ВАКАНТНО" конецЕсли;
ЗаполнитьЗначенияСвойств(Областьданные.Параметры,ВыборкаСотр);
конеццикла;
Показать
но по неизвестной мне причине выборка.кодДолжн (поле первого запроса)<>СотрудникиОрганизаций.ТекущаяДолжностьОрганизации.Код (поле второго запроса) и выборка.кодПодр (поле первого запроса)<> СотрудникиОрганизаций.ТекущееПодразделениеОрганизации.Код (поле второго запроса) .
Мало информационное изображение (чему соответствует каждая ячейка не понятно)
И как я понял из
но по неизвестной мне причине выборка.кодДолжн (поле первого запроса)<>СотрудникиОрганизаций.ТекущаяДолжностьОрганизации.Код (поле второго запроса) и выборка.кодПодр (поле первого запроса)<> СотрудникиОрганизаций.ТекущееПодразделениеОрганизации.Код (поле второго запроса)
- из этого следует, что условия ЗапросСотр ни разу не выполнились или они выполнились на перовом цикле и не выполняются в последующих?
Там будет некоторые манипуляции с данными, поэтому сделано 2 запроса.
Первый запрос " Выборка" возвращает штатное расписание, в том числе поля выборка.кодДолжн и выборка.кодПодр.
Эти 2 поля устанавливаются в качестве параметров во второй запрос
ЗапросСотр.УстановитьПараметр("кодДолжност",выборка.кодДолжн);
ЗапросСотр.УстановитьПараметр("кодПодразд",выборка.кодПодр);
Но при выводе эти поля не совпадают. https://gyazo.com/44e9bae28ea2914efa47450513661fcb. Складывается ощущение, что если должность вакантна (на ней не сотрудника), то подставляется предыдущая найденная запись. Может где-то нужно обнулять второй запрос?
1) А зачем получать код и по нему искать, можно ведь ссылку подхватить и с ней сравнивать?
2) СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) Дата увольнения точно такая?