[БСП] Внешняя печатная форма: как перед печатью выводить форму настроек

19.12.19

Учетные задачи - Печатные формы

Во внешней печатной форме перед печатью нужно выводить форму настроек. Для примера рассматриваю печатную форму "Акт сверки взаимных расчетов " .

Задача перенести типовую печатную форму "Акт сверки взаимных расчетов " во внешние печатные формы. В последних релизах Комплексной автоматизации 2 перед печатью "Акт сверки взаимных расчетов" выпадает форма с настройками печати.

Для того чтобы открывалась форма нужно в процедуру СведенияОВнешнейОбработке() в модуле обработки добавить команду.

Использование у команды можно назначить трех типов:

- ВызовСерверногоМетода (Вызывается процедура Печать() в модуле обработки)

- ВызовКлиентскогоМетода (Вызывается процедура Печать() в основной форме обработки)

- ОткрытиеФормы (Открывается основная форма обработки и в ее параметр передается "ОбъектыНазначения")

Для выполнения задачи можно воспользоваться типом ВызовКлиентскогоМетода  или ОткрытиеФормы. Я воспользуюсь ВызовКлиентскогоМетода, по мне так проще отлаживать обработку.

 
Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = Новый Структура;
	ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); 	
	МассивНазначений = Новый Массив;
	МассивНазначений.Добавить("Документ.СверкаВзаиморасчетов");
	ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
	
	ПараметрыРегистрации.Вставить("Наименование", "Акт сверки взаиморасчетов (вн)");
	ПараметрыРегистрации.Вставить("Версия", "1.0");	
	ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
	ПараметрыРегистрации.Вставить("Информация", "Акт сверки взаиморасчетов (вн)");
	
	//Команды
	ТаблицаКоманд = Новый ТаблицаЗначений;
	ТаблицаКоманд.Колонки.Добавить("Представление");
	ТаблицаКоманд.Колонки.Добавить("Идентификатор");
	ТаблицаКоманд.Колонки.Добавить("Использование"); 
	ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение");
	ТаблицаКоманд.Колонки.Добавить("Модификатор");
	
	НоваяКоманда = ТаблицаКоманд.Добавить();
	НоваяКоманда.Представление = "Акт сверки взаиморасчетов (вн)";
	НоваяКоманда.Идентификатор = "Акт сверки взаиморасчетов (вн)"; 

	НоваяКоманда.Идентификатор = "вн_АктСверкиВзаиморасчетов"; 
	НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; 
	НоваяКоманда.ПоказыватьОповещение = Истина;
	
	ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
	
	Возврат ПараметрыРегистрации;
	
КонецФункции

 

В обработку добавлю две формы. Форму с настройкой и пустую форму.

 

 

На пустую форму добавлю поле выбора документа "СверкаВзаиморасчетов" и кнопку для тестирования печати без добавления формы в дополнительные печатные формы.

Эта форма при обычной печати не будет открываться. Она будет открываться, когда обработку открываю на прямую файл->открыть.

 

 

В модуле две процедуры Печать(), которая как раз и будет вызваться механизмом БСП. И процедура кнопки "Тест".

Добавляю объекты печати в параметры и открываю форму с настройками.

 
&НаКлиенте
Процедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт
		
	Праметры1 = Новый Структура;
	Праметры1.Вставить("ИдентификаторКоманды", ИдентификаторКоманды);
	Праметры1.Вставить("МассивОбъектов", МассивОбъектов);

	ОткрытьФорму("ВнешняяОбработка.АктСверкиВзаиморасчетов_вн.Форма.НастройкаПечати",Праметры1);
	
КонецПроцедуры

&НаКлиенте
Процедура тест(Команда)
	Праметры1 = Новый Структура;
	Праметры1.Вставить("ИдентификаторКоманды", "");
	МассивОбъектов = Новый Массив;
	МассивОбъектов.Добавить(акт); 
	Праметры1.Вставить("МассивОбъектов", МассивОбъектов);

	ОткрытьФорму("ВнешняяОбработка.АктСверкиВзаиморасчетов_вн.Форма.НастройкаПечати",Праметры1);
