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

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    17833    49    15    

80

SALE! 20%

Загрузка и выгрузка в 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    239800    1099    906    

1029

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

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

4200 руб.

13.02.2019    100739    456    45    

439

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

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

5400 руб.

08.10.2019    48445    175    105    

171

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

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

14400 руб.

13.03.2018    62255    216    79    

120

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

Программа для автоматизации учета путевых листов в 1С - расширение, добавляющее в конфигурацию "Комплексная автоматизация", документ Путевой лист и печатные формы установленных образцов для легковых и грузовых авто, расчет и списание нормативного количества топлива, отчет "Реестр путевых листов" с отбором по автомобилю и по водителю (через настройки) Позволит контролировать расход топлива, потому что сразу будет виден сверхнормативный расход.

13200 руб.

27.06.2023    4563    15    2    

16

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

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

4500 руб.

23.08.2019    58425    183    64    

175

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

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

1800 руб.

21.11.2024    4168    17    15    

20
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user654641_yaga_m 13 19.12.19 11:54 Сейчас в теме
2. zhuravlev_as 464 19.12.19 13:14 Сейчас в теме
(1) а в таком случае по-другому и не придумаешь - "гоняешь" данные с клиента на сервер. По сути до такой реализации кода в свое время сам дошел, правда времени потратил - лучше не вспоминать))) Пожалуй, что поленился - это записать в шаблоны код исполняемыей сохранил экземпляры действующих обработок и все.
3. Lapitskiy 1062 19.12.19 14:14 Сейчас в теме
4. ids79 8596 19.12.19 14:59 Сейчас в теме
Реализовывал похожим образом печать ТН во внешней обработке. Там тоже требуется выполнение действий на клиенте до формирования формы.
Я использовал метод БСП: УправлениеПечатьюСлужебныйКлиент.ВыполнитьОткрытиеПечатнойФормы с передачей ссылки на обработку и массива объектов. В этом случае БСП сама вызывает метод Печать() из модуля обработки.
rpgshnik; +1 Ответить
5. xrrg 338 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 1563 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 Сейчас в теме
Я воспользуюсь ВызовКлиентскогоМетода, по мне так проще отлаживать обработку.

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