Внешняя печатная форма с вводом параметров через дополнительную форму

01.10.23

Разработка - Инструментарий разработчика

Удобный ввод параметров в печатную форму с помощью дополнительной формы

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
Внешняя печатная форма с вводом параметров (с версии БСП 3.1.9...)
.epf 17,06Kb
125 1 850 руб. Купить
Внешняя печатная форма с вводом параметров (Версия БСП ниже 3.1.9...)
.epf 11,23Kb
202 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

1. Создаем новую внешнюю обработку и указываем сведения в модуле объекта:

Функция СведенияОВнешнейОбработке() Экспорт
  
  	ПараметрыРегистрации = Новый Структура;
  	ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //Варианты: "ДополнительнаяОбработка", "ДополнительныйОтчет", "ЗаполнениеОбъекта", "Отчет", "ПечатнаяФорма", "СозданиеСвязанныхОбъектов" 
  
  	МассивНазначений = Новый Массив();
  	МассивНазначений.Добавить("Справочник.Сотрудники");
  	ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
  
	ПараметрыРегистрации.Вставить("Наименование", "Пример печатной формы с вводом параметров");
  	ПараметрыРегистрации.Вставить("Версия", "1.0"); //например: "1.0"
 	ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина); //Варианты: Истина, Ложь
  	ПараметрыРегистрации.Вставить("Информация", "");
  
  	ТаблицаКоманд = ПолучитьТаблицуКоманд();

  	ДобавитьКоманду(ТаблицаКоманд,
          НСтр("ru = 'Пример печатной формы с вводом параметров'"),//для отображения пользователю
          "ПримерПечатнойФормы",    
          "ВызовКлиентскогоМетода",  //Использование.  Варианты: "ОткрытиеФормы", "ВызовКлиентскогоМетода", "ВызовСерверногоМетода"   
          Истина,//Показывать оповещение. Варианты Истина, Ложь 
          "ПечатьMXL",//Модификатор 
		  ""); //Строка с идентификаторами заменяемых внутренних печатных форм. Например "Счет,Заказ"

  ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

  Возврат ПараметрыРегистрации;

КонецФункции

Функция ПолучитьТаблицуКоманд()

  Команды = Новый ТаблицаЗначений;
  Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
  Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("ЗаменяемыеКоманды", Новый ОписаниеТипов("Строка"));
  
  Возврат Команды;

КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "",ЗаменяемыеКоманды = "")

  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;
  НоваяКоманда.ЗаменяемыеКоманды = ЗаменяемыеКоманды;

КонецПроцедуры

Также в модуле объекта пишем:

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода = Неопределено) Экспорт
	
	ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПримерПечатнойФормы") Тогда
		
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
		КоллекцияПечатныхФорм,
		"ПримерПечатнойФормы", //тот же - что и в функции "СведенияОВнешнейОбработке"! 
		"Пример печатной формы с вводом параметров", 
		СформироватьПримерПечатнойФормы(МассивОбъектов, ОбъектыПечати)//исполняющая функция (в этом же модуле)
		);
	КонецЕсли;	
		
КонецПроцедуры

Функция СформироватьПримерПечатнойФормы(МассивОбъектов, ОбъектыПечати)	 
	
	ДокументРезультат = Новый ТабличныйДокумент;
	ДокументРезультат.КлючПараметровПечати = "ПараметрыПечати_ПримерВПФ";
	ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
	ДокументРезультат.ПолеСправа = 20;
	ДокументРезультат.АвтоМасштаб = Истина;
	
	Макет = ПолучитьМакет("Макет");
	ОбластьМакета = Макет.ПолучитьОбласть("ОбластьМакета");	
	
	
	Сотрудники 		= МассивОбъектов[0].Сотрудники;
	ТекстИзФормы 	= МассивОбъектов[0].ТекстДляПечати;
	
	ВставлятьРазделительСтраниц = Ложь;
	
	Для каждого стр Из Сотрудники Цикл

		Если ВставлятьРазделительСтраниц Тогда
		
			ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();	
				
		КонецЕсли;
		
		ОбластьМакета.Параметры.ТекстИзФормы = ТекстИзФормы;
		
		ДокументРезультат.Вывести(ОбластьМакета); 
		
	    ВставлятьРазделительСтраниц = Истина;

	КонецЦикла;	
	
	Возврат ДокументРезультат;
	
