Образец печатной формы:
внесены корректировки с учетом изменений БСП 3.1.9
Пример печатной формы «Справка о заработной плате и других доходах» которая запрашивает период у пользователя перед выводом на печать.
Описание:
Демонстрационный пример добавляется, как внешняя печатная форма и вызывается из меню «Печать» карточки «Сотрудника».

- В сведениях о внешней обработки устанавливаем вызов клиентского метода
|
1 |
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода(); |
2. У формы создаем 4-и ключевых параметра:

3. Создаем еще одну форму ввода

4. В модуле «Формы» &НаКлиенте прописываем процедуру Печать() которая откроет «Форму ввода» с вызовом процедуры ПечатьЗавершение() при закрытии.
|
1 2 3 4 5 |
&НаКлиенте Процедура Печать(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт ПараметрыФормы = Новый Структура; ОткрытьФорму("ВнешняяОбработка.СправкаОЗаработнойПлатеЗаПериод.Форма.ФормаВвода",ПараметрыФормы,,,,,Новый ОписаниеОповещения("ПечатьЗавершение", ЭтаФорма, ОбъектыНазначенияМассив), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс); КонецПроцедуры |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
&НаКлиенте Процедура ПечатьЗавершение(Результат, ДополнительныеПараметры) Экспорт Если Результат <> Неопределено Тогда Если Результат.Печать Тогда ВыполняемаяКоманда = Параметры; // {{ изменения версии БСП 3.1.9 //ПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника"); ПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника, КоллекцияПечатныхФорм"); // }} ПараметрыОткрытия.ИсточникДанных = Параметры.ДополнительнаяОбработкаСсылка; ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения"); ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ВыполняемаяКоманда.ИдентификаторКоманды; ОбъектыНазначения = Новый Массив; ОбъектыНазначения.Добавить(Результат); //Ссылки на вызвавшие форму объекты Для каждого ОбъектНазначения Из ВыполняемаяКоманда.ОбъектыНазначения Цикл ОбъектыНазначения.Добавить(ОбъектНазначения); КонецЦикла; ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = ОбъектыНазначения; //Вывод сформированного табличного документа в штатную форму. ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия); КонецЕсли; КонецЕсли; КонецПроцедуры |
внесены корректировки с учетом изменений БСП 3.1.9
В процедуре ПечатьЗавершение() открывается общая форма «ПечатьДокументов».
5. В «Форме ввода» получаются нужные данные от пользователя и передаются в параметр метода Закрыть(<ПараметрЗакрытия>).
|
1 2 3 4 5 6 7 |
&НаКлиенте Процедура Печать(Команда) Структура = Новый Структура; Структура.Вставить("ПериодОтчета", ПериодОтчета); Структура.Вставить("Печать" , Истина); ЭтаФорма.Закрыть(Структура); КонецПроцедуры |
Образец печатной формы для скачивания в начале описания.

Дяденька, дай тебе Бог здоровья!
Сутки мучаюсь c внешней формой, которая интерактивно запрашивает данные перед печатью, перечитал все неработающие варианты из статей по всему рунету, и только твоя статья работает прямо на моей типовой конфигурации методом копипаста.
Теперь буду разбираться с кодом, потому что этот точно работает.
приложеныый файл работает, но то что тут написано нихрена не понятно, придется лезть в код
В описании обозначены ключевые моменты, основное это файл
За ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода() — конкретное спасибо!
в новой БСП (по крайней мере ЗУП) нет там параметра KоллекцииПечатныхФорм при открытии ОткрытьФорму(«ОбщаяФорма.ПечатьДокументов», ПараметрыОткрытия) поэтому больше не работает
Да, согласен с Вами. Столкнулся с такой же проблемой.
Спасибо за подсказку, в обработку внесены корректировки с учетом изменений БСП 3.1.9
Спасибо за ссылку, в обработку внесены корректировки с учетом изменений БСП 3.1.9
Спасибо, актуальный материал!
Спасибо за статью. Долго мучился исправляя внешнюю печатную форму после обновления БСП. Всё заработало!
Спасибо большое! Все по делу. То что нужно!
Спасибо.
Здравствуйте.
Ваша обработка работает.
Сделал свой отчёт. Тест работает, но при печати из формы сотрудников
даёт ошибку. Похоже массив объектов в форме настройки не заполняется автоматом из текущего сотрудника формы.
Спасибо, вам, светлая голова. На БСП 3.1.9.199 работает!
ОбъектыНазначения = Новый Массив;
ОбъектыНазначения.Добавить(Результат);
Тут же ошибка.
Объекты назначения передались через параметры описания оповещения.
У меня заработало с изменением на следующий код:
ОбъектыНазначения = Новый Массив;
Для Каждого ТекущийОбъект Из ДополнительныеПараметры Цикл
ОбъектыНазначения.Добавить(ТекущийОбъект);
КонецЦикла;
Проверил у меня все работает, вы в какой конфигурации и на какой БСП получили ошибку?
Всем добрый день!
Решил доработать вашу обработку под свои нужды, а именно помимо периода на форму ввода вывел таблицу данных с конкретными сотрудниками которые формируются через запрос и именно их мне надо вывести на печать, но они не выводятся на печать почему-то, а выводятся только те сотрудники, которых выделил (выбрал) в справочнике «Сотрудники» (ВПФ разместил для печати из меню «Печать» в справочнике «Сотрудники»). Я начинающий программист и поэтому не могу тут разобраться. Помогите пожалуйста. Как вывести на печать сотрудников из дополнительной формы ввода (формы диалога)? Прикрепить файл своей обработки не могу здесь, поэтому постарался расписать суть проблемы. Работаю в ЗУП 3.1 (3.1.34.3).
Данные которые вы заполняете на «ФормеВвода» №2 (Диалоговом окне), сначала попадают в переменную «Результат» процедуру ПечатьЗавершение «Формы» №1, там они упаковываются в первый элемент Массива «ОбъектыНазначения» и далее с этим массивом мы уже работаем в Модуле Объекта под именем «МассивОбъектов» (процедур ПечатьВнешнейПечатнойФормы), извлекаем данные из первого элемента массива с его удалением.
Т.е. если вы тяните какой то список сотрудников из диалога, то ищите его в процедуре ПечатьВнешнейПечатнойФормы переменном МассивОбъектов[0].ИмяВашейПеременной.
Почему просто не использовать тип команды «ОткрытиеФормы» (БСП 3.11.х)?
Cразу откроется основная форма внешней обработки, «ФормаВвода» будет не нужна!
Обратите внимание на 3-й параметр в ОписаниеОповещения
Новый ОписаниеОповещения(«ПечатьЗавершение», ЭтаФорма, ОбъектыНазначенияМассив)
Процедура ПечатьЗавершение(Результат, ДополнительныеПараметры) Экспорт
Здесь ОбъектыНазначенияМассив «попадут» в ДополнительныеПараметры
Но дальше ДополнительныеПараметры НЕ используются, так может НЕ нужно из передовать?