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