КонецФункции

2. Переходим к созданию основной формы обработки, она нам понадобится только для исполнения процедур:

  • Добавим параметры к форме, обязательно в свойствах параметров указать "Ключевой параметр", после этого параметры выделятся жирным шрифтом 

  • В модуле основной формы пишем следующий код:
&НаКлиенте
Процедура Печать(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("Сотрудники", ОбъектыНазначенияМассив);
	ОткрытьФорму("ВнешняяОбработка.ПримерПечатнойФормы.Форма.ФормаВвода",ПараметрыФормы,,,,,Новый ОписаниеОповещения("ПечатьЗавершение", ЭтаФорма, ОбъектыНазначенияМассив), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);	
КонецПроцедуры

&НаКлиенте
Процедура ПечатьЗавершение(Результат, ДополнительныеПараметры) Экспорт

	Если Результат <> Неопределено Тогда 
		Если Результат.Печать Тогда 
			ВыполняемаяКоманда = Параметры;
			
                        //начиная с версии БСП 3.1.9... в параметры добавляем КоллекцияПечатныхФорм
			ПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника, КоллекцияПечатныхФорм");
			ПараметрыОткрытия.ИсточникДанных = Параметры.ДополнительнаяОбработкаСсылка;
			ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");
			ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ВыполняемаяКоманда.ИдентификаторКоманды;
			
			ДополнительныеПараметры = Новый Структура();
			ДополнительныеПараметры.Вставить("СтруктураПараметров", Результат);
			
			ОбъектыНазначения = Новый Массив;
			ОбъектыНазначения.Добавить(Результат);
			
			//Ссылки на вызвавшие форму объекты
			Для каждого ОбъектНазначения Из ВыполняемаяКоманда.ОбъектыНазначения Цикл 
				ОбъектыНазначения.Добавить(ОбъектНазначения);
			КонецЦикла; 
			ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = ОбъектыНазначения; 
     
			СформироватьПечатныеФормы(ПараметрыОткрытия); //<--начиная с версии БСП 3.1.9...   

			//Вывод сформированного табличного документа
			ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры     

Процедура СформироватьПечатныеФормы(ПараметрыОткрытия)
	//добавляем с версии БСП 3.1.9...
	Результат = Неопределено; 
	ОбъектыПечати = Новый СписокЗначений;    
	ПараметрыВывода = Неопределено;

	УправлениеПечатью.ПечатьПоВнешнемуИсточнику(
			ПараметрыОткрытия.ИсточникДанных,
			ПараметрыОткрытия.ПараметрыИсточника,
			Результат,
			ОбъектыПечати,
			ПараметрыВывода); 

	ПараметрыОткрытия.КоллекцияПечатныхФорм = Общегоназначения.ТаблицаЗначенийВМассив(Результат);	
		
КонецПроцедуры
  • Создаем еще одну форму, и назовем ее "ФормаВвода", разместим на ней реквизит "ТекстДляПечати":

  • В модуль формы добавим следующий код:
&НаКлиенте
Процедура Печать(Команда)
	
	Структура = Новый Структура; 
	Структура.Вставить("Сотрудники", 	Сотрудники);
	Структура.Вставить("ТекстДляПечати", 	ТекстДляПечати);	
	Структура.Вставить("Печать" , Истина); 
	ЭтаФорма.Закрыть(Структура);

КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Сотрудники.ЗагрузитьЗначения(Параметры.Сотрудники);
	ТекстДляПечати = "Пример печати";   
	
КонецПроцедуры


В обработке "Внешняя печатная форма с вводом параметров (с версии БСП 3.1.9...)" есть возможность отладки печатной формы. Для этого необходимо указать основную форму "ФормаДляТестирования" и запускать в режиме 1С Предприятие через Файл-Открыть. Перед добавлением обработки в базу необходимо переназначить основную форму на "Форма".
 

Внешняя печатная форма с вводом параметров (с версии БСП 3.1.9...) тестировалась в конфигурации Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.27.90) 

Внешняя печатная форма с вводом параметров (Версия БСП ниже 3.1.9...) тестировалась в конфигурации Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.25.136) 

INFOSTART PRINTWIZARD: Конструктор печатных форм в 1С: 8.3

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


Вступайте в нашу телеграмм-группу Инфостарт

параметры в печатную форму печатная форма настройки печатной формы

См. также

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

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    202114    1114    410    

1021

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    35487    206    104    

195

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    23919    63    26    

92

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

16000 руб.

10.11.2023    16413    69    39    

88

Инструментарий разработчика Программист 1С v8.3 Платные (руб)

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

9360 руб.

17.05.2024    34604    122    53    

165

SALE! 30%

Инструментарий разработчика WEB-интеграция 1С v8.3 1C v8.2 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Инструмент для генерации OpenApi (Swagger) спецификаций на основании файлов конфигураций 1С. Это консольное и десктопное приложение на языке Rust с полноценным редактором кода, содержащим автозамену и подсвечивание ошибок для быстрого и безошибочного написания документирующего комментария.

18000 12600 руб.

22.11.2024    1641    1    0    

8

Инструментарий разработчика Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

6000 руб.

07.02.2018    107115    249    100    

313
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. and_r 01.11.19 08:54 Сейчас в теме
3. evakuzmina 11.11.19 16:09 Сейчас в теме
Хочу поменять название обработки на "Тест" и... печ. форма перестаёт работать.
4. Margo462 520 12.11.19 12:52 Сейчас в теме
(3) где название меняете? Скрин прикрепите
21. VAAngelov 552 12.11.21 10:28 Сейчас в теме
(4)Скажите пжл, как ее отлаживаете?
5. evakuzmina 12.11.19 21:51 Сейчас в теме
А теперь получилось. В заблуждение ввело то, что название формы совпало с названием параметра:
РегистрационныеДанные.Вставить("Вид", "ПечатнаяФорма");
Обратите на это внимание.
6. klarazai 25.12.19 10:13 Сейчас в теме
Очень помогло. Спасибо БОЛЬШОЕ!!!!!!
7. user717534 11 24.06.20 22:26 Сейчас в теме
У меня из-за этой строки
ОбъектыНазначения.Добавить(Результат);
вылезла ошибка
"Метод объекта не обнаружен (Метаданные)".
Это лишняя строка, её можно просто убрать.
За примеры кода огромное спасибо.
vvbelakin; Рамзес; BrainWashed; +3 Ответить
8. Daynestro07 26.06.20 15:09 Сейчас в теме
Спасибо, очень помогло.
9. kusd 25.07.20 12:28 Сейчас в теме
Спасибо, помогло решить задачу!
10. KEV8383 20 02.09.20 18:10 Сейчас в теме
"МассивОбъектов" внешней печатной формы хранит ссылки на объекты печати.
Теперь он хранит дополнительные параметры формы ввода.

Как теперь получить в модуле объекта "Массив объектов" т.е. и новые параметры формы ввода и массив объектов печсати ))) ?!
11. KEV8383 20 11.09.20 15:40 Сейчас в теме
(10)
Разобрался:

В основной форме добавляем в параметры формы "ОбъектыНазначенияМассив":

&НаКлиенте
Процедура Печать(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
	ПараметрыФормы = Новый Структура("ОбъектыНазначенияМассив", ОбъектыНазначенияМассив);
	
       ОткрытьФорму("ВнешняяОбработка.ПечатнаяФорма.Форма.ФормаВвода",ПараметрыФормы,,,,,Новый 
                                  ОписаниеОповещения("ПечатьЗавершение", ЭтаФорма, ОбъектыНазначенияМассив), 
                                  РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);	

КонецПроцедуры
Показать


В форме ввода добавляем процедуру "ПриСозданииНаСервере" в которой принимаем "ОбъектыНазначенияМассив" :

&НаСервере
 Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	 
	Если Параметры.Свойство("ОбъектыНазначенияМассив") Тогда
		МассивСсылокНаОбъекты = Параметры.ОбъектыНазначенияМассив;
	КонецЕсли;
		 
 КонецПроцедуры  


Далее передаем все параметры формы ввода и наш массив ссылок в процедуру печати модуля объекта.


Прошу поправить если что-то не учел или если можно проще.
13. phill75 04.12.20 01:18 Сейчас в теме
(11) Не совсем понял как можно в параметры засунуть массив: мне выдает: Тип "Массив" не может использоваться в данных формы
15. user1042850 26.01.21 14:06 Сейчас в теме
(11) Как вы это сделали, никак не получается получить параметры в модуле объекта, тем более без отладки
12. malets 2 28.09.20 11:19 Сейчас в теме
Спасибо, сэкономили драгоценное время мне!
14. user1042850 26.01.21 14:04 Сейчас в теме
Далее передаем все параметры формы ввода и наш массив ссылок в процедуру печати модуля объекта.


Можете пояснить как это сделать? Тоже не понял как
16. nmifn 26.01.21 19:39 Сейчас в теме
(14) Например, так:
В процедуру ПечатьЗавершение после строки

ОбъектыНазначения = Новый Массив;

добавить свои передаваемые параметры:

ДополнительныеПараметры = Новый Структура;
//Значения для передачи
ДополнительныеПараметры.Вставить("МойПараметр1", ЗначениеМоегоПараметра1);
ДополнительныеПараметры.Вставить("МойПараметр2", ЗначениеМоегоПараметра2);

ОбъектыНазначения.Добавить(ДополнительныеПараметры);

А в модуле обработки в процедуре ПечатьМакета это будет первый элемент массива МассивОбъектов

В этой статье ( МассивОбъектов[0].НазваниеПечатнойФормы;) это в строке:
ОбластьМакета.Параметры.НазваниеПечатнойФормы = МассивОбъектов[0].НазваниеПечатнойФормы;

У меня уже была процедура заполнения макета с использованием «изначального» первого элемента этого массива, чтобы сделать "быстро и тупо", сделала так:

МойПарам1 = МассивОбъектов[0]. МойПараметр1;
МассивОбъектов.Удалить(0);
ms33; KEV8383; user1042850; +3 Ответить
17. user1042850 27.01.21 06:53 Сейчас в теме
(16) Спасибо огромное мил человку, наконецто получилось! Без отладки не понимал как формировались параметры
lenokv_07; KEV8383; +2 Ответить
26. Belayaya 2 07.12.22 10:46 Сейчас в теме
(16)
полнительныеПараметры.Вставить("МойПараметр1", ЗначениеМоегоПараметра1);
ДополнительныеПараметры.Вставить("МойПараметр2", ЗначениеМоегоПараметра2);

(17)
(16) А где взять ЗначениеМоегоПараметра? Оно же задается в другой форме
27. Belayaya 2 07.12.22 12:07 Сейчас в теме
18. volkov-mv 04.03.21 05:32 Сейчас в теме
Здравствуйте, не понимаю в какой момент происходит формирование печатной формы в модуле объекта обработки, в какой момент алгоритм туда заходит, объясните кто-нибудь пожалуйста, ?
19. volkov-mv 04.03.21 06:24 Сейчас в теме
20. Airlord 15.10.21 11:27 Сейчас в теме
Добрый день! Отличная тема! Создал по описанию тестовую - заработала. Теперь есть поле деятельности для написания форм с параметрами для предприятия) Все не мог понять как передать параметры в форму и потом отправить на печать то что нужно - особенно пригодится для ПФ с подписантами - например Комиссия по списанию ОС. Автору респект!
22. lenokv_07 27.01.22 14:40 Сейчас в теме
Благодарю. Очень помогла статья.
23. user930087 23.02.22 00:16 Сейчас в теме
Что мог сделать не так, что не выходит форма с параметрами, а сразу выходит печатная форма. Все сделал точно по статье.
24. user930087 23.02.22 00:34 Сейчас в теме
вообще не заходит в процедуру печать в основной форме и соответственно не открывает форму ввода
25. Anosov_EP 19.09.22 13:46 Сейчас в теме
28. Djavdet1978 07.02.23 10:35 Сейчас в теме
Большое спасибо. Помогло.

