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

01.10.23

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

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

Скачать файлы

Наименование Файл Версия Размер
Внешняя печатная форма с вводом параметров (с версии БСП 3.1.9...)
.epf 17,06Kb
60
.epf 17,06Kb 60 Скачать
Внешняя печатная форма с вводом параметров (Версия БСП ниже 3.1.9...)
.epf 11,23Kb
192
.epf 11,23Kb 192 Скачать

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) 

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

См. также

SALE! 20%

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

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

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

13000 10400 руб.

02.09.2020    122175    670    389    

714

SALE! 25%

Infostart PrintWizard

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

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

18000 15300 руб.

06.10.2023    7296    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

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

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

10000 8000 руб.

10.11.2023    3543    11    1    

34

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177757    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

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

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

5000 руб.

07.02.2018    99348    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

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

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

3000 руб.

27.08.2019    18116    6    8    

39

1С HTML Шаблоны / HTML Templates

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

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28110    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

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

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

2400 руб.

24.09.2019    23604    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. and_r 01.11.19 08:54 Сейчас в теме
3. evakuzmina 11.11.19 16:09 Сейчас в теме
Хочу поменять название обработки на "Тест" и... печ. форма перестаёт работать.
4. Margo462 478 12.11.19 12:52 Сейчас в теме
(3) где название меняете? Скрин прикрепите
21. VAAngelov 364 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 19 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 478 27.09.23 14:12 Сейчас в теме
(32) Добрый день, проверим, спасибо за информацию
38. Margo462 478 01.10.23 15:25 Сейчас в теме
(32) вопрос решен) добавила в код еще параметр с коллекцией печатных форм
37. Margo462 478 01.10.23 15:16 Сейчас в теме
(34) добавила в публикацию изменения, на новой версии бсп работает
StAsya_1C; +1 Ответить
39. lhfrjy 53 12.10.23 14:19 Сейчас в теме
(37)На какой версии БСП работает? 3.1...?
40. Margo462 478 12.10.23 14:59 Сейчас в теме
(39) 3.1.9..., но на ранней версии тоже работает такой вариант
41. cdiamond 233 21.10.23 10:53 Сейчас в теме
В примере статьи при множественном выборе списка сотрудников у всех напечатается одинаковый текст, отчего смысл доработки такого рода немного теряется. Как сделать чтоб у каждого объекта печати был свой текст в зависимости от объекта печати?
Оставьте свое сообщение