Добавление команд печати в свои документы в Бухгалтерии 3.0
Разработка - Работа с интерфейсом
В Бухгалтерии 2.0 была очень удобная типовая процедура
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, Заголовок, НепосредственнаяПечать, Ссылка, ИмяМакета)
Она помогала вывести ваш печатный документ в универсальное окно печати, где вы выбирали количество копий, вариант сохранения и тому подобное

Сейчас, переходя с 2.0 на 3.0, я стал искать аналог этой процедуры и не нашел. Но это к лучшему, потому что я нашел еще более универсальный механизм. Он опирается на механизмы подсистемы "Печать" БСП (БСП - это основа всех современных конфигураций фирмы 1С). Нужно добавить несколько функций в два модуля: Модуль менеджера и Модуль формы. Пусть у нас есть нетиповой документ Приказ, и у него есть два макета и две формы.

Для каждого из двух макетов у нас подготовлены функции СформироватьАкт(Ссылка) и СформироватьПриказ(Ссылка), возвращающие табличные документы, которые нам нужно будет красиво выводить на печать. Хочется, не прилагая больших усилий, добиться следующего результата: чтобы в каждой из двух форм этого документа в командной панели была кнопка-подменю Печать, в которой был бы список из наших печатных форм.

Откроем форму ФормаДокумента, и создадим обработчик ПриСозданииНаСервере. Скопируем в модуль формы следующий код:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма) КонецПроцедуры &НаКлиенте Процедура Подключаемый_ВыполнитьКомандуПечати(Команда) УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Объект) КонецПроцедуры
Теперь откроем Модуль менеджера и скопируем туда следующий код:
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт КомандаПечати = КомандыПечати.Добавить(); КомандаПечати.Идентификатор = "Акт"; КомандаПечати.Представление = "Дополнительный акт"; КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати"; КомандаПечати.СписокФорм = "ФормаСписка,ФормаДокумента"; КомандаПечати = КомандыПечати.Добавить(); КомандаПечати.Идентификатор = "Приказ"; КомандаПечати.Представление = "Приказ"; КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати"; КомандаПечати.СписокФорм = "ФормаСписка,ФормаДокумента"; КонецПроцедуры Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Акт") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Акт", "Акт", СформироватьНесколькоАктов(МассивОбъектов),"Документ.Приказ.Акт"); КонецЕсли; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Приказ") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Приказ", "Приказ", СформироватьНесколькоПриказов(МассивОбъектов),"Документ.Приказ.Приказ"); КонецЕсли; КонецПроцедуры Функция СформироватьНесколькоАктов(МассивОбъектов) ТабДокумент = Новый ТабличныйДокумент; Для каждого Ссылка из МассивОбъектов Цикл ТабДокументОбъекта = СформироватьАкт(Ссылка); Если ТабДокумент.ВысотаТаблицы > 0 И ТабДокументОбъекта.ВысотаТаблицы > 0 Тогда ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц() КонецЕсли; ТабДокумент.Вывести(ТабДокументОбъекта) КонецЦикла; Возврат ТабДокумент КонецФункции Функция СформироватьНесколькоПриказов(МассивОбъектов) ТабДокумент = Новый ТабличныйДокумент; Для каждого Ссылка из МассивОбъектов Цикл ТабДокументОбъекта = СформироватьПриказ(Ссылка); Если ТабДокумент.ВысотаТаблицы > 0 И ТабДокументОбъекта.ВысотаТаблицы > 0 Тогда ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц() КонецЕсли; ТабДокумент.Вывести(ТабДокументОбъекта) КонецЦикла; Возврат ТабДокумент КонецФункции Функция СформироватьАкт(Ссылка) ТабДокумент = Новый ТабличныйДокумент; // подготовка ТабДокумента Возврат ТабДокумент КонецФункции Функция СформироватьПриказ(Ссылка) ТабДокумент = Новый ТабличныйДокумент; // подготовка ТабДокумента Возврат ТабДокумент КонецФункции
Все готово, в форме документа у нас теперь программно будут добавляться кнопки печати. Чтобы они появились и в форме списка, проделайте с ней тоже самое (создайте обработчик ПриСозданииНаСервере и скопируйте код в Модуль формы ФормаСписка, в Модуле менеджера уже ничего менять не надо). Единственное отличие в третьем параметре функции ВыполнитьПодключаемуюКомандуПечати: вместо Объект нужно написать Элементы.Список. Также у этого списка обязательно должна быть колонка Ссылка, пусть даже невидимая.
Результат всего этого выглядит так:
Форма документа

