Печать карточки физ. лица

1. user1148505 18.11.21 12:41 Сейчас в теме
Доброго времени суток,
в справочнике Физические лица есть команда - Печать карточки физ. лица код команды привожу ниже
Код

Есть желание сделать эту штуку универсальной: при печати по группе - выводить все макеты в одном таб документе и печатать общий таб документ для всех.
Возникает вопрос - где найти код печати? внешняя обработка и её макет (в данном случаи Карточка) находится в справочнике Внешних обработок, обработку вытащил оттуда - но кроме двух строчек кода там больше ничего нет.
По теме из базы знаний
Найденные решения
2. user1148505 18.11.21 13:46 Сейчас в теме
Ну как обычно додумался сам, оставлю здесь если кому понадобится:
Процедура ДействияФормыКнопкаПечатьКарточкиПоГруппам(Кнопка)
    Если ЭлементыФормы.СправочникСписок.ТекущиеДанные = Неопределено Тогда 
        Возврат;
    КонецЕсли;
    
    //Находим в справочнике свою внешнюю обработку дальше печатаем из нее макет;
    Обработка = Справочники.ВнешниеОбработки.НайтиПоНаименованию("Карточка кладовщика");
    Если Обработка = Справочники.ВнешниеОбработки.ПустаяСсылка() Тогда
        Предупреждение("Внешняя печатная форма не найдена с названием: Карточка кладовщика");
    Иначе
        ИмяФайла = ПолучитьИмяВременногоФайла();
        ДД = Обработка.ХранилищеВнешнейОбработки.Получить();
        ДД.Записать(ИмяФайла);
        СсылкаНаГруппу = ЭлементыФормы.СправочникСписок.ТекущиеДанные.Ссылка; //выбранная строка должна быть группой
        ОбщийТабДок = Новый ТабличныйДокумент;     //создадим общий таб документ где соберём остальные
        Если СсылкаНаГруппу.ЭтоГруппа = Истина Тогда  //если выбранная строка - группа справочника
            Выборка = Справочники.ФизическиеЛица.Выбрать(СсылкаНаГруппу); //получим выборку элементов
            Пока Выборка.Следующий() Цикл
                Если Выборка.Ссылка.ПометкаУдаления = Ложь Тогда //добавим фильтр по удалённым
                    ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла); //дальше по аналогии с печатью элемента
                    ВнешняяОбработка.СсылкаНаОбъект = Выборка.Ссылка;
                    Попытка
                        ТабДокумент = ВнешняяОбработка.Печать();
                    Исключение
                        ТекстОшибки = ОписаниеОшибки();
                    КонецПопытки;
                    ОбщийТабДок.ВывестиГоризонтальныйРазделительСтраниц(); //выводим разделитель
                    ОбщийТабДок.Вывести(ТабДокумент);   //добавляем таб документ по текущему физ лицу
                Конецесли;
            КонецЦикла;
            УниверсальныеМеханизмы.НапечататьДокумент(ОбщийТабДок); //отдаем на печать общий таб док
        Иначе
            Сообщить("Следует выбрать группу элементов для печати по группе!");
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1148505 18.11.21 13:46 Сейчас в теме
Ну как обычно додумался сам, оставлю здесь если кому понадобится:
Процедура ДействияФормыКнопкаПечатьКарточкиПоГруппам(Кнопка)
    Если ЭлементыФормы.СправочникСписок.ТекущиеДанные = Неопределено Тогда 
        Возврат;
    КонецЕсли;
    
    //Находим в справочнике свою внешнюю обработку дальше печатаем из нее макет;
    Обработка = Справочники.ВнешниеОбработки.НайтиПоНаименованию("Карточка кладовщика");
    Если Обработка = Справочники.ВнешниеОбработки.ПустаяСсылка() Тогда
        Предупреждение("Внешняя печатная форма не найдена с названием: Карточка кладовщика");
    Иначе
        ИмяФайла = ПолучитьИмяВременногоФайла();
        ДД = Обработка.ХранилищеВнешнейОбработки.Получить();
        ДД.Записать(ИмяФайла);
        СсылкаНаГруппу = ЭлементыФормы.СправочникСписок.ТекущиеДанные.Ссылка; //выбранная строка должна быть группой
        ОбщийТабДок = Новый ТабличныйДокумент;     //создадим общий таб документ где соберём остальные
        Если СсылкаНаГруппу.ЭтоГруппа = Истина Тогда  //если выбранная строка - группа справочника
            Выборка = Справочники.ФизическиеЛица.Выбрать(СсылкаНаГруппу); //получим выборку элементов
            Пока Выборка.Следующий() Цикл
                Если Выборка.Ссылка.ПометкаУдаления = Ложь Тогда //добавим фильтр по удалённым
                    ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла); //дальше по аналогии с печатью элемента
                    ВнешняяОбработка.СсылкаНаОбъект = Выборка.Ссылка;
                    Попытка
                        ТабДокумент = ВнешняяОбработка.Печать();
                    Исключение
                        ТекстОшибки = ОписаниеОшибки();
                    КонецПопытки;
                    ОбщийТабДок.ВывестиГоризонтальныйРазделительСтраниц(); //выводим разделитель
                    ОбщийТабДок.Вывести(ТабДокумент);   //добавляем таб документ по текущему физ лицу
                Конецесли;
            КонецЦикла;
            УниверсальныеМеханизмы.НапечататьДокумент(ОбщийТабДок); //отдаем на печать общий таб док
        Иначе
            Сообщить("Следует выбрать группу элементов для печати по группе!");
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Показать
Оставьте свое сообщение

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