Как передать ссылку на документ во внешнюю печатную форму
Помогите пожалуйста со следующим вопросом.
Работаю в УТ 11 редакция (управляемое приложение). Нужно создать внешнюю печатную форму, которая могла бы вызываться из документов некоторого типа и выполнять какие-то действия (в частности, печатать этикетки из документов Поступление товаров услуг и Перемещение товаров). Подключить внешнюю обработку удалось, указала и вид и назначение, и все остальное, что нужно - форма вызывается из нужных документов, НО: я никак не могу понять, как передать в обработку ссылку на вызвавший ее документ. В 10.3 это было реализовано через реквизит СсылкаНаОбъект, в который автоматически передавалась ссылка. В 11 редакции такого нет. Может быть кто-то сталкивался с этим, подскажите пожалуйста, как это сделать
Работаю в УТ 11 редакция (управляемое приложение). Нужно создать внешнюю печатную форму, которая могла бы вызываться из документов некоторого типа и выполнять какие-то действия (в частности, печатать этикетки из документов Поступление товаров услуг и Перемещение товаров). Подключить внешнюю обработку удалось, указала и вид и назначение, и все остальное, что нужно - форма вызывается из нужных документов, НО: я никак не могу понять, как передать в обработку ссылку на вызвавший ее документ. В 10.3 это было реализовано через реквизит СсылкаНаОбъект, в который автоматически передавалась ссылка. В 11 редакции такого нет. Может быть кто-то сталкивался с этим, подскажите пожалуйста, как это сделать
По теме из базы знаний
- Передача параметров/значений во внешнюю печатную форму для конфигураций на БСП (1С:Предприятие 8.2/8.3)
- Создание внешней печатной формы под УП с возможностью передачи параметров (для конфигураций на БСП)
- Отладка внешних печатных форм
- Пользовательские макеты внешних печатных форм и настраиваемый комплект документов по договорам
- Внешняя печатная форма в формате Word (.docx, .doc) с помощью средств БСП
Найденные решения
Внешние печ. формы и обработки для управляемых приложений должны содержать обязательную функцию
СведенияОВнешнейОбработке()
Ссылка на документ заполняется в теле этой функции:
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.ЗаказПокупателя");
И при вызове внешней печатной формы, например, для документа "Заказ покупателя" ссылка передается автоматически, а в модуле доступна будет в переменной "МассивНазначений"...
Только печатную форму нужно добавить в "Дополнительные отчеты и обработки" и при необходимости настроить назначение печатной формы (выбрать для какого она документа)...
_________________________
Вот пример обработки для управляемой УТ:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.ЗаказПокупателя");
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "ВПФ Заказ клиента (в виде счета)");
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма к документу заказ клиента");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд,
"Счет покупателю",
"ВПФ Заказ клиента (в виде счета)",
"ВызовСерверногоМетода",
Истина,
"ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
// Сформировать печатные формы объектов
//
// ВХОДЯЩИЕ:
// ИменаМакетов - Строка - Имена макетов, перечисленные через запятую
// МассивОбъектов - Массив - Массив ссылок на объекты которые нужно распечатать
//
// ИСХОДЯЩИЕ:
// КоллекцияПечатныхФорм - Таблица значений - Сформированные табличные документы
// ПараметрыВывода - Структура - Параметры сформированных табличных документов
//
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ВПФ Заказ клиента (в виде счета)") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ВПФ Заказ клиента (в виде счета)", "Счет на оплату", СформироватьПечатнуюФорму("Счет", МассивОбъектов, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры // Печать()
// Функция формирует печатную форму документа.
//
// Параметры:
// Тип - Строка - тип печатной формы: Заказ или Счет
// МассивОбъектов - Массив - массив документов для печати
// ОбъектыПечати - СписокЗначений
//
// Возвращаемое значение:
// ТабличныйДокумент
//
Функция СформироватьПечатнуюФорму(Тип, МассивОбъектов, ОбъектыПечати)
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказКлиента.Ссылка КАК Ссылка,
| ЗаказКлиента.Номер КАК Номер,
| ЗаказКлиента.Дата КАК Дата,
| ЗаказКлиента.Организация КАК Организация,
| ЗаказКлиента.Организация.ТекущийРуководитель.Наименование КАК Руководитель,
| ЗаказКлиента.Организация.ТекущийГлавныйБухгалтер.Наименование КАК ГлавныйБухгалтер,
| ВЫБОР
| КОГДА
| ЗаказКлиента.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС)
| ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК УчитыватьНДС,
| ЗаказКлиента.Организация.Префикс КАК Префикс,
| ЗаказКлиента.Контрагент КАК Контрагент,
| ЗаказКлиента.БанковскийСчет КАК БанковскийСчет,
| ЗаказКлиента.БанковскийСчет.ТекстКорреспондента КАК БанковскийСчетТекстКорреспондента,
| ЗаказКлиента.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ЗаказКлиента.Валюта КАК Валюта,
| ЗаказКлиента.Менеджер.ФизическоеЛицо.Наименование КАК Менеджер,
| ЗаказКлиента.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
| ЗаказКлиента.ЭтапыГрафикаОплаты.(
| НомерСтроки КАК НомерСтроки,
| ВариантОплаты КАК ВариантОплаты,
| ДатаПлатежа КАК ДатаПлатежа,
| ПроцентПлатежа КАК ПроцентПлатежа,
| СуммаПлатежа КАК СуммаПлатежа
| ) КАК ЭтапыГрафикаОплаты,
| ЗаказКлиента.Товары.(
| НомерСтроки КАК НомерСтроки,
| Номенклатура КАК Номенклатура,
| Номенклатура.Код КАК Код,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.НаименованиеПолное КАК НаименованиеПолное,
| ВЫБОР
| КОГДА ЗаказКлиента.Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕ(ЗаказКлиента.Товары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕ(ЗаказКлиента.Товары.Упаковка.ЕдиницаИзмерения)
| КОНЕЦ КАК ЕдиницаИзмерения,
| КоличествоУпаковок КАК Количество,
| Цена КАК Цена,
| СуммаРучнойСкидки + СуммаАвтоматическойСкидки КАК СуммаСкидки,
| Сумма + СуммаРучнойСкидки + СуммаАвтоматическойСкидки КАК СуммаБезСкидки,
| Сумма КАК Сумма,
| СтавкаНДС КАК СтавкаНДС,
| СуммаНДС КАК СуммаНДС,
| ДатаОтгрузки КАК ДатаОтгрузки,
| Характеристика КАК Характеристика,
| Отменено КАК Отменено
| )
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента
|ГДЕ
| ЗаказКлиента.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка";
ФормированиеПечатныхФорм.ЗаполнитьТабличныйДокументСчетЗаказ(ТабличныйДокумент, Запрос, ОбъектыПечати, Тип);
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат ТабличныйДокумент;
КонецФункции // СформироватьПечатнуюФорму()
СведенияОВнешнейОбработке()
Ссылка на документ заполняется в теле этой функции:
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.ЗаказПокупателя");
И при вызове внешней печатной формы, например, для документа "Заказ покупателя" ссылка передается автоматически, а в модуле доступна будет в переменной "МассивНазначений"...
Только печатную форму нужно добавить в "Дополнительные отчеты и обработки" и при необходимости настроить назначение печатной формы (выбрать для какого она документа)...
_________________________
Вот пример обработки для управляемой УТ:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.ЗаказПокупателя");
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "ВПФ Заказ клиента (в виде счета)");
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма к документу заказ клиента");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд,
"Счет покупателю",
"ВПФ Заказ клиента (в виде счета)",
"ВызовСерверногоМетода",
Истина,
"ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
// Сформировать печатные формы объектов
//
// ВХОДЯЩИЕ:
// ИменаМакетов - Строка - Имена макетов, перечисленные через запятую
// МассивОбъектов - Массив - Массив ссылок на объекты которые нужно распечатать
//
// ИСХОДЯЩИЕ:
// КоллекцияПечатныхФорм - Таблица значений - Сформированные табличные документы
// ПараметрыВывода - Структура - Параметры сформированных табличных документов
//
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ВПФ Заказ клиента (в виде счета)") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ВПФ Заказ клиента (в виде счета)", "Счет на оплату", СформироватьПечатнуюФорму("Счет", МассивОбъектов, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры // Печать()
// Функция формирует печатную форму документа.
//
// Параметры:
// Тип - Строка - тип печатной формы: Заказ или Счет
// МассивОбъектов - Массив - массив документов для печати
// ОбъектыПечати - СписокЗначений
//
// Возвращаемое значение:
// ТабличныйДокумент
//
Функция СформироватьПечатнуюФорму(Тип, МассивОбъектов, ОбъектыПечати)
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказКлиента.Ссылка КАК Ссылка,
| ЗаказКлиента.Номер КАК Номер,
| ЗаказКлиента.Дата КАК Дата,
| ЗаказКлиента.Организация КАК Организация,
| ЗаказКлиента.Организация.ТекущийРуководитель.Наименование КАК Руководитель,
| ЗаказКлиента.Организация.ТекущийГлавныйБухгалтер.Наименование КАК ГлавныйБухгалтер,
| ВЫБОР
| КОГДА
| ЗаказКлиента.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС)
| ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК УчитыватьНДС,
| ЗаказКлиента.Организация.Префикс КАК Префикс,
| ЗаказКлиента.Контрагент КАК Контрагент,
| ЗаказКлиента.БанковскийСчет КАК БанковскийСчет,
| ЗаказКлиента.БанковскийСчет.ТекстКорреспондента КАК БанковскийСчетТекстКорреспондента,
| ЗаказКлиента.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ЗаказКлиента.Валюта КАК Валюта,
| ЗаказКлиента.Менеджер.ФизическоеЛицо.Наименование КАК Менеджер,
| ЗаказКлиента.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
| ЗаказКлиента.ЭтапыГрафикаОплаты.(
| НомерСтроки КАК НомерСтроки,
| ВариантОплаты КАК ВариантОплаты,
| ДатаПлатежа КАК ДатаПлатежа,
| ПроцентПлатежа КАК ПроцентПлатежа,
| СуммаПлатежа КАК СуммаПлатежа
| ) КАК ЭтапыГрафикаОплаты,
| ЗаказКлиента.Товары.(
| НомерСтроки КАК НомерСтроки,
| Номенклатура КАК Номенклатура,
| Номенклатура.Код КАК Код,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.НаименованиеПолное КАК НаименованиеПолное,
| ВЫБОР
| КОГДА ЗаказКлиента.Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕ(ЗаказКлиента.Товары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕ(ЗаказКлиента.Товары.Упаковка.ЕдиницаИзмерения)
| КОНЕЦ КАК ЕдиницаИзмерения,
| КоличествоУпаковок КАК Количество,
| Цена КАК Цена,
| СуммаРучнойСкидки + СуммаАвтоматическойСкидки КАК СуммаСкидки,
| Сумма + СуммаРучнойСкидки + СуммаАвтоматическойСкидки КАК СуммаБезСкидки,
| Сумма КАК Сумма,
| СтавкаНДС КАК СтавкаНДС,
| СуммаНДС КАК СуммаНДС,
| ДатаОтгрузки КАК ДатаОтгрузки,
| Характеристика КАК Характеристика,
| Отменено КАК Отменено
| )
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента
|ГДЕ
| ЗаказКлиента.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка";
ФормированиеПечатныхФорм.ЗаполнитьТабличныйДокументСчетЗаказ(ТабличныйДокумент, Запрос, ОбъектыПечати, Тип);
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат ТабличныйДокумент;
КонецФункции // СформироватьПечатнуюФорму()
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Внешние печ. формы и обработки для управляемых приложений должны содержать обязательную функцию
СведенияОВнешнейОбработке()
Ссылка на документ заполняется в теле этой функции:
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.ЗаказПокупателя");
И при вызове внешней печатной формы, например, для документа "Заказ покупателя" ссылка передается автоматически, а в модуле доступна будет в переменной "МассивНазначений"...
Только печатную форму нужно добавить в "Дополнительные отчеты и обработки" и при необходимости настроить назначение печатной формы (выбрать для какого она документа)...
_________________________
Вот пример обработки для управляемой УТ:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.ЗаказПокупателя");
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "ВПФ Заказ клиента (в виде счета)");
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма к документу заказ клиента");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд,
"Счет покупателю",
"ВПФ Заказ клиента (в виде счета)",
"ВызовСерверногоМетода",
Истина,
"ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
// Сформировать печатные формы объектов
//
// ВХОДЯЩИЕ:
// ИменаМакетов - Строка - Имена макетов, перечисленные через запятую
// МассивОбъектов - Массив - Массив ссылок на объекты которые нужно распечатать
//
// ИСХОДЯЩИЕ:
// КоллекцияПечатныхФорм - Таблица значений - Сформированные табличные документы
// ПараметрыВывода - Структура - Параметры сформированных табличных документов
//
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ВПФ Заказ клиента (в виде счета)") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ВПФ Заказ клиента (в виде счета)", "Счет на оплату", СформироватьПечатнуюФорму("Счет", МассивОбъектов, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры // Печать()
// Функция формирует печатную форму документа.
//
// Параметры:
// Тип - Строка - тип печатной формы: Заказ или Счет
// МассивОбъектов - Массив - массив документов для печати
// ОбъектыПечати - СписокЗначений
//
// Возвращаемое значение:
// ТабличныйДокумент
//
Функция СформироватьПечатнуюФорму(Тип, МассивОбъектов, ОбъектыПечати)
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказКлиента.Ссылка КАК Ссылка,
| ЗаказКлиента.Номер КАК Номер,
| ЗаказКлиента.Дата КАК Дата,
| ЗаказКлиента.Организация КАК Организация,
| ЗаказКлиента.Организация.ТекущийРуководитель.Наименование КАК Руководитель,
| ЗаказКлиента.Организация.ТекущийГлавныйБухгалтер.Наименование КАК ГлавныйБухгалтер,
| ВЫБОР
| КОГДА
| ЗаказКлиента.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС)
| ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК УчитыватьНДС,
| ЗаказКлиента.Организация.Префикс КАК Префикс,
| ЗаказКлиента.Контрагент КАК Контрагент,
| ЗаказКлиента.БанковскийСчет КАК БанковскийСчет,
| ЗаказКлиента.БанковскийСчет.ТекстКорреспондента КАК БанковскийСчетТекстКорреспондента,
| ЗаказКлиента.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ЗаказКлиента.Валюта КАК Валюта,
| ЗаказКлиента.Менеджер.ФизическоеЛицо.Наименование КАК Менеджер,
| ЗаказКлиента.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
| ЗаказКлиента.ЭтапыГрафикаОплаты.(
| НомерСтроки КАК НомерСтроки,
| ВариантОплаты КАК ВариантОплаты,
| ДатаПлатежа КАК ДатаПлатежа,
| ПроцентПлатежа КАК ПроцентПлатежа,
| СуммаПлатежа КАК СуммаПлатежа
| ) КАК ЭтапыГрафикаОплаты,
| ЗаказКлиента.Товары.(
| НомерСтроки КАК НомерСтроки,
| Номенклатура КАК Номенклатура,
| Номенклатура.Код КАК Код,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.НаименованиеПолное КАК НаименованиеПолное,
| ВЫБОР
| КОГДА ЗаказКлиента.Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕ(ЗаказКлиента.Товары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕ(ЗаказКлиента.Товары.Упаковка.ЕдиницаИзмерения)
| КОНЕЦ КАК ЕдиницаИзмерения,
| КоличествоУпаковок КАК Количество,
| Цена КАК Цена,
| СуммаРучнойСкидки + СуммаАвтоматическойСкидки КАК СуммаСкидки,
| Сумма + СуммаРучнойСкидки + СуммаАвтоматическойСкидки КАК СуммаБезСкидки,
| Сумма КАК Сумма,
| СтавкаНДС КАК СтавкаНДС,
| СуммаНДС КАК СуммаНДС,
| ДатаОтгрузки КАК ДатаОтгрузки,
| Характеристика КАК Характеристика,
| Отменено КАК Отменено
| )
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента
|ГДЕ
| ЗаказКлиента.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка";
ФормированиеПечатныхФорм.ЗаполнитьТабличныйДокументСчетЗаказ(ТабличныйДокумент, Запрос, ОбъектыПечати, Тип);
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат ТабличныйДокумент;
КонецФункции // СформироватьПечатнуюФорму()
СведенияОВнешнейОбработке()
Ссылка на документ заполняется в теле этой функции:
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.ЗаказПокупателя");
И при вызове внешней печатной формы, например, для документа "Заказ покупателя" ссылка передается автоматически, а в модуле доступна будет в переменной "МассивНазначений"...
Только печатную форму нужно добавить в "Дополнительные отчеты и обработки" и при необходимости настроить назначение печатной формы (выбрать для какого она документа)...
_________________________
Вот пример обработки для управляемой УТ:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.ЗаказПокупателя");
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "ВПФ Заказ клиента (в виде счета)");
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма к документу заказ клиента");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд,
"Счет покупателю",
"ВПФ Заказ клиента (в виде счета)",
"ВызовСерверногоМетода",
Истина,
"ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
// Сформировать печатные формы объектов
//
// ВХОДЯЩИЕ:
// ИменаМакетов - Строка - Имена макетов, перечисленные через запятую
// МассивОбъектов - Массив - Массив ссылок на объекты которые нужно распечатать
//
// ИСХОДЯЩИЕ:
// КоллекцияПечатныхФорм - Таблица значений - Сформированные табличные документы
// ПараметрыВывода - Структура - Параметры сформированных табличных документов
//
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ВПФ Заказ клиента (в виде счета)") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ВПФ Заказ клиента (в виде счета)", "Счет на оплату", СформироватьПечатнуюФорму("Счет", МассивОбъектов, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры // Печать()
// Функция формирует печатную форму документа.
//
// Параметры:
// Тип - Строка - тип печатной формы: Заказ или Счет
// МассивОбъектов - Массив - массив документов для печати
// ОбъектыПечати - СписокЗначений
//
// Возвращаемое значение:
// ТабличныйДокумент
//
Функция СформироватьПечатнуюФорму(Тип, МассивОбъектов, ОбъектыПечати)
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказКлиента.Ссылка КАК Ссылка,
| ЗаказКлиента.Номер КАК Номер,
| ЗаказКлиента.Дата КАК Дата,
| ЗаказКлиента.Организация КАК Организация,
| ЗаказКлиента.Организация.ТекущийРуководитель.Наименование КАК Руководитель,
| ЗаказКлиента.Организация.ТекущийГлавныйБухгалтер.Наименование КАК ГлавныйБухгалтер,
| ВЫБОР
| КОГДА
| ЗаказКлиента.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС)
| ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК УчитыватьНДС,
| ЗаказКлиента.Организация.Префикс КАК Префикс,
| ЗаказКлиента.Контрагент КАК Контрагент,
| ЗаказКлиента.БанковскийСчет КАК БанковскийСчет,
| ЗаказКлиента.БанковскийСчет.ТекстКорреспондента КАК БанковскийСчетТекстКорреспондента,
| ЗаказКлиента.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ЗаказКлиента.Валюта КАК Валюта,
| ЗаказКлиента.Менеджер.ФизическоеЛицо.Наименование КАК Менеджер,
| ЗаказКлиента.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
| ЗаказКлиента.ЭтапыГрафикаОплаты.(
| НомерСтроки КАК НомерСтроки,
| ВариантОплаты КАК ВариантОплаты,
| ДатаПлатежа КАК ДатаПлатежа,
| ПроцентПлатежа КАК ПроцентПлатежа,
| СуммаПлатежа КАК СуммаПлатежа
| ) КАК ЭтапыГрафикаОплаты,
| ЗаказКлиента.Товары.(
| НомерСтроки КАК НомерСтроки,
| Номенклатура КАК Номенклатура,
| Номенклатура.Код КАК Код,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.НаименованиеПолное КАК НаименованиеПолное,
| ВЫБОР
| КОГДА ЗаказКлиента.Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕ(ЗаказКлиента.Товары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕ(ЗаказКлиента.Товары.Упаковка.ЕдиницаИзмерения)
| КОНЕЦ КАК ЕдиницаИзмерения,
| КоличествоУпаковок КАК Количество,
| Цена КАК Цена,
| СуммаРучнойСкидки + СуммаАвтоматическойСкидки КАК СуммаСкидки,
| Сумма + СуммаРучнойСкидки + СуммаАвтоматическойСкидки КАК СуммаБезСкидки,
| Сумма КАК Сумма,
| СтавкаНДС КАК СтавкаНДС,
| СуммаНДС КАК СуммаНДС,
| ДатаОтгрузки КАК ДатаОтгрузки,
| Характеристика КАК Характеристика,
| Отменено КАК Отменено
| )
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента
|ГДЕ
| ЗаказКлиента.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка";
ФормированиеПечатныхФорм.ЗаполнитьТабличныйДокументСчетЗаказ(ТабличныйДокумент, Запрос, ОбъектыПечати, Тип);
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат ТабличныйДокумент;
КонецФункции // СформироватьПечатнуюФорму()
Друзья,столкнулся с такой же пролемой( Помогите,пожалуйста. Уже больше часа мучаю гугл и все бестолку
Вот код:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктУстановкиЗапЧастей") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"АктУстановкиЗапЧастей", "Акт установки зап.частей",
СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры // Печать()
Функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати) Экспорт
Перем Запрос, ВыборкаШапки, ВыборкаТоваров; // Определяем переменные, используемые
Перем ТабДокумент, Макет, ОбластьМакета; // в нашей обработке
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", МассивОбъектов[0].Ссылка);
Запрос.Текст = "ВЫБРАТЬ
| ТребованиеНакладная.Материалы.(
| ЕдиницаИзмерения,
| Количество,
| Себестоимость КАК Цена,
| Номенклатура.Представление КАК Представление
| )
|ИЗ
| Документ.ТребованиеНакладная КАК ТребованиеНакладная
|ГДЕ
| ТребованиеНакладная.Ссылка = &ТекущийДокумент";
Выборка= Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ТабДокумент = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("АктУстановкиЗапЧастей"); // Получаем оригинальный макет который
// храниться в нашей обработке
ОбластьМакета = Макет.ПолучитьОбласть("ОбластьШапка");
//ОбластьМакета.Параметры.ДатаДок = СсылкаНаОбъект.Дата;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("ОбластьШапка2");
//ОбластьМакета.Параметры.Комментарий = ссылкаНаОбъект.Комментарий;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("ОбластьЗаголовок");
ТабДокумент.Вывести(ОбластьМакета);
// Выводим строки таблицы
ОбластьМакета = Макет.ПолучитьОбласть("ОбластьСтрока");
Сч = 1;
Сумма = 0;
Пока Выборка.Следующий() Цикл
ОбластьМакета.Параметры.Сч= Сч;
ОбластьМакета.Параметры.Номенклатура = Выборка.Представление;
ОбластьМакета.Параметры.Колво = Выборка.Количество;
ОбластьМакета.Параметры.Цена = Выборка.Цена;
ОбластьМакета.Параметры.Ед = Выборка.ЕдиницаИзмерения;
//ОбластьМакета.Параметры.ДатаДок = СсылкаНаОбъект.Дата;
//ОбластьМакета.Параметры.Сумма = Выборка.Сумма;
ТабДокумент.Вывести(ОбластьМакета);
Сумма = Сумма + Выборка.Цена;
Сч = Сч + 1;
КонецЦикла;
// Выводим секцию с итоговой суммой
ОбластьМакета = Макет.ПолучитьОбласть("ОбластьИтог");
ОбластьМакета.Параметры.СуммаИтог = Сумма;
ТабДокумент.Вывести(ОбластьМакета);
// Выводим секцию для подписей сторон
ОбластьМакета = Макет.ПолучитьОбласть("ОбластьПодвал");
ОбластьМакета.Параметры.СуммаПр = ЧислоПрописью(Сумма);
ТабДокумент.Вывести(ОбластьМакета);
Возврат ТабДокумент;
КонецФункции // Печать()
Функция СведенияОВнешнейОбработке() Экспорт
// Объявим переменную, в которой мы сохраним и вернем "наружу" необходимые данные
ПараметрыРегистрации = Новый Структура;
// Объявим еще одну переменную, которая нам потребуется ниже
МассивНазначений = Новый Массив;
// Первый параметр, который мы должны указать - это какой вид обработки системе должна зарегистрировать.
// Допустимые типы: ДополнительнаяОбработка, ДополнительныйОтчет, ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
// Теперь нам необходимо передать в виде массива имен, к чему будет подключена наша ВПФ
// Имейте ввиду, что можно задать имя в таком виде: Документ.* - в этом случае обработка будет подключена ко всем документам в системе,
// которые поддерживают механизм ВПФ
МассивНазначений.Добавить("Документ.ТребованиеНакладная");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
// Теперь зададим имя, под которым ВПФ будет зарегистрирована в справочнике внешних обработок
ПараметрыРегистрации.Вставить("Наименование", "Акт установки зап.частей");
// Зададим право обработке на использование безопасного режима. Более подробно можно узнать в справке к платформе (метод УстановитьБезопасныйРежим)
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
// Следующие два параметра играют больше информационную роль, т.е. это то, что будет видеть пользователь в информации к обработке
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма к документу Требование-накладная");
// Создадим таблицу команд (подробнее смотрим ниже)
ТаблицаКоманд = ПолучитьТаблицуКоманд();
// Добавим команду в таблицу
ДобавитьКоманду(ТаблицаКоманд, "Акт установки зап.частей", "АктУстановкиЗапЧастей", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
// Сохраним таблицу команд в параметры регистрации обработки
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
// Теперь вернем системе наши параметры
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()Экспорт
// Создадим пустую таблицу команд и колонки в ней
Команды = Новый ТаблицаЗначений;
// Как будет выглядеть описание печатной формы для пользователя
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
// Имя нашего макета, что бы могли отличить вызванную команду в обработке печати
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
// Тут задается, как должна вызваться команда обработки
// Возможные варианты:
// - ОткрытиеФормы - в этом случае в колонке идентификатор должно быть указано имя формы, которое должна будет открыть система
// - ВызовКлиентскогоМетода - вызвать клиентскую экспортную процедуру из модуля формы обработки
// - ВызовСерверногоМетода - вызвать серверную экспортную процедуру из модуля объекта обработки
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
// Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
// Для печатной формы должен содержать строку ПечатьMXL
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")Экспорт
// Добавляем команду в таблицу команд по переданному описанию.
// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Вот код:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктУстановкиЗапЧастей") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"АктУстановкиЗапЧастей", "Акт установки зап.частей",
СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры // Печать()
Функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати) Экспорт
Перем Запрос, ВыборкаШапки, ВыборкаТоваров; // Определяем переменные, используемые
Перем ТабДокумент, Макет, ОбластьМакета; // в нашей обработке
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", МассивОбъектов[0].Ссылка);
Запрос.Текст = "ВЫБРАТЬ
| ТребованиеНакладная.Материалы.(
| ЕдиницаИзмерения,
| Количество,
| Себестоимость КАК Цена,
| Номенклатура.Представление КАК Представление
| )
|ИЗ
| Документ.ТребованиеНакладная КАК ТребованиеНакладная
|ГДЕ
| ТребованиеНакладная.Ссылка = &ТекущийДокумент";
Выборка= Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ТабДокумент = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("АктУстановкиЗапЧастей"); // Получаем оригинальный макет который
// храниться в нашей обработке
ОбластьМакета = Макет.ПолучитьОбласть("ОбластьШапка");
//ОбластьМакета.Параметры.ДатаДок = СсылкаНаОбъект.Дата;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("ОбластьШапка2");
//ОбластьМакета.Параметры.Комментарий = ссылкаНаОбъект.Комментарий;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("ОбластьЗаголовок");
ТабДокумент.Вывести(ОбластьМакета);
// Выводим строки таблицы
ОбластьМакета = Макет.ПолучитьОбласть("ОбластьСтрока");
Сч = 1;
Сумма = 0;
Пока Выборка.Следующий() Цикл
ОбластьМакета.Параметры.Сч= Сч;
ОбластьМакета.Параметры.Номенклатура = Выборка.Представление;
ОбластьМакета.Параметры.Колво = Выборка.Количество;
ОбластьМакета.Параметры.Цена = Выборка.Цена;
ОбластьМакета.Параметры.Ед = Выборка.ЕдиницаИзмерения;
//ОбластьМакета.Параметры.ДатаДок = СсылкаНаОбъект.Дата;
//ОбластьМакета.Параметры.Сумма = Выборка.Сумма;
ТабДокумент.Вывести(ОбластьМакета);
Сумма = Сумма + Выборка.Цена;
Сч = Сч + 1;
КонецЦикла;
// Выводим секцию с итоговой суммой
ОбластьМакета = Макет.ПолучитьОбласть("ОбластьИтог");
ОбластьМакета.Параметры.СуммаИтог = Сумма;
ТабДокумент.Вывести(ОбластьМакета);
// Выводим секцию для подписей сторон
ОбластьМакета = Макет.ПолучитьОбласть("ОбластьПодвал");
ОбластьМакета.Параметры.СуммаПр = ЧислоПрописью(Сумма);
ТабДокумент.Вывести(ОбластьМакета);
Возврат ТабДокумент;
КонецФункции // Печать()
Функция СведенияОВнешнейОбработке() Экспорт
// Объявим переменную, в которой мы сохраним и вернем "наружу" необходимые данные
ПараметрыРегистрации = Новый Структура;
// Объявим еще одну переменную, которая нам потребуется ниже
МассивНазначений = Новый Массив;
// Первый параметр, который мы должны указать - это какой вид обработки системе должна зарегистрировать.
// Допустимые типы: ДополнительнаяОбработка, ДополнительныйОтчет, ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
// Теперь нам необходимо передать в виде массива имен, к чему будет подключена наша ВПФ
// Имейте ввиду, что можно задать имя в таком виде: Документ.* - в этом случае обработка будет подключена ко всем документам в системе,
// которые поддерживают механизм ВПФ
МассивНазначений.Добавить("Документ.ТребованиеНакладная");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
// Теперь зададим имя, под которым ВПФ будет зарегистрирована в справочнике внешних обработок
ПараметрыРегистрации.Вставить("Наименование", "Акт установки зап.частей");
// Зададим право обработке на использование безопасного режима. Более подробно можно узнать в справке к платформе (метод УстановитьБезопасныйРежим)
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
// Следующие два параметра играют больше информационную роль, т.е. это то, что будет видеть пользователь в информации к обработке
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма к документу Требование-накладная");
// Создадим таблицу команд (подробнее смотрим ниже)
ТаблицаКоманд = ПолучитьТаблицуКоманд();
// Добавим команду в таблицу
ДобавитьКоманду(ТаблицаКоманд, "Акт установки зап.частей", "АктУстановкиЗапЧастей", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
// Сохраним таблицу команд в параметры регистрации обработки
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
// Теперь вернем системе наши параметры
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()Экспорт
// Создадим пустую таблицу команд и колонки в ней
Команды = Новый ТаблицаЗначений;
// Как будет выглядеть описание печатной формы для пользователя
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
// Имя нашего макета, что бы могли отличить вызванную команду в обработке печати
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
// Тут задается, как должна вызваться команда обработки
// Возможные варианты:
// - ОткрытиеФормы - в этом случае в колонке идентификатор должно быть указано имя формы, которое должна будет открыть система
// - ВызовКлиентскогоМетода - вызвать клиентскую экспортную процедуру из модуля формы обработки
// - ВызовСерверногоМетода - вызвать серверную экспортную процедуру из модуля объекта обработки
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
// Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
// Для печатной формы должен содержать строку ПечатьMXL
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")Экспорт
// Добавляем команду в таблицу команд по переданному описанию.
// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот