Имя: Пароль:
1C
1С v8
Создание печ. формы в УТ 11
0 sanja26
 
22.04.12
15:29
есть процедура

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

В ней параметр команды - документСсылка

а при создании на сервере ПараметрКоманды - это массив реквизитов документа.

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


как так?
1 sanja26
 
22.04.12
15:31
параметрКоманды - параметр формы "ПечатьДокументов", тип Произвольный
2 sanja26
 
22.04.12
18:51
как все-таки так получается, на выходе ссылка, на входе массив реквизитов
3 sanja26
 
22.04.12
23:17
апну на ночь глядя
4 Агент Инфостарта
 
23.04.12
00:13
Чёрная магия, не иначе.
Что смущает или непонятно?
5 sanja26
 
23.04.12
00:31
(4) хоть кто-то откликнулся)  

Смущает то, что при вызове процедуры открытия формы передается в параметре ссылка, а в процедйре ПриСозданииНаСервере у форме в параметре массив реквизитов этой ссылки
6 Агент Инфостарта
 
23.04.12
01:01
Так задумано. Ваша задача сделать печатную форму, а не копаться в потрохах конфигурации.
Печатую форму рекомендую разрабатывать на основе существующих.
7 sanja26
 
23.04.12
01:17
так на основе типовой и делается

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

МассивОбъектов придется вручную создавать
8 sanja26
 
23.04.12
01:19
Процедура Печать() Экспорт
   
   ПараметрКоманды    = Параметры.ПараметрКоманды;
   
   // Подготовим коллекцию для формируемых печатных форм    
   КоллекцияПечатныхФорм = ПодготовитьКоллекциюПечатныхФорм("Торг12_метро");
   // Подготовим структуру параметров вывода
   ПараметрыВывода = ПодготовитьСтруктуруПараметровВывода();
   
   ОбъектыПечати = Новый СписокЗначений;
   
   СтруктураТипов = РазложитьМассивПоТипамОбъектов(МассивОбъектов);
   
   УстановитьПривилегированныйРежим(Истина);
   
   УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ТОРГ12", "ТОРГ-12 (Товарная накладная" + " без услуг)", СформироватьПечатнуюФормуТОРГ12(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
   
КонецПроцедуры
9 sanja26
 
23.04.12
01:19
ПараметрКоманды    = Параметры.ПараметрКоманды;   -- лишнее
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший