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

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! 15%

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

Универсальная обработка для загрузки документов из Excel в 1С. Забудьте о ручном вводе: загружайте документы из Excel в 1С за секунды! Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С.

6000 5100 руб.

09.11.2016    242901    1121    910    

1048

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

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

22200 руб.

06.10.2023    19629    50    19    

84

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

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

14400 руб.

13.03.2018    62971    221    79    

120

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

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

3960 руб.

08.10.2019    49262    179    105    

172

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

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

4560 руб.

13.02.2019    102529    464    45    

447

Печатные формы Бухгалтер Платформа 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 спец., ПЛ для Автомобильного крана.

3600 руб.

14.10.2019    40412    276    216    

181

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

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

4500 руб.

23.08.2019    59173    185    64    

179

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

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

3720 руб.

18.02.2019    66011    223    15    

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

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