Вывод данных из таблицы

1. Krey_ 11.12.18 13:38 Сейчас в теме
Помогите пожалуйста с кодом. Нужно чтобы в таблицу записывались данные только из определенного документа (все остальное записывается правильно), сейчас записывает в таблицу из каждого элемента переменные(рис.). Это берется из Документа КадровыйПереводСписком.

	ВыборкаПоСотрудникам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	Пока ВыборкаПоСотрудникам.Следующий() Цикл
		ОписанияНачислений = Новый Соответствие;
		
Если Не ОписанияНачисленийПоПериодам.Получить(ОписанияНачислений) = ВыборкаПоСотрудникам.Следующий() Тогда 
		
		ВыборкаПоПериодам = ВыборкаПоСотрудникам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		Пока ВыборкаПоПериодам.Следующий() Цикл
			
			ВыведенныеПоказатели = Новый Соответствие;
			ОписаниеОкладаЗаполнялось = Ложь;
			
			ОписаниеСоставаНачислений = КадровыйУчетБазовый.ОписаниеСоставаНачислений();
			
			//Если Не ОписанияНачислений.Получить( ОписаниеСоставаНачислений)= ВыборкаПоСотрудникам.Следующий() Тогда 

			
			Выборка = ВыборкаПоПериодам.Выбрать();
			Пока Выборка.Следующий() Цикл
				
				Если ЗначениеЗаполнено(Выборка.Значение) И ВыведенныеПоказатели.Получить(Выборка.Показатель) = Истина Тогда
					Продолжить;
				КонецЕсли;
				
				Если Не ОписаниеОкладаЗаполнялось И Выборка.ОкладТариф И Выборка.Используется Тогда
					
					ОписаниеСоставаНачислений.Вставить("ПоказательОкладТариф", Выборка.Показатель);
					ОписаниеСоставаНачислений.Вставить("ОкладТариф", Выборка.Значение);
					
					Если ЗначениеЗаполнено(Выборка.Значение) Тогда
						ВыведенныеПоказатели.Вставить(Выборка.Показатель, Истина);
					КонецЕсли;
					
					Если ИспользоватьКраткиеПредставления Тогда
						ПредставлениеТарифнойСтавки = ?(ПустаяСтрока(Выборка.ПоказательКраткоеНаименование), Строка(Выборка.НачислениеКраткоеНаименование), Строка(Выборка.ПоказательКраткоеНаименование))
					Иначе
						
						Если Выборка.Значение = 0 Тогда
							ПредставлениеТарифнойСтавки = Выборка.НачислениеНаименование;
						Иначе
							ПредставлениеТарифнойСтавки = ?(ПустаяСтрока(Выборка.ПоказательНаименование), Выборка.НачислениеНаименование, Выборка.ПоказательНаименование)
						КонецЕсли;
						
					КонецЕсли;
					
					Если Выборка.Значение > 0 Тогда
						
						ПредставлениеТарифнойСтавки =
							ПредставлениеТарифнойСтавки + ": " + Формат(Выборка.Значение, "ЧДЦ=" + Выборка.Точность + "; ЧГ=");
						
						Если ВыводитьДенежныеПоказателиСВалютой И Выборка.ДенежныйПоказатель Тогда
							
							ПредставлениеТарифнойСтавки = ПредставлениеТарифнойСтавки + " " + НСтр("ru='руб.'");
							
							Если Выборка.ВидТарифнойСтавки = Перечисления.ВидыТарифныхСтавок.ЧасоваяТарифнаяСтавка Тогда
								ПредставлениеТарифнойСтавки = ПредставлениеТарифнойСтавки + " " + НСтр("ru='за час'");
							ИначеЕсли Выборка.ВидТарифнойСтавки = Перечисления.ВидыТарифныхСтавок.ДневнаяТарифнаяСтавка Тогда
								ПредставлениеТарифнойСтавки = ПредставлениеТарифнойСтавки + " " + НСтр("ru='за день'");
							КонецЕсли;
							
						КонецЕсли;
						
					КонецЕсли;
					
					ОписаниеСоставаНачислений.Вставить("ОписаниеОклада", ПредставлениеТарифнойСтавки);
					
					ОписаниеОкладаЗаполнялось = Истина;
					
				Иначе
					
					Если Выборка.ОкладТариф
						И Не Выборка.Используется Тогда
						
						Продолжить;
						
					КонецЕсли;
					
					Если Выборка.Используется Тогда
						
						ОписаниеНадбавок = ОписаниеСоставаНачислений.ОписаниеНадбавок;
						
						//..
						СтрокаТаб = ТаблицаНачислений.Добавить();
						СтрокаТаб.Сотрудник = Выборка.Сотрудник;
						//..
						
						Если ИспользоватьКраткиеПредставления Тогда
							ПредставлениеПоказателя = ?(ПустаяСтрока(Выборка.ПоказательКраткоеНаименование), Выборка.НачислениеКраткоеНаименование, Выборка.ПоказательКраткоеНаименование);
						Иначе
							
							Если Выборка.Значение = 0 Тогда
								ПредставлениеПоказателя = Выборка.НачислениеНаименование;
							Иначе
								ПредставлениеПоказателя = ?(ПустаяСтрока(Выборка.ПоказательНаименование), Выборка.НачислениеНаименование, Выборка.ПоказательНаименование);
							КонецЕсли;
							
						КонецЕсли;
						//..
						СтрокаТаб.Начисление = Выборка.НачислениеПредст;
						//..
						
						ОписаниеНадбавок = ?(ПустаяСтрока(ОписаниеНадбавок), "", ОписаниеНадбавок + "; ") + ПредставлениеПоказателя;
						
						Если Выборка.Значение > 0 Тогда
							
							ОписаниеНадбавок = ОписаниеНадбавок + ": " + Формат(Выборка.Значение, "ЧДЦ=" + Выборка.Точность + "; ЧГ=");
						
							Если ВыводитьДенежныеПоказателиСВалютой И Выборка.ДенежныйПоказатель Тогда
								ОписаниеНадбавок = ОписаниеНадбавок + " " + НСтр("ru='руб.'");
							КонецЕсли;
							
							//..
							СтрокаТаб.Размер = Формат(Выборка.Значение, "ЧДЦ=" + Выборка.Точность + "; ЧГ=");
							Если ВыводитьДенежныеПоказателиСВалютой И Выборка.ДенежныйПоказатель Тогда
								СтрокаТаб.Размер = СтрокаТаб.Размер + " " + НСтр("ru='руб.'");
							ИначеЕсли СтрНайти(Выборка.ПоказательНаименование, "роцент")+СтрНайти(Выборка.ПоказательНаименование, "%")>0 Тогда
								СтрокаТаб.Размер = СтрокаТаб.Размер + " (%)";
							КонецЕсли;
							//..

						
						КонецЕсли;
						
						Если Не ПустаяСтрока(ИмяПоляДатаОкончания) Тогда
							
							Если ЗначениеЗаполнено(Выборка.ДатаОкончанияНачисления)
								И Выборка.ДатаОкончанияНачисления < Выборка.ДатаОкончания
								И Не Выборка.ИспользуетсяПоОкончании Тогда
								
								ОписаниеНадбавок = ОписаниеНадбавок + " " + НСтр("ru='по'") + " " + Формат(Выборка.ДатаОкончанияНачисления, "ДЛФ=D");
								
							ИначеЕсли ЗначениеЗаполнено(Выборка.ДатаОкончания)
								И ЗначениеЗаполнено(Выборка.Значение) Тогда
								
								ОписаниеНадбавок = ОписаниеНадбавок + " " + НСтр("ru='по'") + " " + Формат(Выборка.ДатаОкончания, "ДЛФ=D");
								
							КонецЕсли;
						
						КонецЕсли;
						
						Если ЗначениеЗаполнено(Выборка.Значение) Тогда
							ВыведенныеПоказатели.Вставить(Выборка.Показатель, Истина);
						КонецЕсли;
					
					ИначеЕсли ЗначениеЗаполнено(Выборка.ДатаОкончанияНачисления) Тогда
						
						ОписаниеНадбавок = ОписаниеСоставаНачислений.ОписаниеНадбавок;
						ОписаниеНадбавок = 
							?(ПустаяСтрока(ОписаниеНадбавок), "", ОписаниеНадбавок + "; ")
							+ ?(ПустаяСтрока(Выборка.Показатель), Выборка.Начисление, Выборка.Показатель)
							+ ?(Выборка.Значение = 0, "", ": " + Формат(Выборка.Значение, "ЧДЦ=" + Выборка.Точность + "; ЧГ="))
							+ " " + НСтр("ru='с'") + " " + Формат(КонецДня(Выборка.ДатаОкончанияНачисления) + 1, "ДЛФ=D");
							
					КонецЕсли;
					
					ОписаниеСоставаНачислений.Вставить("ОписаниеНадбавок", ОписаниеНадбавок);
					
				КонецЕсли;
				
			КонецЦикла;
			
			ОписанияНачислений.Вставить(ВыборкаПоПериодам.Период, ОписаниеСоставаНачислений);
			