//на форме

&НаКлиенте
Процедура Печать(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
	ПараметрыФормы = Новый Структура;
	ИмяОбработки=НайтиИмяОбработки();
	ИмяФормыВвода=ИмяОбработки+".Форма.ФормаВвода";
	ОткрытьФорму(ИмяФормыВвода,ПараметрыФормы,,,,,Новый ОписаниеОповещения("ПечатьЗавершение", ЭтаФорма, ОбъектыНазначенияМассив), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);	
КонецПроцедуры

&НаСервере
Функция НайтиИмяОбработки();
ПолноеИмяМетаданных = РеквизитФормыВЗначение("Объект").Метаданные().ПолноеИмя();
Возврат ПолноеИмяМетаданных; 
КонецФункции

&НаКлиенте
Процедура ПечатьЗавершение(Результат, ДополнительныеПараметры) Экспорт
	Если Результат <> Неопределено Тогда 
		Если Результат.Печать Тогда 
			//данные Результат, Результат.СоздаватьТН и Результат.ПеремещениеСклад приходит из другой формы 
			Создавать =  Результат.СоздаватьТН;
			ПеремещениеСклад=Результат.ПеремещениеСклад;
			Адрес = ПечатьЗавершениеСервер(Создавать, ПеремещениеСклад);
			ТабДок = ПолучитьИзВременногоХранилища(Адрес);
			ТабДок.Показать();
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры  

&НаСервере
Функция ПечатьЗавершениеСервер(Создавать,ПеремещениеСклад)
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
	ТабДок = ОбработкаОбъект.Тест( Параметры.ОбъектыНазначения,Создавать, ПеремещениеСклад);
	Адрес = ПоместитьВоВременноеХранилище(ТабДок, Новый УникальныйИдентификатор());
	Возврат(Адрес);
КонецФункции

//+прибавил на модуле
Перем СоздаватьДокумент;
Перем ВыбраныйСклад;

Функция Тест(ОбъектыНазначения,Создавать,ПеремещениеСклад) Экспорт
	СоздаватьДокумент = Создавать;
	ВыбраныйСклад=ПеремещениеСклад;
       ТабДок = ПечатьГруппыДокументов(ОбъектыНазначения, Неопределено);
	Возврат(ТабДок);
КонецФункции
Показать
29. user1141482 24.05.23 16:16 Сейчас в теме
Добрый день! Спасибо за статью!
Подскажите пожалуйста а как можно сделать, чтобы форма открывалась при определенных условиях? В модуле формы как я понял задать условие.

&НаКлиенте
Процедура Печать(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт 
	
	//Условие для открытие формы 
	ПараметрыФормы = Новый Структура;
	ОткрытьФорму("ВнешняяОбработка.ПриемНаРаботу.Форма.ФормаВвода", ПараметрыФормы,,,,,Новый ОписаниеОповещения("ПечатьЗавершение", ЭтаФорма, ОбъектыНазначенияМассив), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);		
	
КонецПроцедуры
Показать


А как дальше быть? Нужно возвращаться в модуль объекта? И если возвращаться в модуль объекта, то у меня там экспортная функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати), МассивОбъектов я передам, а где взять ОбъектыПечати?
30. user705393_den 24.08.23 16:12 Сейчас в теме
Ничего не происходит. Нажимаю на печать, открывается форма ввода, заполняю параметр, форма ввода закрывается и все, ничего больше не печатается и ошибок нет тоже.
GlobalCom; Costa; +2 Ответить
31. GPetr 22 24.09.23 22:14 Сейчас в теме
(30) После перевода конфигурации в режим совместимости 8.3.21 поменялся алгоритм вызова событий.
Возможно это ошибка платформы.

Если раньше на клиенте запускалось событие ПриОткрытии()

То сейчас запускается ПриСозданииНаСервере()

поэтому не печатает
32. Costa 27.09.23 10:35 Сейчас в теме
После обновления ЗУП.
Перестали формироваться печатные формы с передачей параметра. Вводишь параметр, нажимаешь на кнопку печать, форма закрывается и все. И отладка не срабатывает. Раньше можно было отладить используя код который приводили на инфостарте.
Попытался проверить выполнение кода, в результате выяснилось что после закрытия формы с параметром, процедура "Печать" в модуле объекта не выполняется.
Кто-то смог решить этот вопрос? Поделитесь пожалуйста.
33. alextop 27.09.23 13:41 Сейчас в теме
(32)
Раньше в общей форме "ПечатьДокументов" в ПриСозданииНаСервере формировалась коллекция печатных форм
	Если Параметры.КоллекцияПечатныхФорм = Неопределено Тогда
		КоллекцияПечатныхФорм = СформироватьПечатныеФормы(Параметры.ИменаМакетов, Отказ);
		Если Отказ Тогда
			Возврат;
		КонецЕсли;
	Иначе


А сейчас нет:

	Если Параметры.КоллекцияПечатныхФорм = Неопределено Тогда
		Отказ = Истина;
		Возврат;
	Иначе


Пока не понял где теперь сформировать коллекцию
aleksey2; user2016725; chastliviy; Costa; +4 Ответить
34. Costa 27.09.23 13:47 Сейчас в теме
(33) Да, именно тут Параметры.КоллекцияПечатныхФорм = Неопределено и вылетает.

Если найдете решение, пожалуйста, напишите.
36. alextop 27.09.23 14:36 Сейчас в теме
(34) Пока в общей форме вернул как было расширением

&НаСервере
Процедура Расш1_ПриСозданииНаСервереПеред(Отказ, СтандартнаяОбработка)
	Если Параметры.КоллекцияПечатныхФорм = Неопределено Тогда
		КоллекцияПечатныхФорм = СформироватьПечатныеФормы(Параметры.ИменаМакетов, Отказ);
		Если Отказ Тогда
			Возврат;
		КонецЕсли;
		Параметры.КоллекцияПечатныхФорм = КоллекцияПечатныхФорм ;
	КонецЕсли;	
КонецПроцедуры
Показать
user2016725; Costa; +2 Ответить
35. Margo462 520 27.09.23 14:12 Сейчас в теме
(32) Добрый день, проверим, спасибо за информацию
38. Margo462 520 01.10.23 15:25 Сейчас в теме
(32) вопрос решен) добавила в код еще параметр с коллекцией печатных форм
37. Margo462 520 01.10.23 15:16 Сейчас в теме
(34) добавила в публикацию изменения, на новой версии бсп работает
StAsya_1C; +1 Ответить
39. lhfrjy 12.10.23 14:19 Сейчас в теме
(37)На какой версии БСП работает? 3.1...?
40. Margo462 520 12.10.23 14:59 Сейчас в теме
(39) 3.1.9..., но на ранней версии тоже работает такой вариант
41. cdiamond 235 21.10.23 10:53 Сейчас в теме
В примере статьи при множественном выборе списка сотрудников у всех напечатается одинаковый текст, отчего смысл доработки такого рода немного теряется. Как сделать чтоб у каждого объекта печати был свой текст в зависимости от объекта печати?
42. 1Pawel 3 17.06.24 23:25 Сейчас в теме
Спасибо за статью, очень помогла!

