Как не выводить область в печатной форме
Подскажите пожалуйста. Можно ли проверить вывелась область или нет и если область уже есть то не выводить ее, а если нет то вывести.
Если выводить область, то он ее выводит несколько раз т.к. в цикле
Или как можно по другому это написать
Простите если что-то не так, я стараюсь
Обл = Макет.ПолучитьОбласть("Вредность");
Для Каждого СтрокаТаб Из ТаблицаНачислений Цикл
Если СтрокаТаб.Сотрудник.ФизическоеЛицо.Наименование = ПараметрыМакета.Работник Тогда
Если СтрокаТаб.Начисление = "Надбавка за вредность" Тогда
Обл.Параметры.Размер = СтрокаТаб.Размер;
ТабличныйДокумент.Вывести(Обл);
Иначе
Обл.Параметры.Размер = "0%";
//ТабличныйДокумент.Вывести(Обл);
КонецЕсли;
КонецЕсли;
КонецЦикла;
ПоказатьЕсли выводить область, то он ее выводит несколько раз т.к. в цикле
Или как можно по другому это написать
Простите если что-то не так, я стараюсь
По теме из базы знаний
- Вывод печатных форм с запросом данных в форму "Печать документов" из подсистемы БСП "Печать".
- Универсальная печатная форма Приказа/Договора с возможностью настройки макета в пользовательском режиме
- Полезный код для программистов 1С (часть 3). Подготовка печатных форм + подсистема Управление печатью (БСП)
- Конструктор печатных форм (PrintWizard). Часть 1: Печатные формы. А что, собственно, не так?
- Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Вот так?
Обл = Макет.ПолучитьОбласть("Вредность");
ОбластьВыводилась = Ложь;
Для Каждого СтрокаТаб Из ТаблицаНачислений Цикл
Если СтрокаТаб.Сотрудник.ФизическоеЛицо.Наименование = ПараметрыМакета.Работник Тогда
Если Не ОбластьВыводилась Тогда
Если СтрокаТаб.Начисление = "Надбавка за вредность" Тогда
Обл.Параметры.Размер = СтрокаТаб.Размер;
ТабличныйДокумент.Вывести(Обл);
ОбластьВыводилась = Истина;
Иначе
Обл.Параметры.Размер = "0%";
ТабличныйДокумент.Вывести(Обл);
ОбластьВыводилась = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Показать
(4) ну так вроде работает
ну и так работает вроде
Обл = Макет.ПолучитьОбласть("Вредность");
ОбластьВыводилась = Ложь;
Для Каждого СтрокаТаб Из ТаблицаНачислений Цикл
Если Не ОбластьВыводилась Тогда
Если СтрокаТаб.Сотрудник.ФизическоеЛицо.Наименование = ПараметрыМакета.Работник Тогда
//Если Не ОбластьВыводилась Тогда
Если СтрокаТаб.Начисление = "Надбавка за вредность" Тогда
Обл.Параметры.Размер = СтрокаТаб.Размер;
ТабличныйДокумент.Вывести(Обл);
//ОбластьВыводилась = Истина;
Иначе
Обл.Параметры.Размер = "0%";
ТабличныйДокумент.Вывести(Обл);
//ОбластьВыводилась = Истина;
КонецЕсли;
ОбластьВыводилась = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Показатьну и так работает вроде
(3)
Обл = Макет.ПолучитьОбласть("Вредность");
Обл.Параметры.Размер = "0%";
Для Каждого СтрокаТаб Из ТаблицаНачислений Цикл
Если СтрокаТаб.Сотрудник.ФизическоеЛицо.Наименование = ПараметрыМакета.Работник Тогда
Обл.Параметры.Размер = СтрокаТаб.Размер;
Прервать;
КонецЕсли;
КонецЦикла;
ТабличныйДокумент.Вывести(Обл);
Показать
Судя по всему, область должна быть выведена 1 раз пустая или заполненная в зависимости найден ли работник.
В этом случае желательно в ТаблицаНачислений иметь колонку НаименованиеФизЛица, в которой будет храниться то, что вы получаете через "СтрокаТаб.Сотрудник.ФизическоеЛицо.Наименование". Тогда принцип будет такой:
В этом случае желательно в ТаблицаНачислений иметь колонку НаименованиеФизЛица, в которой будет храниться то, что вы получаете через "СтрокаТаб.Сотрудник.ФизическоеЛицо.Наименование". Тогда принцип будет такой:
НайденныеСтроки = ТаблицаНачислений.НайтиСтроки(Новый Структура("НаименованиеФизЛица", ПараметрыМакета.Работник));
Если НайденныеСтроки.Количество() > 0 Тогда
Обл.Параметры.Размер = НайденныеСтроки[0].Размер;
Иначе
Обл.Параметры.Размер = "0%";
КонецЕсли;
ТабличныйДокумент.Вывести(Обл);
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот