Запрос в регистр сведений ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних

1. Netker 24.11.20 13:18 Сейчас в теме
Помогите разобраться в чем ошибка. Пишу запрос для вывода в печатную форму данных по Окладу сотрудника
В запросе в функции ДанныеДляПечатиДопникОсновныеНачисления делаю условия что бы выбирал только значение с Окладом, но при выполнении выводится дополнительно 2 пустых строчки.
И второй вопрос Из функции ДанныеДляПечатиДопникОсновныеНачисления вставляю данные РезультатНачисления = ДанныеДляПечатиДопникОсновныеНачисления(МассивДанныхЗаполнения);
Передается текст "ТаблицаЗначений".

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

Процедура ВывестиДанныеДопник(Макет, ТабличныйДокумент, МассивДанныхЗаполнения, ОбъектыПечати) Экспорт
	
	//Если Макет <> Неопределено Тогда
			
		ПерваяСправка = Истина;
		Для каждого ПараметрыМакета Из МассивДанныхЗаполнения Цикл
			
			НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
			
			Если Не ПерваяСправка Тогда
				ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
			Иначе
				ПерваяСправка = Ложь;
			КонецЕсли;
			
			Макет.Параметры.Заполнить(ПараметрыМакета);
			
			РезультатСклонения = "";
			Если ФизическиеЛицаЗарплатаКадры.Просклонять(Строка(ПараметрыМакета.ФИОПолные), 1, РезультатСклонения, ПараметрыМакета.Пол, ПараметрыМакета.ФизическоеЛицо) Тогда
				Макет.Параметры.ФИОПолные = РезультатСклонения;
			КонецЕсли;			
			
			КоличествоСтавок = "";
			Макет.Параметры.ЗанимаемыхСтавок = ПараметрыМакета.КоличествоСтавок; 
			
			//Оклад
			РезультатНачисления = ДанныеДляПечатиДопникОсновныеНачисления(МассивДанныхЗаполнения);
			Макет.Параметры.СуммаОклада = РезультатНачисления;

			ТабличныйДокумент.Вывести(Макет);
			
			УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ПараметрыМакета.Ссылка);
			
		КонецЦикла;
		
	//КонецЕсли;
	
КонецПроцедуры
Показать
По теме из базы знаний
Найденные решения
4. Drivingblind 228 24.11.20 13:41 Сейчас в теме
(3) нет. вот так:
ВЫБРАТЬ
ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.Значение КАК СуммаОклада
ИЗ
РегистрСведений.ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.СрезПоследних(&Период, Сотрудник В (&Сотрудник) И Показатель = &Оклад) КАК ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Drivingblind 228 24.11.20 13:33 Сейчас в теме
Проблемный запрос.
вот это "ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковС­р­езПоследних.Сотрудник В(&Сотрудник)" и это " ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­­езПоследних.Показатель = &Оклад" перенесите в параметры виртуальной таблицы
3. Netker 24.11.20 13:37 Сейчас в теме
Так?
Запрос.Текст = "ВЫБРАТЬ
	               |	ВложенныйЗапрос.СуммаОклада КАК СуммаОклада
	               |ИЗ
	               |	(ВЫБРАТЬ
	               |		ВЫБОР
	               |			КОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.Показатель = &Оклад
	               |				ТОГДА ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.Значение
	               |		КОНЕЦ КАК СуммаОклада
	               |	ИЗ
	               |		РегистрСведений.ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.СрезПоследних(&Период, ) КАК ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних
	               |	ГДЕ
	               |		ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.Сотрудник В(&Сотрудник)) КАК ВложенныйЗапрос";
Показать
4. Drivingblind 228 24.11.20 13:41 Сейчас в теме
(3) нет. вот так:
ВЫБРАТЬ
ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних.Значение КАК СуммаОклада
ИЗ
РегистрСведений.ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.СрезПоследних(&Период, Сотрудник В (&Сотрудник) И Показатель = &Оклад) КАК ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСр­езПоследних
5. Drivingblind 228 24.11.20 13:44 Сейчас в теме
по второму вопросу:
РезультатНачисления = ДанныеДляПечатиДопникОсновныеНачисления(МассивДанныхЗаполнения);
Макет.Параметры.СуммаОклада = РезультатНачисления;

у вас в РезультатНачисления возвращается таблица значений и вы пытаетесь вывести её в ячейку.
6. Netker 24.11.20 13:47 Сейчас в теме
Спасибо по первому вопросу все получилось.
По второму не могу понять из таблица значений данные выдернуть
7. Drivingblind 228 24.11.20 13:55 Сейчас в теме
(6) не выгружайте результат функции ДанныеДляПечатиДопникОсновныеНачисления в таблицу значений.
Возвращайте сразу цифру.
вместо:
Возврат Запрос.Выполнить().Выгрузить();

например, вот так:
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Возврат Выборка.СуммаОклада;
8. Netker 24.11.20 14:06 Сейчас в теме
(7) А если делать вывод результата так?
Макет.Параметры.СуммаОклада = РезультатНачисления[0].СуммаОклада;

Но вопрос что будет если будет несколько строк в ТЗ?
9. Drivingblind 228 24.11.20 14:18 Сейчас в теме
(8) выберется первая строка
Оставьте свое сообщение

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