Простой вывод табличного документа в общую форму "Печать документов", с использованием БСП

08.12.17

Разработка - Инструментарий разработчика

Простой вывод табличного документа из модуля формы внешней обработки, в общую форму "Печать документов", с использованием БСП. Проверялось на версии БСП 2.2.5.30 в конфигурации УТ 11.1.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
Пример вывода табличного документа в общую форму "Печать документов"
.epf 7,50Kb
35 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Всем доброго дня!

Это коротенькая статья-заметка для тех, кому необходимо, не углубляясь в детали, вывести табличный документ, сформированный любым способом в форме внешней обработки, в общую форму "Печать документов".

Есть несколько достаточно подробных статей на эту тему вывода в общую форму,  например, вот эта: тыц

В моем случае мне потребовалось из формы внешней обработки вывести результат работы  в табличный документ, сформированный там же, в модуле формы. 

Итак от слов к делу: 

  1. Создаем новую обработку и новую форму
  2.  Добавляем команду (например "Печать") создадим процедуру "Печать", которая будет выполняться при нажатии на кнопку, и перетаскиваем ее на форму.
  3. В модуле формы напишем следующий код, который и отвечает за вывод нашего табличного документа в общую форму "ПечатьДокументов": 
&НаКлиенте
Процедура Печать(Команда)
    // сформируем нужный нам табличный документ
    ТабДок = СформироватьТабДок();
    
    // создадим коллекцию печатных форм, в которую надо будет добавить нужный нам табличный документ
    КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("МакетТест");    
    // Добавляем в коллекцию (тип массив) сформированный Табличный документ
    КоллекцияПечатныхФорм[0].ТабличныйДокумент = ТабДок; 
    // если требуется устанавливаем параметры печати
    КоллекцияПечатныхФорм[0].Экземпляров=1;
    КоллекцияПечатныхФорм[0].СинонимМакета = "Макет тест";  // используется для формирования имени файла при сохранении из общей формы печати документов
    // .. и выводим стандартной процедурой БСП
    УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм,Неопределено,ЭтаФорма);

КонецПроцедуры

4. Вот и все.

Сам код формирования табличного документа оставляю за кадром. Но рабочий пример вывода можно скачать из этой публикации.

Вступайте в нашу телеграмм-группу Инфостарт

общая форма печать документов

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    201742    1113    410    

1021

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    35384    205    104    

195

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    23872    63    26    

92

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

16000 руб.

10.11.2023    16376    70    39    

88

Инструментарий разработчика Программист 1С v8.3 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    34551    122    53    

165

Инструментарий разработчика WEB-интеграция 1С v8.3 1C v8.2 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Инструмент для генерации OpenApi (Swagger) спецификаций на основании файлов конфигураций 1С. Это консольное и десктопное приложение на языке Rust с полноценным редактором кода, содержащим автозамену и подсвечивание ошибок для быстрого и безошибочного написания документирующего комментария.

18000 руб.

22.11.2024    1583    1    0    

8

Инструментарий разработчика Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

6000 руб.

07.02.2018    107077    249    100    

313
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. held88 59 06.09.18 07:11 Сейчас в теме
Огромное спасибо за этот кусок кода. То что давно искал.
2. dmitry1975 345 06.09.18 14:01 Сейчас в теме
3. ivnik 620 14.10.18 21:25 Сейчас в теме
Огромное Спасибо!!! Коротко и работает!
4. InJey 02.12.18 14:47 Сейчас в теме
Спасибо! Для начинающего очень помогает!
5. Autolans 03.12.18 15:09 Сейчас в теме
6. dmitry1975 345 03.12.18 15:31 Сейчас в теме
Пожалуйста! Сам иногда обращаюсь к своей заметке :)))) Забывается то, чем постоянно не пользуешься..
7. glorry 13.12.18 09:59 Сейчас в теме
Спасибо тебе!!!! Я никак не мог сам найти, а оказывается все было так просто!!!!!
8. dmitry1975 345 15.12.18 08:34 Сейчас в теме
(7) Пожалуйста! Рад, что помогло.
9. user1118259 23.01.19 13:54 Сейчас в теме
Спасибо. То что нужно. Теперь бы разобраться с этим, а то магия какая то.
10. dmitry1975 345 23.01.19 14:50 Сейчас в теме
(9) А что именно в этом непонятно?
11. user1118259 24.01.19 08:09 Сейчас в теме
Мне не понятно как это работает. Но мне бы хотелось самому попытаться разобраться с механизмом этого кода. Сейчас я просто вставил кусок кода и пользуюсь. Я начинающий. Это моя первая печатная форма, да еще и через расширение. Так что не удивляйтесь. Это просто положительные эмоции начинающего.
12. dmitry1975 345 24.01.19 16:56 Сейчас в теме
(11) В общем-то ничего особо сложного здесь нет.
Весь нужный для вывода печатной формы функционал, обеспечивает библиотека стандартных подсистем, которая реализована разработчиками 1С для облегчения программирования стандартных задач. Поэтому приведенный в статье код и выглядит вполне компактным.

