Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

common_all:osobennostyvneshnihotchotoviobrabotok [2015/06/30 14:12] (текущий)
Строка 1: Строка 1:
 +{{ :​common_pics:​1c_128.png?​nolink&​128|}}
 +====== Особенности внешних отчетов и обработок ======
 +
 +[[common_all:​managedforms|назад]]
 +
 +----
 +===== Внешняя обработка =====
 +
 +Для правильной регистрации с помощью БСП в модуле внешней обработки требуется наличие экспортной функции "​СведенияОВнешнейОбработке()",​ возвращающей структуру с параметрами регистрации внешней обработки.
 +
 +<​code>#​Область Сведения
 +
 +Функция СведенияОВнешнейОбработке() Экспорт
 +
 + ПараметрыРегистрации = Новый Структура;​
 +
 + ПараметрыРегистрации.Вставить("​Вид",​ "​ДополнительнаяОбработка"​);​
 + // возможные значения «ДополнительныйОтчет»,​ «ЗаполнениеОбъекта»,​
 + // «ДополнительнаяОбработка»,​ «Отчет»,​ «ПечатнаяФорма»
 + // или «СозданиеСвязанныхОбъектов»
 +
 + //​НазначениеОбработки = Новый Массив;​
 + // Массив названий объектов,​ для которого предназначается
 + // данных отчет или обработка. Например — «Документ.РеализацияТоваровУслуг».
 + //​НазначениеОбработки.Добавить("​Документ.АвансовыйОтчет"​);​
 + //​ПараметрыРегистрации.Вставить("​Назначение",​ НазначениеОбработки);​
 +
 + ПараметрыРегистрации.Вставить("​Наименование",​ НСтр("​ru = '​Внешняя обработка'"​));​
 + // Пользовательское имя обработки
 +
 + //​ПараметрыРегистрации.Вставить("​ВерсияБСП",​ "​1.2.1.4"​);​
 + // Номер версии БСП для Совместимости
 +
 + ПараметрыРегистрации.Вставить("​БезопасныйРежим",​ Истина);​
 + // БезопасныйРежим — булево,​ отображает режим запуска обработка — безопасный или нет.
 + // В безопасном режиме недоступен привилегированный режим,
 + // COM-соединение,​ загрузка dll, доступ к файловой системе и интернету
 +
 + ПараметрыРегистрации.Вставить("​Информация",​ НСтр("​ru = '​Информация отсутствует'"​));​
 + // Информация — строка,​ комментарий,​ который характеризует обработку.
 +
 + ПараметрыРегистрации.Вставить("​Версия",​ "​1.0"​);​
 + // Версия — строка,​ версия обработки
 +
 + ТаблицаКоманд = ПолучитьТаблицуКоманд();​
 + // Команда открытия обработки
 + ДобавитьКоманду(ТаблицаКоманд,​
 + НСтр("​ru = '​Открытие внешней обработки'"​),​
 + "​ОткрытиеВнешнейОбработки",​
 + "​ОткрытиеФормы",​
 + Истина,​
 + ""​);​
 + ПараметрыРегистрации.Вставить("​Команды",​ ТаблицаКоманд);​
 +
 + Возврат ПараметрыРегистрации;​
 +
 +КонецФункции // СведенияОВнешнейОбработке()
 +
 +Функция ПолучитьТаблицуКоманд()
 +
 + Команды = Новый ТаблицаЗначений;​
 + Команды.Колонки.Добавить("​Представление",​ Новый ОписаниеТипов("​Строка"​));​
 + Команды.Колонки.Добавить("​Идентификатор",​ Новый ОписаниеТипов("​Строка"​));​
 + Команды.Колонки.Добавить("​Использование",​ Новый ОписаниеТипов("​Строка"​));​
 + Команды.Колонки.Добавить("​ПоказыватьОповещение",​ Новый ОписаниеТипов("​Булево"​));​
 + Команды.Колонки.Добавить("​Модификатор",​ Новый ОписаниеТипов("​Строка"​));​
 + Возврат Команды;​
 +
 +КонецФункции
 +
 +Процедура ДобавитьКоманду(ТаблицаКоманд,​ Представление,​ Идентификатор,​ Использование,​ ПоказыватьОповещение = Ложь, Модификатор = ""​)
 +
 + НоваяКоманда = ТаблицаКоманд.Добавить();​
 + НоваяКоманда.Представление = Представление;​
 + НоваяКоманда.Идентификатор = Идентификатор;​
 + НоваяКоманда.Использование = Использование;​
 + НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;​
 + НоваяКоманда.Модификатор = Модификатор;​
 +
 +КонецПроцедуры
 +
 +#​КонецОбласти</​code>​
 +
 +===== Внешняя печатная форма =====
 +
 +{{:​common_all:​processings:​mf_printform_templ.epf|Шаблон}}
 +
 +В модуле внешней печатной формы должна содержаться экспортная процедура "​Печать"​.
 +
 +<​code>//​
 +// Параметры:​
 +// МассивОбъектов - Массив - ссылки на объекты
 +// КоллекцияПечатныхФорм - ТаблицаЗначений - уже сформированные документы
 +// ОбъектыПечати - СписокЗначений - значение это ссылка на объект,​ а представление это имя области в которой был введен объект
 +// ПараметрыВывода - произвольные параметры для печати.
 +Процедура Печать(МассивОбъектов,​ КоллекцияПечатныхФорм,​ ОбъектыПечати,​ ПараметрыВывода) Экспорт
 +
 + ТабДокумент = СформироватьПечатнуюФорму(МассивОбъектов[0],​ ОбъектыПечати);​
 + КоллекцияПечатныхФорм[0].ТабличныйДокумент = ТабДокумент;​
 + УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,​ "​Макет1",​ "​Макет 1", ТабДокумент);​
 +
 +КонецПроцедуры
 +
 +Функция СформироватьПечатнуюФорму(СсылкаНаДокумент,​ ОбъектыПечати)
 +
 + ТабличныйДокумент = Новый ТабличныйДокумент;​
 + ТабличныйДокумент.ИмяПараметровПечати = "​ПАРАМЕТРЫ_ПЕЧАТИ_ПечФорма";​
 +
 + Макет = ПолучитьМакет("​Макет1"​);​
 +
 + ОбластьСтрока = Макет.ПолучитьОбласть("​Строка"​);​
 +
 + Для Каждого ТекущаяСтрока Из СсылкаНаДокумент.Товары Цикл
 + ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры,​ ТекущаяСтрока);​
 + ТабличныйДокумент.Вывести(ОбластьСтрока);​
 + КонецЦикла;​
 +
 + ТабличныйДокумент.АвтоМасштаб = Истина;​
 +
 + Возврат ТабличныйДокумент;​
 +
 +КонецФункции</​code>​
 +