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

01.10.23

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

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

Скачать файл

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

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

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) 

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

См. также

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    139865    767    391    

801

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

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

18000 руб.

06.10.2023    11423    30    6    

60

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

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

10000 руб.

10.11.2023    7181    26    4    

50

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

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

5400 руб.

17.05.2024    13363    29    27    

74

SALE! %

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

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2880 руб.

14.01.2013    181700    1103    0    

876

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 руб.

07.10.2021    15955    3    12    

39

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

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

5000 руб.

07.02.2018    101074    242    97    

302

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

В процессе работы в 1С часто возникает потребность получить данные из другой базы. Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение для 1С, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    24462    17    15    

34
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. and_r 01.11.19 08:54 Сейчас в теме
3. evakuzmina 11.11.19 16:09 Сейчас в теме
Хочу поменять название обработки на "Тест" и... печ. форма перестаёт работать.
4. Margo462 494 12.11.19 12:52 Сейчас в теме
(3) где название меняете? Скрин прикрепите
21. VAAngelov 417 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 1 07.12.22 10:46 Сейчас в теме
(16)
полнительныеПараметры.Вставить("МойПараметр1", ЗначениеМоегоПараметра1);
ДополнительныеПараметры.Вставить("МойПараметр2", ЗначениеМоегоПараметра2);

(17)
(16) А где взять ЗначениеМоегоПараметра? Оно же задается в другой форме
27. Belayaya 1 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 Сейчас в теме
Ничего не происходит. Нажимаю на печать, открывается форма ввода, заполняю параметр, форма ввода закрывается и все, ничего больше не печатается и ошибок нет тоже.
KonsaltBaltic; Costa; +2 Ответить
31. GPetr 21 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 494 27.09.23 14:12 Сейчас в теме
(32) Добрый день, проверим, спасибо за информацию
38. Margo462 494 01.10.23 15:25 Сейчас в теме
(32) вопрос решен) добавила в код еще параметр с коллекцией печатных форм
37. Margo462 494 01.10.23 15:16 Сейчас в теме
(34) добавила в публикацию изменения, на новой версии бсп работает
StAsya_1C; +1 Ответить
39. lhfrjy 53 12.10.23 14:19 Сейчас в теме
(37)На какой версии БСП работает? 3.1...?
40. Margo462 494 12.10.23 14:59 Сейчас в теме
(39) 3.1.9..., но на ранней версии тоже работает такой вариант
41. cdiamond 235 21.10.23 10:53 Сейчас в теме
В примере статьи при множественном выборе списка сотрудников у всех напечатается одинаковый текст, отчего смысл доработки такого рода немного теряется. Как сделать чтоб у каждого объекта печати был свой текст в зависимости от объекта печати?
42. 1Pawel 1 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 1 26.06.24 13:41 Сейчас в теме
(29) Мне тоже понадобилось выводить форму в зависимости от условий. Сделал так.
&НаКлиенте
Процедура Печать(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт

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

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

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

	КонецЕсли;
Показать
Оставьте свое сообщение