Имя: Пароль:
1C
1С v8
1С 8.3 Формирование печатной формы
0 andmerc
 
20.05.19
15:12
Добрый день, есть готовая обработка формирования печатных форм направлений. Печает каждое направление(каждую номенклатурную позицию) с отдельной шапкой, т.е. отдельным самостоятельным документом. Нужно переделать так чтобы строки по одному человеку выводились под общей шапкой. Пример: https://i109.fastpic.ru/big/2019/0520/18/83a966ea2c3078fc693757be6f427018.png

У нас есть вот такая процедура, я понимаю что цикл проходит по каждому значению, но как переделать не понимаю.

Процедура СформироватьСервер()
    ЭтотОбъект.Результат.Очистить();
    
    Макет_ = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("Макет");
    
    ОбластьЗаголовок_ = Макет_.ПолучитьОбласть("Заголовок");
    ОбластьШапка_ = Макет_.ПолучитьОбласть("Шапка");
    ОбластьШапкаТаблицы_ = Макет_.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьСтрока = Макет_.ПолучитьОбласть("Строка");
    УслугиОтделения_ = ПолучитьУслугиДокумента();
    
    Для Каждого Услуга_ Из УслугиОтделения_ Цикл                    
        ОбластьЗаголовок_.Параметры.Подразделение = Услуга_.Подразделение;
        ЭтотОбъект.Результат.Вывести(ОбластьЗаголовок_);
        ДанныеПациента_ = Регистратура.ПолучитьДанныеПациента(Услуга_.Пациент, ТекущаяДатаСеанса());
        ОбластьШапка_.Параметры.Заполнить(ДанныеПациента_.ФИО);
        ОбластьШапка_.Параметры.Заполнить(Услуга_);
        ОбластьШапка_.Параметры.ЛечащийВрач = ПолучитьНазначившегоВрача(Услуга_.Документ);
        ОбластьШапка_.Параметры.МедицинскаяКарта = Услуга_.Документ.МедицинскаяКарта.НомерКартыПредставление;
        ТабличныйДокумент_ = Новый ТабличныйДокумент;
        ТабличныйДокумент_.Вывести(ОбластьШапка_);
        
        ОбластьСтрока.Параметры.Заполнить(Услуга_);
        
        ТабличныйДокумент_.Вывести(ОбластьСтрока);
        
        Если Не ЭтотОбъект.Результат.ПроверитьВывод(ТабличныйДокумент_) тогда
            ЭтотОбъект.Результат.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        ЭтотОбъект.Результат.Вывести(ТабличныйДокумент_);
    КонецЦикла;
КонецПроцедуры
1 Eg0rkas
 
20.05.19
15:36
как вариант, завести переменную, в которую заносим значение ФИО, потом делаем условие, если ДанныеПациента_.ФИО = нашапеременнаясФИО, тогда не создаем новый табличный документ, а просто заполняем новыми параметрами