КонецПроцедуры

 

форму с настройками копирую из типовой конфигурации.

 

 

При создании на сервере загружаю МассивОбъектов в переменную с типом СписокЗначений.

 

 

В кнопку печать добавили вызов процедуру формы ПечатьНаКлиенте()

 

Вызываю процедуру ПечатьНаСервере() из которой вызываю Процедуру Печать() в модуле обработки, в которую передаю "Массив с объектами печати".

В модуль обработки переношу все, что связано с печатью "акта сверки" из модуля менеджера документа "СверкаВзаиморасчетов". 

Процедура ПечатьНаСервере возвращает ТабличныйДокумент, который я вывожу в типовой форме ПечатьДокументов (механизм БСП).

 
&НаКлиенте
Процедура ПечатьНаКлиенте()

    ТабДок = ПечатьНаСервере();
    КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("ПФ_MXL_АктСверкиВзаимныхРасчетов");    
    КоллекцияПечатныхФорм[0].ТабличныйДокумент = ТабДок; 
    КоллекцияПечатныхФорм[0].Экземпляров=1;
    КоллекцияПечатныхФорм[0].СинонимМакета = "Акт сверки взаиморасчетов";  
    УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм,Неопределено,ЭтаФорма);

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

&НаСервере
Функция ПечатьНаСервере()
	
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");   
	Возврат ОбработкаОбъект.Печать(СписокОб.ВыгрузитьЗначения(), Новый СписокЗначений);
	
КонецФункции

Тестировал: 

1С:Комплексная автоматизация 2 (2.4.9.98)

Платформа 1С:Предприятие 8.3 (8.3.15.1747)

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

Акт сверки взаимных расчетов

См. также

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

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

22200 руб.

06.10.2023    23798    63    26    

92

Печатные формы Логистика, склад и ТМЦ Бухгалтер 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Обработки для "1С:Бухгалтерия предприятия 3.0", которые формируют акты МХ-1 и МХ-3 для документов "ПоступлениеТоваровУслуг", "Реализация товаров услуг", "Возврат товаров поставщику", "Передача материалов в эксплуатацию" соответственно. Так же можно сформировать акты с факсимиле, которая загружена в 1С:Бухгалтерия предприятия 3.0.

6000 руб.

18.02.2019    67801    243    15    

195

Печатные формы Взаиморасчеты Оптовая торговля Производство готовой продукции (работ, услуг) Акт сверки Бухгалтер Пользователь Оперативный учет Управляемые формы 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Задайте для каждой организации свою печать и для каждого физического лица свою подпись. Выберите в документе печатную форму "... с печатью и подписью" - и автоматически сформируется табличный документ с печатью и подписями той организации и ответственных лиц, которые указаны в документе.

14400 руб.

13.03.2018    64383    230    79    

121

Печатные формы Адаптация типовых решений Бухгалтер Пользователь 1С v8.3 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, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3500 руб.

07.02.2023    9267    100    17    

56

БСП (Библиотека стандартных подсистем) Программист Платные (руб)

Синтакс-помощник БСП - cправочник по библиотекам стандартных подсистем и электронных документов. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП и БЭД.

1800 руб.

21.11.2024    7925    39    24    

43

Печатные формы Учет рабочего времени Бухгалтер Пользователь 1С v8.3 Бухгалтерский учет Оперативный учет 1С:Бухгалтерия 3.0 Транспорт, автопарки, такси Россия Бухгалтерский учет Платные (руб)

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

5700 руб.

23.08.2019    61230    191    65    

186

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

Для целей использования в ЮЗЭДО ОАО "РЖД". Обработка используется для формирования XML файлов (согласно формату, утвержденному приказом ФНС РФ от 19.12.2018 N ММВ-7-15/820@) актов выполненных работ по форме ФПУ-26 (Утверждена распоряжением ОАО "РЖД" от 15.12.2008 №2688р)

26400 руб.

14.05.2020    32910    45    19    