1. В модуле формы ФормаВвода этот код не понадобился, работает и без него.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Сотрудники.ЗагрузитьЗначения(Параметры.Сотрудники);
	ТекстДляПечати = "Пример печати";   
КонецПроцедуры


2. К вопросу (10). Стоило бы упомянуть, что из формы в модуль объекта нужный нам реквизит попадает в массив МассивОбъектов c индексом 0, а ссылка на объект там же с индексом 1.

3. Нужно передать реквизит формы из массива в какую-нибудь переменную, а потом удалить из массива. Спасибо за подсказку (16).
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода = Неопределено) Экспорт
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПримерПечатнойФормы") Тогда
		ОбъектСсылка = МассивОбъектов[1];
		Организация = МассивОбъектов[0].Организация;
		МассивОбъектов.Удалить(0);

Если не удалить, то функция отправки документа по электронной почте, которая как правило в этой же процедуре выдаст ошибку, что в массиве не только ссылки.
ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектовНазначения, КоллекцияПечатныхФорм);

4. В модуле формы Форма эта процедура ломает отправку документа по почте (не заполняются адрес получателя, тема и текст письма). Убрал, и стало работать корректно.
Процедура ПечатьЗавершение(Результат, ДополнительныеПараметры) Экспорт
…
	СформироватьПечатныеФормы(ПараметрыОткрытия); //<--начиная с версии БСП 3.1.9...

