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

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)

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

См. также

SALE! 25%

Infostart PrintWizard

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

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

18000 15300 руб.

06.10.2023    7259    21    6    

39

Универсальная печать по шаблонам Word (Печать договоров из 1С БП 3, УНФ 1.6, ЗУП 3, УТ 11, КА 2, ERP 2, ДО 3)

Печатные формы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Научите вашу 1C печатать из 1С в файл Word (Например: трудовые договоры, договоры с контрагентами, спецификации, дополнительные соглашения, приказы, коммерческие предложения, акты, накладные, карточки партнера или любого справочника и многие другие). Универсальная печать предназначена для формирования печатных форм на основе шаблонов в формате Word из любой конфигурации 1С. С помощью данного инструмента можно самостоятельно заполнить шаблон реквизитами справочника или документа 1С и сформировать печатные формы на основании ссылки на любой объект.

5400 руб.

08.10.2019    42663    143    88    

134

SALE! 25%

УТ 11, КА 2, ERP 2: Настраиваемые под каждую организацию печать и подпись ответственных лиц в печатных формах (ТОРГ-12, Счёт-фактура, УПД, УКД, Заказ клиента, Акт сверки, М-15 и др.)

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

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

12000 9000 руб.

13.03.2018    56424    179    76    

112

Печатные формы КС-2 и КС-3 в "1С:Бухгалтерия 3.0"

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

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

3240 руб.

13.02.2019    87975    388    44    

371

Печать актов МХ-1, МХ-3 в 1С:Бухгалтерия 3.0

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

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

2520 руб.

18.02.2019    61089    170    14    

139

Путевые листы (расширение)

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

Учет путевых листов выполнен в виде расширения. Предназначен для учета путевых листов в конфигурации Бухгалтерия предприятия 3.0. и Комплексная автоматизация 2. Печатная форма: Типовая межотраслевая форма № 3. Утверждена постановлением Госкомстата России от 28.11.97 № 78. Типовая межотраслевая форма № 4-П от 18.09.2008 г. N 152 с учетом изменений указанных в Приказе Министерства транспорта Российской Федерации №368 от 11 сентября 2020 г. №368, Типовая межотраслевая форма № ЭСМ-7, и др. ЭСМ-2, 4-С, 3 спец., 6 спец., ПЛ для Автомобильного крана. .

2000 руб.

14.10.2019    36510    224    215    

138
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. user654641_yaga_m 12 19.12.19 11:54 Сейчас в теме
2. zhuravlev_as 392 19.12.19 13:14 Сейчас в теме
(1) а в таком случае по-другому и не придумаешь - "гоняешь" данные с клиента на сервер. По сути до такой реализации кода в свое время сам дошел, правда времени потратил - лучше не вспоминать))) Пожалуй, что поленился - это записать в шаблоны код исполняемыей сохранил экземпляры действующих обработок и все.
3. Lapitskiy 1057 19.12.19 14:14 Сейчас в теме
4. ids79 8291 19.12.19 14:59 Сейчас в теме
Реализовывал похожим образом печать ТН во внешней обработке. Там тоже требуется выполнение действий на клиенте до формирования формы.
Я использовал метод БСП: УправлениеПечатьюСлужебныйКлиент.ВыполнитьОткрытиеПечатнойФормы с передачей ссылки на обработку и массива объектов. В этом случае БСП сама вызывает метод Печать() из модуля обработки.
rpgshnik; +1 Ответить
5. xrrg 321 19.12.19 17:45 Сейчас в теме
дедовский способ делать функции регистрации) если уж пользовать БСП, то по полной
Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
	
	ПараметрыРегистрации.Вид 				= ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
	ПараметрыРегистрации.Наименование 		= "Обработка 1";
	ПараметрыРегистрации.Версия 			= "1.0";
	ПараметрыРегистрации.БезопасныйРежим 	= Ложь;
	ПараметрыРегистрации.Информация 		= "Обработка 1";	
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление 				= "Обработка 1";
	НоваяКоманда.Идентификатор 				= "Обработка1";
	НоваяКоманда.Использование 				= ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
	
	Возврат ПараметрыРегистрации; 
	
КонецФункции
Показать
Dempingator; NeviD; IntellXeon; KUAvanesov; stasorsk; triviumfan; alevnev; user774630; John_d; +9 Ответить
7. Dempingator 154 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 1474 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 11 19.01.24 14:06 Сейчас в теме
Я воспользуюсь ВызовКлиентскогоМетода, по мне так проще отлаживать обработку.

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