Форма списка

Универсальное окно печати в Бухгалтерии 3.0

P.S. Если при открытии информационной базы появится такое окно, то просто выполните то, что там написано, это нормально
подробнее о подсистеме "Печать" на ИТС: https://its.1c.ru/db/bspdoc#content:219:hdoc
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Разработка Адаптация типовых решений Производство готовой продукции (работ, услуг) Розничная торговля 1С:Управление торговлей 10 Россия Платные (руб)
Доработка для 1С:Управление торговлей 10.3 (релиз 10.3.88.3) добавляет поддержку маркировки новых категорий товаров согласно постановлениям Правительства РФ 2025–2026 гг. Конфигурация УТ 10.3 снята с поддержки — новые маркируемые категории в типовую поставку больше не попадают. Доработка закрывает этот пробел: новые виды номенклатуры, обмен с ГИС МТ «Честный Знак». Поставляется в виде файла .cf
14640 руб.
23.04.2026 5508 49 13
Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)
Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!
31720 руб.
27.03.2025 92425 69 44
Банковские операции Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)
Решение позволяет автоматически заполнять отдельные реквизиты загружаемых банковских документов, основываясь на известных значениях реквизитов и тексте назначения платежа. Простая настройка, широкие возможности анализа назначения платежа без написания кода и сложных шаблонов.
12200 руб.
17.06.2025 5384 16 0
Печатные формы Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)
Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.
6000 руб.
07.02.2023 14532 123 25
Адаптация типовых решений 1С:Предприятие 8 1С:Документооборот Россия Платные (руб)
Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.
32330 руб.
29.06.2023 13333 36 15
Логистика, склад и ТМЦ Адаптация типовых решений Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)
Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Расширение для УНФ, чтобы автоматически отменять старые резервы и не мешалть эффективно продавать.
9150 руб.
02.08.2023 8996 27 5
Адаптация типовых решений Создание на основании Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)
Расширение позволяет в 1 клик поставить весь состав заказа клиента в отгрузку и открыть заполненные формы документов отгрузки по заказу.
4880 руб.
25.08.2023 4335 9 0
Адаптация типовых решений 1С 8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)
Расширение, которое в форму списка и форму выбора справочника «Номенклатура» добавляет табличную часть в виде дерева, в которую выводится информация об остатках и доступности выбранной номенклатурной позиции.
6710 руб.
20.04.2026 1004 1 0
Ссылка = МассивОбъектов[0];Для одного объекта и будет напечатано.
Полагаю, Вам нужно заглянуть в БСП.
Понятно, что где-то реализованы целые блоки и фреймворки для управления печатью. Эта статья только для Бухгалтерии 3.0, она полностью опирается на функционал этой конфигурации.
Да, из кода понятно, что если выделить шифтом несколько строк с документами, то можно напечатать их пакетно. Но для меня это ненужная функция. Однако, спасибо, что обратили на это внимание, может кому-то будет полезно)
Я ключевую неточность у Вас подчеркнул. В БП 3.0 портирована подсистема "Печать". Механизм печати, в части касающейся Вашей статьи, одинаков для конфигураций, где данная подсистема уже внедрена. Т.е. "фреймворк" печати (в вашей терминологии), уже встроен в БП 3.0. И говорить, что Ваша статья "опирается на функционал этой конфигурации." видимо, не совсем, точно. Ваша статья опирается на использование типовой подсистемы "Печать" из БСП.
Все выше сказанное, не в критику, а в уточнение :)
Далее необходимо в Модуле формы (Документа и Списка) нового документа необходимо создать процедуру ПриСозданииНаСервере:
&
НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.Печать
УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма);
// Конец СтандартныеПодсистемы.Печать
// ДополнительныеОтчетыИОбработки
ДополнительныеОтчетыИОбработки.ПриСозданииНаСервере(ЭтаФорма);
// Конец ДополнительныеОтчетыИОбработки
Если Параметры.Ключ.Пустая() Тогда
ПодготовитьФормуНаСервере();
КонецЕсли;
КонецПроцедуры
ПоказатьКажется этого должно быть достаточно.
Только нужно еще проверить на форме на панели (Вид - ГруппаКнопок и Источник - Форма) появилась ли кнопка Печать с выпадающим меню "ДополнительныеПечатныеФормы"
Для этого даже с самодельными печатными формами вместо ссылки на объект, делаем
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов)
А в самом запросе:
...
ГДЕ
НужноеПоле.Ссылка В(&МассивОбъектов)И переменную результата запроса Шапка прокрутить в цикле и усе.. и все будет ОК))))
Это как раз если внешнюю печатную форму встраивать через доп.Отчеты и обработки))))
Все таки, по внимательнее перечитайте (3). Если Вы гляните в типовую БП 3.0, то все о чем Вы написали, НЕ ИМЕЕТ СМЫСЛА без внедренной подсистемы "Печать". Поэтому, Ваши думы о том, что множественная печать реализуется БЕЗ БСП, могут существовать в контексте Ваших исключительных рассуждений и дум :) А если глубже копнуть, то выяснится, что ваш алгоритм - это типовая методика, которую можно было увидеть в БСП версии 1.0.7.5 от 05.08.2010, в то время как БП 3.0 зарелизилась с версии 3.0.9.4 от 28.04.2012. Т.е., тот алгоритм, который Вы описали, опирается на обвяз, который уже был представлен в демо БСП практически за 2 года, до первого релиза БП 3.0
А это, в свою очередь, еще одна подсистема БСП под названием "Дополнительные отчеты и обработки", которая также портирована в БП 3.0
Итоги моего поста какие? :)
Вопрос в том, как по вашей методике согласно публикации сделать так, чтобы работала множественная печать.А то нулевой индекс строки правильно ребята подметили, - это печать одного документа, как будто из бух 2.0 печатаем)
Как раз таки нужно, ибо если не копать, тогда сложится мнение как у вас и у вашего коллеги: что оно якобы как-то само там живет, в типовой, своей жизнью.
Надо за правило взять, если что-то по печати, доп.отчетам и обработкам, ролям и прочему не понятно - то первое что надо делать, это не пытаться раскуривать самому, а скачать демо БСП, той редакции, которая сейчас в типовой, и посмотреть примеры.
Пожалуйста! Всегда Ваш, Кэп.
:)
Если бы оно везде на ресурсах валялось.. другой бы разговор)))
Лучше подскажите как в типовой найти версию БСП, и где посмотреть справку о функционале БСП.
Если у Вас ваше скромное чувство собственного "я" позволит себя допустить до ИТС, то для этого нужно сделать всего лишь четыре шага:
1. Зарегать новый e-mail
2. Открыть
3. Получить доступ к ИТС по е-mail из п.1 на 7 дней
4. Через 7 дней, выполнить в п.1
Пожалуйста! Всегда Ваш, Кэп.
Как уже писалось выше, почитайте документацию по новой БСП, там правда много интересного :)
Пробовал, конечно, с этого и начал. Но такая печать просто формирует и открывает табличный документ, а мне требовалось, чтобы он открывался в форме с кнопкой "Печать", количеством экземпляров, возможностью сохранить
В принципе Ваш способ имеет право жить, если в конфигурацию добавляешь свои Документы. Но для стандартных документов все же лучше использовать Дополнительные внешние печатные формы. Они добавляются с таким-же функционалом. Но при обновлениях ничего не будет пропадать и для последователей более прозрачно. Поэтому +.
для выведения на форму кнопки ДтКт нужно добавить свой документ в общую команду ПоказатьДвиженияДокумента.
Но с точки зрения доработки типовой конфигурации с минимальными изменениями в типовых объектах лучше всего скопировать эту общую команду, назвать ПоказатьДвиженияМоегоДокумента и указывать в ней только свои документы. Тогда при обновлении кнопка ДтКт точно не слетит
Печатную форму сделать проще чем копаться в механизмах печати новых релизов? Постоянно ведь корректировать конфигурацию будет затруднительно? Особенно если новых документов много.
Но есть один вопрос: Создал в типовой конфигурации новый документ. Чтобы использовать механизм подключаемых печатных форм нужно редактировать команду "ДополнительныеОтчетыИОбработкиПечатныеФормы". НО при обновлении изменения слетят. Как правильно поступить в данном случае?
В процедуре Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "Акт";
КомандаПечати.Представление = "Дополнительный акт";
КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
КомандаПечати.СписокФорм = "ФормаСписка,ФормаДокумента"; в списке форм должны быть наименования форм используемых при печати, добавил форму "ФормаДокументаУФ" - и долго гадал почему не появилась кнопочка печати!!
Ну, вот почему так... как вопрос задал, так сразу и нашел... спасибо всем :)
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)
Объект=Элементы.Список.ТекущаяСтрока;
Если Объект.Проведен = Ложь Тогда
Сообщить("Документ не проведен !!! Печать не возможна");
Возврат;
КонецЕсли;
УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Элементы.Список);
КонецПроцедуры
Спасибо заранее!
Вместо методов из "СтандартныеПодсистемы.Печать"
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)
УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Объект)
КонецПроцедуры
Следует использовать методы из "СтандартныеПодсистемы.ПодключаемыеКоманды"
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
От себя добавлю, что например в Бух КОРП 3.0.52.39 нужно в модуле: "ОбщийМодуль.УправлениеПечатьюПереопределяемый"
в процедуру:
Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт добавить строку типа:
СписокОбъектов.Добавить(Документы.ИмяВашегоДокумента)тогда, с учетом изменений описанных Вами, печать заработает!
(просто сам долго копался с этим)
Вызовы вида:
// СтандартныеПодсистемы.Печать
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)
УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Печатьследует заменить вызовами:
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, <ОбъектИлиТаблицаФормы>);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, <ОбъектИлиТаблицаФормы>, Результат);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды Показатьболее подробно читайте здесь
в эту процедуру добавить свой документ
Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт
там такие строки
СписокОбъектов.Добавить(Документы.ПоступлениеТоваровУслуг);
СписокОбъектов.Добавить(Документы.ПринятиеКУчетуНМА);
СписокОбъектов.Добавить(Документы.ПринятиеКУчетуОС);
СписокОбъектов.Добавить(Документы.ПриходныйКассовыйОрдер);
СписокОбъектов.Добавить(Документы.РаспределениеНДС);
СписокОбъектов.Добавить(Документы.РасходныйКассовыйОрдер);и так далее - все документы
в модуле УправлениеПечатьюСлужебныйКлиент
в процедуре ВыполнитьПодключаемуюКомандуПечатиПодготовкаОбъектовПечати
вываливается:
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(125)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода Результат = Вычислить(Обработчик);
по причине:
{(1,1)}: Переменная не определена (УправлениеПечатьюБПКлиент)
<<?>>УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати(ОписаниеКоманды)
Менял в Модуле Менеджера Документа
УправлениеПечатьюБПКлиент на УправлениеПечатьюКлиент и также на
Подключаемый_ВыполнитьКомандуПечати
всёравно ошибки, куда же копать?
Рейтинг: 260
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 237013
Создание 02.12.13 10:49
Обновление 25.09.16 10:58
Просмотры 170334
Загрузки 0
Рейтинг
137
Комментарии 55
Код открыт Не указано
Рубрики Работа с интерфейсом Адаптация типовых решений
Кому Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация 1С:Бухгалтерия 2.0
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)