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

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 Платные (руб)

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

22200 руб.

06.10.2023    21557    56    19    

87

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

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

14400 руб.

13.03.2018    63622    227    79    

120

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

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

4800 руб.

14.10.2019    41103    288    216    

190

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

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

4560 руб.

13.02.2019    104070    469    46    

452

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

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

1800 руб.

21.11.2024    6654    33    23    

36

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

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

3720 руб.

18.02.2019    66725    233    15    

185

Печатные формы Программист Пользователь Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

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

3960 руб.

08.10.2019    49905    183    107    

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

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