Для того, чтобы табличный документ вывелся в общую форму, необходимо вызвать функцию "ПечатьДокументов" общего модуля "УправлениеПечатьюКлиент" передав в качестве параметры необходимые для этого данные, т.е. сам табличный документ и например количество экземпляров, которые нужно напечатать.

Один из параметров функции - это коллекция печатных форм, которая представляет собой в конечном виде массив структур, т.е. элементами массива является структура с нужными значениями.
Коллекция формируется строкой кода
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("МакетТест");


После чего можно обратится к массиву по индексу и установить нужные данные, такие как табличный документ и количество экземпляров.
вот собственно и все.
Прикрепленные файлы:
user733003; +1 Ответить
13. demONx7 05.04.19 09:06 Сейчас в теме
Уф... Столько мучений, а ларчик просто открывался.

ОГРОМНЕЙШЕЕ тебе спасибо)))))
14. dmitry1975 345 05.04.19 20:04 Сейчас в теме
15. AlexeyT1978 239 29.04.19 16:01 Сейчас в теме
16. molot 286 11.06.19 13:37 Сейчас в теме
Всё гениальное просто! Спасибо! Сэкономил полчасика времени мне)
17. molot 286 11.06.19 13:57 Сейчас в теме
Чтобы заработала привязка файла к ссылке надо еще немножко дополнить:

// создадим коллекцию печатных форм, в которую надо будет добавить нужный нам табличный документ
    КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("СписокВодителей");
    // Добавляем в коллекцию (тип массив) сформированный Табличный документ
    КоллекцияПечатныхФорм[0].ТабличныйДокумент = ТабДок; 
	ТабДок.Область(1, , ТабДок.ВысотаТаблицы, ).Имя = "СписокВодителей";
    // если требуется устанавливаем параметры печати
    КоллекцияПечатныхФорм[0].Экземпляров = 2;
    КоллекцияПечатныхФорм[0].СинонимМакета = "Список водителей"; // используется для формирования имени файла при сохранении из общей формы печати документов
    // .. и выводим стандартной процедурой БСП
	ОбъектыПечати = Новый СписокЗначений;
	ОбъектыПечати.Добавить(ПараметрКоманды, "СписокВодителей");
    УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбъектыПечати);