43
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user654641_yaga_m 16 19.12.19 11:54 Сейчас в теме
2. zhuravlev_as 491 19.12.19 13:14 Сейчас в теме
(1) а в таком случае по-другому и не придумаешь - "гоняешь" данные с клиента на сервер. По сути до такой реализации кода в свое время сам дошел, правда времени потратил - лучше не вспоминать))) Пожалуй, что поленился - это записать в шаблоны код исполняемыей сохранил экземпляры действующих обработок и все.
3. Lapitskiy 1065 19.12.19 14:14 Сейчас в теме
4. ids79 8688 19.12.19 14:59 Сейчас в теме
Реализовывал похожим образом печать ТН во внешней обработке. Там тоже требуется выполнение действий на клиенте до формирования формы.
Я использовал метод БСП: УправлениеПечатьюСлужебныйКлиент.ВыполнитьОткрытиеПечатнойФормы с передачей ссылки на обработку и массива объектов. В этом случае БСП сама вызывает метод Печать() из модуля обработки.
rpgshnik; +1 Ответить
5. xrrg 345 19.12.19 17:45 Сейчас в теме
дедовский способ делать функции регистрации) если уж пользовать БСП, то по полной
Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
	
	ПараметрыРегистрации.Вид 				= ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
	ПараметрыРегистрации.Наименование 		= "Обработка 1";
	ПараметрыРегистрации.Версия 			= "1.0";
	ПараметрыРегистрации.БезопасныйРежим 	= Ложь;
	ПараметрыРегистрации.Информация 		= "Обработка 1";	
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление 				= "Обработка 1";
	НоваяКоманда.Идентификатор 				= "Обработка1";
	НоваяКоманда.Использование 				= ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
	
	Возврат ПараметрыРегистрации; 
	
КонецФункции
Показать
-Almi-; NeviD; IntellXeon; KUAvanesov; stasorsk; triviumfan; alevnev; user774630; John_d; +9 Ответить
7. -Almi- 69 08.02.20 08:29 Сейчас в теме
Всё классно, но блин ребята, допотопный код формирования сведений, без обид ))
(5) Поддерживаю, я бы даже так предложил:
Функция СведенияОВнешнейОбработке() Экспорт
    
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.2");
    
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
    ПараметрыРегистрации.Версия = "1.0";
	ПараметрыРегистрации.БезопасныйРежим = Ложь;

	ПараметрыРегистрации.Назначение.Добавить("Документ.СверкаВзаиморасчетов");
	
    КомандаПечати = ПараметрыРегистрации.Команды.Добавить();
    КомандаПечати.Идентификатор = "вн_АктСверкиВзаиморасчетов";
    КомандаПечати.Представление = НСтр("ru= 'Акт сверки взаиморасчетов (вн)'");
    КомандаПечати.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода();
    КомандаПечати.ПоказыватьОповещение = Ложь;
    КомандаПечати.Модификатор = "ПечатьMXL";
	
    Возврат ПараметрыРегистрации;
    
КонецФункции
Показать
Infected; yaguarrr; +2 Ответить
6. mai_k 26.12.19 13:51 Сейчас в теме
Может кто-нибудь делал что-то подобное, только форму надо открывать для каждой строки табличной части документа? Может кто поделится?
Есть у меня механизм, но кажется жутко кривым, аж стыдно показывать..
10. пользователь 02.06.21 16:25
Сообщение было скрыто модератором.
...
11. Xershi 1539 21.12.23 02:25 Сейчас в теме
(6) на форме делаешь таблицу и потом её в печать отдаёшь.
8. user1233211 7 12.03.20 05:49 Сейчас в теме
Добрый день, а можно эту печатную форму где нибудь скачать или скиньте пожалуйста на почту?
9. chg 10.03.21 10:47 Сейчас в теме
(8)а 10 минут потратить на то чтобы сделать как в статье указано?
уровень лени выходит на новые высоты
12. nollff 19 19.01.24 14:06 Сейчас в теме
Я воспользуюсь ВызовКлиентскогоМетода, по мне так проще отлаживать обработку.

А как вы отлаживаете такую обработку, если её выполнение запускается из формы документа командой ПЕЧАТЬ?
Оставьте свое сообщение