Как не выводить область в печатной форме

1. Krey_ 14.12.18 11:43 Сейчас в теме
Подскажите пожалуйста. Можно ли проверить вывелась область или нет и если область уже есть то не выводить ее, а если нет то вывести.

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

Если выводить область, то он ее выводит несколько раз т.к. в цикле
Или как можно по другому это написать

Простите если что-то не так, я стараюсь
+
По теме из базы знаний
Найденные решения
2. ZergKRSK 129 14.12.18 11:54 Сейчас в теме
Заведи переменную ОбластьВыводилась, тип Булево. До цикла = Ложь, Как только вывел = Истина. Ну и проверку выводить секцию Если НЕ ОбластьВыводилась.
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ZergKRSK 129 14.12.18 11:54 Сейчас в теме
Заведи переменную ОбластьВыводилась, тип Булево. До цикла = Ложь, Как только вывел = Истина. Ну и проверку выводить секцию Если НЕ ОбластьВыводилась.
+
3. Krey_ 14.12.18 12:00 Сейчас в теме
(2) Вот так?
Обл = Макет.ПолучитьОбласть("Вредность");
			ОбластьВыводилась = Ложь;
			Для Каждого СтрокаТаб Из ТаблицаНачислений Цикл
				Если СтрокаТаб.Сотрудник.ФизическоеЛицо.Наименование = ПараметрыМакета.Работник Тогда
					Если Не ОбластьВыводилась Тогда
						Если СтрокаТаб.Начисление = "Надбавка за вредность" Тогда
							Обл.Параметры.Размер = СтрокаТаб.Размер; 
							ТабличныйДокумент.Вывести(Обл);	
							ОбластьВыводилась = Истина;
						Иначе
							Обл.Параметры.Размер = "0%";
							ТабличныйДокумент.Вывести(Обл);
							ОбластьВыводилась = Истина;
						КонецЕсли;	
					КонецЕсли;	
				КонецЕсли;
			КонецЦикла;
Показать
+
4. ZergKRSK 129 14.12.18 12:04 Сейчас в теме
(3) Почему ОбластьВыводилась = Истина; два раза?
+
6. Krey_ 14.12.18 12:12 Сейчас в теме
(4) ну так вроде работает
			Обл = Макет.ПолучитьОбласть("Вредность");
			ОбластьВыводилась = Ложь;
			Для Каждого СтрокаТаб Из ТаблицаНачислений Цикл
				Если Не ОбластьВыводилась Тогда
					Если СтрокаТаб.Сотрудник.ФизическоеЛицо.Наименование = ПараметрыМакета.Работник Тогда
					//Если Не ОбластьВыводилась Тогда
						Если СтрокаТаб.Начисление = "Надбавка за вредность" Тогда
							Обл.Параметры.Размер = СтрокаТаб.Размер; 
							ТабличныйДокумент.Вывести(Обл);	
							//ОбластьВыводилась = Истина;
						Иначе
							Обл.Параметры.Размер = "0%";
							ТабличныйДокумент.Вывести(Обл);
							//ОбластьВыводилась = Истина;
						КонецЕсли;	
					ОбластьВыводилась = Истина;		
					КонецЕсли;	
				КонецЕсли;
			КонецЦикла;
Показать

ну и так работает вроде
+
7. SlavaKron 14.12.18 12:13 Сейчас в теме
(3)
Обл = Макет.ПолучитьОбласть("Вредность");
Обл.Параметры.Размер = "0%";
Для Каждого СтрокаТаб Из ТаблицаНачислений Цикл
	Если СтрокаТаб.Сотрудник.ФизическоеЛицо.Наименование = ПараметрыМакета.Работник Тогда
		Обл.Параметры.Размер = СтрокаТаб.Размер; 
		Прервать;   
	КонецЕсли;
КонецЦикла;
ТабличныйДокумент.Вывести(Обл);
Показать
+
8. Krey_ 14.12.18 12:18 Сейчас в теме
(7) а вот это не работает
+
5. SlavaKron 14.12.18 12:07 Сейчас в теме
Судя по всему, область должна быть выведена 1 раз пустая или заполненная в зависимости найден ли работник.

В этом случае желательно в ТаблицаНачислений иметь колонку НаименованиеФизЛица, в которой будет храниться то, что вы получаете через "СтрокаТаб.Сотрудник.ФизическоеЛицо.Наименование". Тогда принцип будет такой:
НайденныеСтроки = ТаблицаНачислений.НайтиСтроки(Новый Структура("НаименованиеФизЛица", ПараметрыМакета.Работник));

Если НайденныеСтроки.Количество() > 0 Тогда
	Обл.Параметры.Размер = НайденныеСтроки[0].Размер;
Иначе
	Обл.Параметры.Размер = "0%";
КонецЕсли;

ТабличныйДокумент.Вывести(Обл);
Показать
+
9. alljoke 14.12.18 17:44 Сейчас в теме
Брать только первую строку из ТаблицаНачислений.
+
Внимание! Тема сдана в архив

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