Показать
agatdev_ilganas; Lapitskiy; +2 Ответить
22. mikl79 120 11.12.20 08:36 Сейчас в теме
(17), подскажите пожалуйста - что за привязка файла к ссылке?
18. user1038344 19.03.20 14:43 Сейчас в теме
Спасибо! пригодилось!
19. user886140 15.08.20 21:08 Сейчас в теме
Спасибо добрый человек! Очень помог!
20. Shilov 4 03.11.20 10:27 Сейчас в теме
Благодарю. Очень помогло сэкономить время.
21. dmitry1975 345 03.11.20 12:39 Сейчас в теме
(20)Пожалуйста! Рад, что пригодилось :)
23. ulucky 45 19.12.20 23:33 Сейчас в теме
Спасибо, очень помогло.
Придется учить БСП ((
24. dmitry1975 345 20.12.20 02:50 Сейчас в теме
(23)Пожалуйста! А БСП действительно нужно учить :)
25. user1497064 14.07.21 23:51 Сейчас в теме
Огромное СПАСИБО !!! Вся головушку изломал, а ларчик просто открывался :) !!!
26. dmitry1975 345 16.07.21 13:26 Сейчас в теме
(25) Рад что пригодилось :)
27. Maindevice 06.08.21 08:50 Сейчас в теме
Эх, а попадись эта заметка мне на глаза всего год назад, то количество костылей в моём коде сократилось бы на порядок. ХD
Огромное спасибо!
28. ssfedkin 6 21.03.22 19:03 Сейчас в теме
29. dmitry1975 345 21.03.22 19:08 Сейчас в теме
(27), (28) Рад что пригодилось!
30. psa247 21 31.01.23 07:59 Сейчас в теме
31. dmitry1975 345 31.01.23 08:00 Сейчас в теме
Рад, что пригодилось :)
32. sokol_6630 3 05.07.23 15:19 Сейчас в теме
33. Dm109 11.07.23 10:27 Сейчас в теме
Громаднейшее спс. Коротко, ясно и самое смешное - РАБОТАЕТ!
34. dmitry1975 345 11.07.23 10:28 Сейчас в теме
(33) Не за что! Действительно смешно :)))))))))))))
35. neyasytyf 14.11.23 16:04 Сейчас в теме
Спасибо) По Вашему решению нашел как сделано в типовых.
ТабличныйДокумент = ПолучитьИзВременногоХранилища(АдресХранилища);
		
	МодульУправлениеПечатьюКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеПечатьюКлиент");
	ИдентификаторПечатнойФормы = "Печать";
		
	КоллекцияПечатныхФорм = МодульУправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(ИдентификаторПечатнойФормы);
	ПечатнаяФорма = МодульУправлениеПечатьюКлиент.ОписаниеПечатнойФормы(КоллекцияПечатныхФорм, ИдентификаторПечатнойФормы);
	ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Печать'");
	ПечатнаяФорма.ТабличныйДокумент = ТабличныйДокумент;
	
	МодульУправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм);
Показать
ErrorEd88; extralook; dmitry1975; +3 Ответить
36. psa247 21 26.02.24 17:38 Сейчас в теме
Круто, без лишних заморочек, спасибо!
37. apx_egor 27.02.24 11:49 Сейчас в теме
38. dmitry1975 345 27.02.24 13:10 Сейчас в теме
Я рад, что даже спустя столько времени с момента написания этой заметки, кому-то это помогает :)
39. user731275 25.03.24 17:42 Сейчас в теме
Тоже наткнулся на заметку и реально помогло. Автору респект.
40. kudim 20.05.24 17:07 Сейчас в теме
Спасибо! Самый простой пример.
41. talengek 20.12.24 14:45 Сейчас в теме
При таком способе, из макета слетают расшифровки, т.е. ПараметрРасшифровки больше не работает. Кто - то поборол это?
42. dmitry1975 345 20.12.24 15:07 Сейчас в теме
(41) Странно, специально сейчас проверил.. Расшифровка работает.

ТабДок.ТолькоПросмотр=Истина;


Эта строчка присутствует при формировании табличного документа?
43. talengek 23.12.24 10:13 Сейчас в теме
(42) Нет, ТабДок передаётся в типовом варианте, без дополнительных правок кодом.
45. talengek 23.12.24 11:59 Сейчас в теме
(43) Понял в чём была проблема. Вот я глупый...
44. dmitry1975 345 23.12.24 11:10 Сейчас в теме
Просто это одно из условий работы расшифровки в табличном документе. Если этот флаг не установлен, то расшифровка не будет работать
46. talengek 23.12.24 12:00 Сейчас в теме
(44) Да, спасибо большое, понял свою ошибку...
47. dmitry1975 345 23.12.24 12:01 Сейчас в теме
(46) Отлично, что разобрались!
Но если дело не в том, что я писал, то напишите решение. Возможно кому-то это пригодится!
48. fixman 1 11.04.25 01:53 Сейчас в теме
49. stepani4 09.07.25 15:55 Сейчас в теме
8 лет прошло, а код рабочий.
Оставьте свое сообщение