//КонецЕсли;
	
		КонецЦикла;
		
		ОписанияНачисленийПоПериодам.Вставить(ВыборкаПоСотрудникам.Сотрудник, ОписанияНачислений);
		
КонецЕсли;
	КонецЦикла;
Показать




Нужно чтобы у каждой печати были свои данные в таблице

Вот это вставил в начале (понимаю что не правильно) и теперь выводит только из 1 документа, а как сделать чтобы выводилось для каждого свое так и не знаю.
Если Не ОписанияНачисленийПоПериодам.Получить(ОписанияНачислений) = ВыборкаПоСотрудникам.Следующий() Тогда 


Сразу простите пожалуйста за тупость
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
10. Krey_ 13.12.18 08:27 Сейчас в теме
Вот что было
Обл = Макет.ПолучитьОбласть("Надбавки");
			Для Каждого СтрокаТаб Из ТаблицаНачислений Цикл
					Обл.Параметры.Начисление = СтрокаТаб.Начисление;
					Обл.Параметры.Размер = СтрокаТаб.Размер;
					ТабличныйДокумент.Вывести(Обл);
			КонецЦикла;	


Вот что сделал
Обл = Макет.ПолучитьОбласть("Надбавки");
			Для Каждого СтрокаТаб Из ТаблицаНачислений Цикл
				Если СтрокаТаб.Сотрудник.ФизическоеЛицо.Наименование = ПараметрыМакета.Работник Тогда
					Обл.Параметры.Начисление = СтрокаТаб.Начисление;
					Обл.Параметры.Размер = СтрокаТаб.Размер;
					ТабличныйДокумент.Вывести(Обл);
				КонецЕсли;
			КонецЦикла;	
Показать



Вот начало(Если кому-то нужно будет, хотя врятли)
	Если Макет <> Неопределено Тогда
		
		ПервыйПриказ = Истина;
		Для каждого ПараметрыМакета Из МассивДанныхЗаполнения Цикл
			Если Не ПервыйПриказ Тогда
				ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
			Иначе
				ПервыйПриказ = Ложь;
			КонецЕсли;
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. oleg-x 26 11.12.18 13:47 Сейчас в теме
(1) Если Не ОписанияНачисленийПоПериодам.Получить(ОписанияНачислений) = ВыборкаПоСотрудникам.Следующий() тогда
Это лишнее, у Вас уже Выше соблюдено условие ВыборкаПоСотрудникам.Следующий().
Перепишите так:
ОписанияНачисленийПоПериодам.Получить(ОписанияНачислений) = Ложь
3. Krey_ 11.12.18 13:51 Сейчас в теме
4. oleg-x 26 11.12.18 13:53 Сейчас в теме
(3) Этим условием Вы хотели прервать выполнение этого круга цикла и сделать выборка.Следующий()?
5. Krey_ 11.12.18 13:55 Сейчас в теме
(4)В конце прочитайте что написано )
6. Krey_ 11.12.18 13:59 Сейчас в теме
(2) хм вот с этим
ОписанияНачисленийПоПериодам.Получить(ОписанияНачислений) = Ложь

вообще ничего не вывелось

а с этим все как и было
Не ОписанияНачисленийПоПериодам.Получить(ОписанияНачислений) = Истина
7. oleg-x 26 11.12.18 14:01 Сейчас в теме
(6) Значит возвращает истина и какое то описание, а ложь не возвращает.
8. Bene_Valete 188 12.12.18 03:19 Сейчас в теме
"ОписаниеСоставаНачислений" - это скорее всего типа данных "Структура". Напишите сообщить(ТипЗнч(ОписаниеСоставаНачислений)); чтобы в этом убедиться, или если уже знакомы с отладкой, с помощью нее. В момент когда Вы присваиваете струтуре значение
ОписаниеСоставаНачислений.Вставить("ОписаниеНадбавок", ОписаниеНадбавок);
Предыдущее значение всегда затирается. Часто в таких случаях создают массив, куда добавляют значение структуры на определенном витке цикла, таким образом можно сохранить их всех.

МассивОписаний = новый массив;

Пока Выборка.Следующий() Цикл

.....

МассивОписаний.Добавить(ОписанияНачислений);

.....

КонецЦикла
Показать
9. Krey_ 13.12.18 08:24 Сейчас в теме
Простите просто наверно не корректно задал вопрос, нужно было поменять в выводе, а я скинул код от куда берутся значения.
10. Krey_ 13.12.18 08:27 Сейчас в теме
Вот что было
Обл = Макет.ПолучитьОбласть("Надбавки");
			Для Каждого СтрокаТаб Из ТаблицаНачислений Цикл
					Обл.Параметры.Начисление = СтрокаТаб.Начисление;
					Обл.Параметры.Размер = СтрокаТаб.Размер;
					ТабличныйДокумент.Вывести(Обл);
			КонецЦикла;	


Вот что сделал
Обл = Макет.ПолучитьОбласть("Надбавки");
			Для Каждого СтрокаТаб Из ТаблицаНачислений Цикл
				Если СтрокаТаб.Сотрудник.ФизическоеЛицо.Наименование = ПараметрыМакета.Работник Тогда
					Обл.Параметры.Начисление = СтрокаТаб.Начисление;
					Обл.Параметры.Размер = СтрокаТаб.Размер;
					ТабличныйДокумент.Вывести(Обл);
				КонецЕсли;
			КонецЦикла;	
Показать



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

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