Делал в конфигурации Управление торговлей 11.5.12.270, БСП 3.1.9.302.
43. 1Pawel 3 26.06.24 13:41 Сейчас в теме
(29) Мне тоже понадобилось выводить форму в зависимости от условий. Сделал так.
&НаКлиенте
Процедура Печать(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт

	Если ТутУсловиеОткрытияФормыВвода Тогда
		ПараметрыФормы = Новый Структура("ОбъектыНазначенияМассив", ОбъектыНазначенияМассив);
		ОткрытьФорму("ВнешняяОбработка.СоглашениеЭДО.Форма.ФормаВвода",ПараметрыФормы,,,,,Новый ОписаниеОповещения("ПечатьЗавершение", ЭтаФорма, ОбъектыНазначенияМассив), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);	
	Иначе
		//Тут код из процедуры Процедура ПечатьЗавершение(Результат, ДополнительныеПараметры) Экспорт
		ПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника, КоллекцияПечатныхФорм");
		ПараметрыОткрытия.ИсточникДанных = Параметры.ДополнительнаяОбработкаСсылка;
		ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");
		ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды;

		Результат = Новый Структура; 
		Результат.Вставить("Сотрудники", СвойАлгоритм()); //Заполняем алгоритмом, не требующим заполнения формы
		Результат.Вставить("Печать", Истина); 

		ОбъектыНазначения = Новый Массив;
		ОбъектыНазначения.Добавить(Результат);
		
		//Ссылки на вызвавшие форму объекты
		Для каждого ОбъектНазначения Из ОбъектыНазначенияМассив Цикл 
			ОбъектыНазначения.Добавить(ОбъектНазначения);
		КонецЦикла; 
		ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = ОбъектыНазначения; 
 
		//Вывод сформированного табличного документа
		ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);

	КонецЕсли;
Показать
44. user2108481 08.10.24 09:33 Сейчас в теме
Добрый день! В ведомостях на счета нужно выбрать несколько ведомостей и вывести их в одну печатную форму в одну таблицу. Проблема в том, что я выделяю 2 объекта, но в печатной форме выводится только первый выделенный объект. Подскажите, как доработать печатную форму, какой код добавить?
Оставьте свое сообщение