Доброго времени суток. Где я помогу прочесть всю необходимую информацию о том как сделать внешнюю печатную форму под конфигурацию на БСП. Я понимаю, что оно есть где-то на ИТС, но найти там ничего не возможно, все разрозненно и не понятно. Если у кого то есть прямы ссылки, то просьба поделиться. Сейчас внешние печатные формы ооооочень сложные, у меня куча вопросов. Все же когда то первый раз делали печатную форму, так вот с чего начать, что почитать, как устроен механизм внешних печатных форм в БСП, какие рекомендации и стандарты разработки? Заранее спасибо!
(1)Ну что бы очень быстро
Шаблон для модуля печатной формы
#Область РегистрацияОбъекта
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
// * Вид - Строка - Вид внешнего объекта.
// Для определения вида рекомендуется использовать функции
// ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработки<ИмяВида>().
// Также Вид можно указать явно:
// ** "ПечатнаяФорма"
// ** "ЗаполнениеОбъекта"
// ** "СозданиеСвязанныхОбъектов"
// ** "Отчет"
// ** "ДополнительнаяОбработка"
// ** "ДополнительныйОтчет".
//ПараметрыРегистрации.Вставить("Вид","ПечатнаяФорма");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
// * Назначение - Массив - Необязательный.
// Объекты конфигурации, для которых предназначен этот объект.
// ** Строка - Полное имя объекта метаданных.
//
// * Наименование - Строка - Необязательный. Представление для администратора (наименование элемента справочника).
// Если не заполнено, то берется представление объекта метаданных внешнего объекта.
//
// * БезопасныйРежим - Булево - Необязательный. Признак подключения внешней обработки в безопасном режиме.
// Значение по умолчанию Истина (обработка будет выполняться безопасно).
// В безопасном режиме:
// Игнорируется привилегированный режим.
// Запрещены внешние по отношению к платформе 1С:Предприятия действия:
// COM;
// Загрузка внешних компонентов;
// Запуск внешних приложений и команд операционной системы;
// Доступ к файловой системе, кроме временных файлов;
// Доступ к Интернету.
//
// * Разрешения - Массив - Необязательный.
// Дополнительные разрешения, необходимые внешней обработке при работе в безопасном режиме.
// ** ОбъектXDTO {http://www.1c.ru/1cFresh/ApplicationExtensions/Permissions/a.b.c.d}PermissionBase - Разрешение.
// Для формирования описания разрешения рекомендуется использовать функции
// РаботаВБезопасномРежиме.Разрешение<ВидРазрешения>(<ПараметрыРазрешения>).
//
// * Информация - Строка - Необязательный. Краткая информация по внешнему объекту.
// В этом параметре для администратора рекомендуется указать описание возможностей внешнего объекта.
// Если не заполнено, то берется комментарий объекта метаданных внешнего объекта.
//
// * ВерсияБСП - Строка - Необязательный. Версия библиотеки, на которую рассчитывают механизмы внешнего объекта.
// Подробнее - см. СтандартныеПодсистемыСервер.ВерсияБиблиотеки().
//
// * ОпределитьНастройкиФормы - Булево - Необязательный.
// Флажок тесной интеграции дополнительного отчета с общей формой отчета.
// Позволяет переопределять некоторые настройки формы и подписываться на ее события.
// Если Истина, тогда в модуле объекта отчета следует определить процедуру по шаблону:
//
// // Настройки общей формы отчета подсистемы "Варианты отчетов".
// //
// // Параметры:
// // Форма - УправляемаяФорма, Неопределено - Форма отчета или форма настроек отчета.
// // Неопределено когда вызов без контекста.
// // КлючВарианта - Строка, Неопределено - Имя предопределенного
// // или уникальный идентификатор пользовательского варианта отчета.
// // Неопределено когда вызов без контекста.
// // Настройки - Структура - см. возвращаемое значение
// // ОтчетыКлиентСервер.ПолучитьНастройкиОтчетаПоУмолчанию().
// //
// Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
// // Код процедуры.
// КонецПроцедуры
//
// Внимание. Этот флажок работает только для дополнительных отчетов, подключенных к общей форме ФормаОтчета.
// Подробнее см. в документации к подсистемам "Дополнительные отчеты и обработки" и "Варианты отчетов".
//
//массив с строками документов справочников для которых подключается печатная форма
ПараметрыРегистрации.Назначение = ПолучитьНазначениеОбработки();
ПараметрыРегистрации.Наименование = "Заявка на отгрузку Внешний";
ПараметрыРегистрации.Версия = "1.0.0.0";
ПараметрыРегистрации.Информация = "Внешняя печатная форма Заявка на отгрузку";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
//ПараметрыРегистрации.Вставить("ПроверкаПроведенияПередПечатью",Истина);
Команды = ПолучитьТаблицуКоманд();
ЗаполнитьТаблицуКоманд(Команды,"Заявка на отгрузку","заявка_На_отгрузку_Внешняя","ВызовСерверногоМетода",Ложь,"ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды",Команды);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьНазначениеОбработки()
Массив = Новый Массив;
Массив.Добавить("Документ.ЗаказКлиента");
Возврат Массив;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
// * Команды - ТаблицаЗначений - Необязательный для отчетов. Настройки команд, поставляемых внешним объектом.
//
// ** Идентификатор - Строка - Внутреннее имя команды.
// Для внешних печатных форм (когда Вид = "ПечатнаяФорма"):
// Идентификатор может содержать имена одной или нескольких команд печати,
// разделенных запятыми. Подробнее см. описание колонки Идентификатор
// в функции СоздатьКоллекциюКомандПечати() общего модуля УправлениеПечатью.
//
// ** Представление - Строка - Пользовательское представление команды.
//
// ** Использование - Строка - Тип команды.
// Для определения рекомендуется использовать функции
// ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКоманды<ИмяТипа>().
// Шаблоны процедур - обработчиков команд описаны в комментариях к этим функциям.
//
// Также Использование можно определить явно:
// *** "ВызовКлиентскогоМетода"
// *** "ВызовСерверногоМетода"
// *** "ЗаполнениеФормы"
// *** "ОткрытиеФормы"
// *** "СценарийВБезопасномРежиме".
//
// ** ПоказыватьОповещение - Булево - Истина = при запуске команды будет показано стандартное оповещение.
// Не работает для команд по открытию формы (когда Использование = "ОткрытиеФормы").
//
// ** Модификатор - Строка - Дополнительная классификация команды.
// Для внешних печатных форм (когда Вид = "ПечатнаяФорма"):
// *** "ПечатьMXL" - для печатных форм на основе табличных макетов.
// Для загрузки данных из файла (когда Вид = "ПечатнаяФорма" и Использование = "ЗагрузкаДанныхИзФайла"):
// Модификатор является обязательным для заполнения
// и должен содержать полное имя объекта метаданных (справочника),
// для которого выполняется загрузка данных.
//
// ** Скрыть - Булево - Необязательный. Признак того, что это служебная команда.
// Если установить в значение Истина, то команда скрывается в карточке дополнительного объекта.
Команды.Колонки.Добавить("Представление",Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор",Новый ОписаниеТипов("Строка"));
//ОткрытиеФормы – Открывает форму обработки.
//ВызовКлиентскогоМетода – будет вызвана клиентская процедура из модуля формы обработки.
//ВызовСерверногоМетода - будет вызвана серверная процедура из модуля обработки.
//СценарийВБезопасномРежиме – тоже будет вызвана серверная процедура из модуля обработки в безопасном режиме.
Команды.Колонки.Добавить("Использование",Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение",Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор",Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ЗаполнитьТаблицуКоманд(ТаблицаКоманд,Представление,Идентификатор,Использование,ИспользоватьОповещение = Ложь,Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ИспользоватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
#КонецОбласти
Функция Печать(МассивОбъектов,КоллекцияПечатныхФорм,ОбъектыПечати,ПараметрыВывода) Экспорт
ПараметрыПечати = Новый Структура();
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Заявка_На_Отгрузку_ВНЕШНЯЯ") Тогда
СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОбъектов);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"Заявка_На_Отгрузку_Внешняя",
НСтр("ru='Счет на оплату'"),
СформироватьПечатнуюФормуЗаявкаНаОтгрузку(МассивОбъектов, ОбъектыПечати, ПараметрыПечати));
КонецЕсли;
КонецФункции
Показать
СформироватьПечатнуюФормуЗаявкаНаОтгрузку тут заполняете ТабДок, как если бы делали обычную печатную форму
В функции печать там все стандартно как если бы вы делали обычную печатную форму
3.
user633533_encantado
1119.03.21 12:37 Сейчас в теме
Нет такого на ИТС. Возьми демку БСП и посмотри как там все сделано, нужно и самому учится разбираться в чужом коде, а не ждать что разжуют и в рот положат.
Еще на инфостарте можно статьи почитать об этом, их тут много, но многие устарели.
(6) Спасибо. Я так понял нужно изучить весь БСП, что бы позволить себе написать внешнюю печатную форму, ну или дополнительную обработку для печать нового макета документа.
(7)Зачем? там есть раздел по Доп обработкам, вот его и смотрите.Библиотека - это набор процедур и функций упрощающий процесс разработки и написания конфигураций.
Глава 4 Программный интерфейс