|   |   | 
| 
 | Внешние печатные формы ↓ (Волшебник 06.03.2024 21:01) | ☑ | ||
|---|---|---|---|---|
| 0
    
        Panda_17 06.03.24✎ 12:29 | 
        Добрый день! В печатной форме выводятся работники. Печатная форма выходить на печать столько раз, сколько указано работников в документе. Если 3 работника, то 3 раза, если один работник, то 1 раз. Подскажите, пожалуйста, как можно сделать, чтобы в независимости от количества работников, указанных в документе, пф выводилась 1 один раз?     | |||
| 1
    
        Волшебник 06.03.24✎ 12:31 | 
        Если это расчётные листки, то так и должно быть.     | |||
| 2
    
        Panda_17 06.03.24✎ 12:33 | 
        (1) это не расчетные листки. ПФ нужна для документа заказ на ремонт     | |||
| 3
    
        Волшебник 06.03.24✎ 12:38 | 
        (2) Если в той ПФ выводится перечень ремонтных операций для каждого работника, то так и должно быть.     | |||
| 4
    
        Panda_17 06.03.24✎ 12:46 | 
        (3) В одном заказе указано несколько работников, которые должны сделать заказ, например 3. ПФ должна выводиться на печать в одном экземпляре с необходимыми данными, а сейчас выходит 3 раза  т.к. в документе указано 3 работника     | |||
| 5
    
        Волшебник 06.03.24✎ 12:48 | 
        (4) Вы меня не убедите, что так быть не должно. Если так кем-то запрограммировано, значит так и должно быть. Попробуйте изменить постановку задачи программисту, чтобы он запрограммировал по-другому.     | |||
| 6
    
        Волшебник 06.03.24✎ 12:49 | 
        (4) Не должна.     | |||
| 7
    
        Gucci76 06.03.24✎ 12:53 | 
        ВывестиГоризонтальныйРазделительСтраниц()  - нет?     | |||
| 8
    
        yurikmellon2 06.03.24✎ 13:25 | 
        (0) выкладывай уже свою ВПФ. В среду у телепатов выходной. Надо смотреть какой алгоритм вывода на печать там.     | |||
| 9
    
        Panda_17 06.03.24✎ 13:45 | 
        (8) Функция СформироватьПечатнуюФормуЗаказНаРемонтВПФ(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)
 ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказНаРемонтВПФ"; МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; ОтветственныеЛицаСервер.СформироватьВременнуюТаблицуОтветственныхЛицДокументов(МассивОбъектов, МенеджерВременныхТаблиц); Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.Текст = ТекстЗапросаПечати(); Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов); УстановитьПривилегированныйРежим(Истина); Попытка Выборка = Запрос.Выполнить().Выбрать(); Исключение ЗаписьЖурналаРегистрации(ОписаниеОшибки()); КонецПопытки; УстановитьПривилегированныйРежим(Ложь); ПервыйДокумент = Истина; Пока Выборка.Следующий() Цикл НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1; Макет = ПолучитьМакет ("ЗаказНаРемонт"); Макет.КодЯзыка = Метаданные.Языки.Русский.КодЯзыка; Если ПервыйДокумент Тогда ПервыйДокумент = Ложь; Иначе ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; Рез = Запрос.Выполнить().Выгрузить(); Производитель = ""; Для Каждого СтрРез Из Рез Цикл Производитель = Производитель + Строка(СтрРез.Работник)+ Символы.ПС; КонецЦикла; ОбластьШапкаДокумента = Макет.ПолучитьОбласть("ШапкаДокумента"); ОбластьШапкаДокумента.Параметры.Заполнить(Выборка); ОбластьШапкаДокумента.Параметры.Дата = формат(Выборка.Дата,"ДФ=dd.MM.yyyy"); ТабличныйДокумент.Вывести(ОбластьШапкаДокумента); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьШапкаТаблицы.Параметры.Заполнить(Выборка); ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы); ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы"); ОбластьСтрокаТаблицы.Параметры.Заполнить(Выборка); ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы); ОбластьШапкаТаблицыИсполнители = Макет.ПолучитьОбласть("ШапкаТаблицыИсполнители"); ОбластьШапкаТаблицыИсполнители.Параметры.Заполнить(Выборка); ТабличныйДокумент.Вывести(ОбластьШапкаТаблицыИсполнители); ОбластьСтрокаТаблицыИсполнители = Макет.ПолучитьОбласть("СтрокаТаблицыИсполнители"); ОбластьСтрокаТаблицыИсполнители.Параметры.Заполнить(Выборка); ОбластьСтрокаТаблицыИсполнители.Параметры.Исполнитель = Производитель; ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицыИсполнители); ОбластьШапкаТаблицыРабот = Макет.ПолучитьОбласть("ШапкаТаблицыРабот"); ОбластьШапкаТаблицыРабот.Параметры.Заполнить(Выборка); ТабличныйДокумент.Вывести(ОбластьШапкаТаблицыРабот); ОбластьСтрокаТаблицыРабот = Макет.ПолучитьОбласть("СтрокаТаблицыРабот"); ОбластьСтрокаТаблицыРабот.Параметры.Заполнить(Выборка); ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицыРабот); ОбластьПодвалДокумента = Макет.ПолучитьОбласть("ПодвалДокумента"); ОбластьПодвалДокумента.Параметры.Заполнить(Выборка); ТабличныйДокумент.Вывести(ОбластьПодвалДокумента); УправлениеПечатью.ЗадатьОбластьПечатиДокумента( ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Выборка.Ссылка); КонецЦикла; Возврат ТабличныйДокумент; КонецФункции Функция ТекстЗапросаПечати() ТекстЗапроса= "ВЫБРАТЬ | ЗаказНаРемонт.Ссылка КАК Ссылка, | ЗаказНаРемонт.Номер КАК Номер, | ЗаказНаРемонт.Дата КАК Дата, | ЗаказНаРемонт.Организация КАК Организация, | ЗаказНаРемонт.Подразделение КАК ПодразделениеОрганизации, | ЗаказНаРемонт.ДатаНачала КАК ДатаНачала, | ЗаказНаРемонт.ДатаЗавершения КАК ДатаОкончания, | ЗаказНаРемонт.Ответственный.ФизическоеЛицо КАК Ответственный, | ЗаказНаРемонт.Автор КАК Допускающий, | ЗаказНаРемонт.НаименованиеРабот КАК Работа, | ЗаказНаРемонт.ОбъектЭксплуатации КАК ОбъектыРемонта, | ВложенныйЗапрос.Работник КАК Работник |ИЗ | Документ.ЗаказНаРемонт КАК ЗаказНаРемонт | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ЗаказНаРемонтИсполнители.Ссылка КАК Ссылка, | ЗаказНаРемонтИсполнители.Сотрудник КАК Работник | ИЗ | Документ.ЗаказНаРемонт.Исполнители КАК ЗаказНаРемонтИсполнители | | СГРУППИРОВАТЬ ПО | ЗаказНаРемонтИсполнители.Сотрудник, | ЗаказНаРемонтИсполнители.Ссылка) КАК ВложенныйЗапрос | ПО ЗаказНаРемонт.Ссылка = ВложенныйЗапрос.Ссылка |ГДЕ | ЗаказНаРемонт.Ссылка В(&МассивДокументов)"; Возврат ТекстЗапроса; КонецФункции | |||
| 10
    
        AlexeyKh 06.03.24✎ 13:45 | 
        как вариант собрать работников в тадицу
 получиться одна ПФ с таблицей Работники, где будет разное количество строк с работниками. | |||
| 11
    
        Волшебник 06.03.24✎ 13:52 | 
        Следите за руками:
 Выборка = Запрос.Выполнить().Выбрать();
...
    Пока Выборка.Следующий() Цикл
                
         Рез = Запрос.Выполнить().Выгрузить();Запрос выполнен (в нём конечно всё задублировано), потом по нему открыта выборка и внутри выборки запрос выполняется повторно по каждой строке результата! | |||
| 12
    
        Волшебник 06.03.24✎ 13:52 | 
        Девочка, отойди от компьютера. Позовите программиста.     | |||
| 13
    
        Panda_17 06.03.24✎ 14:03 | 
        (12) Спасибо за помощь!     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |