Стандартная подсистема "Управление печатью", показать табличный документ
В новых стандартных конфигах все печатные формы выполняются через
При этом идет обращение в модуль менеджера и вывод на стандартную форму.
А мне хочется через стандартную форму (ПечатьДокументов) показать табличный документ, сформированный внешней обработкой (из этой самой внешней обработки). Как это делается?
УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Документ.РасходнаяНакладная", "АктОбОказанииУслуг", ПараметрКоманды, ПараметрыВыполненияКоманды, УправлениеНебольшойФирмойКлиент.ПолучитьЗаголовокПечатнойФормы(ПараметрКоманды));
При этом идет обращение в модуль менеджера и вывод на стандартную форму.
А мне хочется через стандартную форму (ПечатьДокументов) показать табличный документ, сформированный внешней обработкой (из этой самой внешней обработки). Как это делается?
По теме из базы знаний
- Вывод печатных форм с запросом данных в форму "Печать документов" из подсистемы БСП "Печать".
- Алгоритмы с решениями для экзамена Специалист УТ 11.1
- Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке
- Конфигурация Flowcon: Набор инструментов для управления задачами, проектами и бизнесом в 1С
- Полезный код для программистов 1С (часть 3). Подготовка печатных форм + подсистема Управление печатью (БСП)
Найденные решения
(5) juntatalor, А с клиентом то зачем вам мучаться?????? если внешняя печатная форма будет сидеть в справочнике доп.Отчетов и обработок.. то забудьте про клиента.. а отлаживать можно через отладчик внешних печатных форм
То что я написала постом выше в процедуре есть строка: сформироватьпечатную форму() - это процедура печати конкретного документа.
А чтобы ваша внешняя обработка могла о себе рассказать, используйте
То что я написала постом выше в процедуре есть строка: сформироватьпечатную форму() - это процедура печати конкретного документа.
А чтобы ваша внешняя обработка могла о себе рассказать, используйте
Функция СведенияОВнешнейОбработке() Экспорт
// Объявим переменную, в которой мы сохраним и вернем "наружу" необходимые данные
ПараметрыРегистрации = Новый Структура;
// Объявим еще одну переменную, которая нам потребуется ниже
МассивНазначений = Новый Массив;
// Первый параметр, который мы должны указать - это какой вид обработки системе должна зарегистрировать.
// Допустимые типы: ДополнительнаяОбработка, ДополнительныйОтчет, ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
// Теперь нам необходимо передать в виде массива имен, к чему будет подключена наша ВПФ
// Имейте ввиду, что можно задать имя в таком виде: Документ.* - в этом случае обработка будет подключена ко всем документам в системе,
// которые поддерживают механизм ВПФ
МассивНазначений.Добавить("Документ.ЗаказКлиента");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
// Теперь зададим имя, под которым ВПФ будет зарегистрирована в справочнике внешних обработок
ПараметрыРегистрации.Вставить("Наименование", "Заказ клиента (в виде счета)");
// Зададим право обработке на использование безопасного режима. Более подробно можно узнать в справке к платформе (метод УстановитьБезопасныйРежим)
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
// Следующие два параметра играют больше информационную роль, т.е. это то, что будет видеть пользователь в информации к обработке
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма 'Счет' к документу заказ клиента");
// Создадим таблицу команд (подробнее смотрим ниже)
ТаблицаКоманд = ПолучитьТаблицуКоманд();
// Добавим команду в таблицу
ДобавитьКоманду(ТаблицаКоманд, "Счет покупателю", "Заказ клиента (в виде счета)", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
// Сохраним таблицу команд в параметры регистрации обработки
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
// Теперь вернем системе наши параметры
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
// Создадим пустую таблицу команд и колонки в ней
Команды = Новый ТаблицаЗначений;
// Как будет выглядеть описание печатной формы для пользователя
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
// Имя нашего макета, что бы могли отличить вызванную команду в обработке печати
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
// Тут задается, как должна вызваться команда обработки
// Возможные варианты:
// - ОткрытиеФормы - в этом случае в колонке идентификатор должно быть указано имя формы, которое должна будет открыть система
// - ВызовКлиентскогоМетода - вызвать клиентскую экспортную процедуру из модуля формы обработки
// - ВызовСерверногоМетода - вызвать серверную экспортную процедуру из модуля объекта обработки
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
// Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
// Для печатной формы должен содержать строку ПечатьMXL
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
// Добавляем команду в таблицу команд по переданному описанию.
// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) juntatalor, Если вы про управлениепечатью, то для внешних:
Хотя для внешщних печатных форм ещё куча процедур, где определяются сведения о вашей форме и параметры её регистрации и команды печати для неё
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ИмяМакета") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"ИмяМакета", "ИмяМакета",
СформироватьПечатнуюФорму( МассивОбъектов, ОбъектыПечати,Истина));
КонецЕсли;
КонецПроцедуры
ПоказатьХотя для внешщних печатных форм ещё куча процедур, где определяются сведения о вашей форме и параметры её регистрации и команды печати для неё
Я создал обработку, в модуле объекта:
В модуле формы:
Подключил ее через дополнительные отчеты и обработки. Команда печати появилась, результата нажатия на нее нет.
Функция СведенияОВнешнейОбработке() Экспорт
Структура = Новый Структура;
Структура.Вставить("Вид", "ПечатнаяФорма");
Структура.Вставить("Наименование", "Печать акта для расходной накладной");
Структура.Вставить("Версия", "1.00");
Структура.Вставить("БезопасныйРежим", Истина);
Структура.Вставить("Информация", "");
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Идентификатор");
Команды.Колонки.Добавить("Представление");
Команды.Колонки.Добавить("Модификатор");
Команды.Колонки.Добавить("ПоказыватьОповещение");
Команды.Колонки.Добавить("Использование");
НоваяСтрока = Команды.Добавить();
НоваяСтрока.Идентификатор = "ПечатьАкта";
НоваяСтрока.Представление = "ПечатьАкта";
НоваяСтрока.Модификатор = "";
НоваяСтрока.ПоказыватьОповещение = Ложь;
НоваяСтрока.Использование = "ВызовКлиентскогоМетода";
Структура.Вставить("Команды", Команды);
Назначение = Новый Массив;
Назначение.Добавить("Документ.РасходнаяНакладная");
Структура.Вставить("Назначение", Назначение);
Возврат Структура;
КонецФункции
ПоказатьВ модуле формы:
&НаКлиенте
Функция Печать(Идентификатор, ОбъектыНазначения) Экспорт
Возврат Новый ТабличныйДокумент;
КонецФункции
Подключил ее через дополнительные отчеты и обработки. Команда печати появилась, результата нажатия на нее нет.
Уже вижу, процедура печать должна иметь вид
И в ней надо вызывать
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
КонецПроцедуры // Печать()
И в ней надо вызывать
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию
(5) juntatalor, А с клиентом то зачем вам мучаться?????? если внешняя печатная форма будет сидеть в справочнике доп.Отчетов и обработок.. то забудьте про клиента.. а отлаживать можно через отладчик внешних печатных форм
То что я написала постом выше в процедуре есть строка: сформироватьпечатную форму() - это процедура печати конкретного документа.
А чтобы ваша внешняя обработка могла о себе рассказать, используйте
То что я написала постом выше в процедуре есть строка: сформироватьпечатную форму() - это процедура печати конкретного документа.
А чтобы ваша внешняя обработка могла о себе рассказать, используйте
Функция СведенияОВнешнейОбработке() Экспорт
// Объявим переменную, в которой мы сохраним и вернем "наружу" необходимые данные
ПараметрыРегистрации = Новый Структура;
// Объявим еще одну переменную, которая нам потребуется ниже
МассивНазначений = Новый Массив;
// Первый параметр, который мы должны указать - это какой вид обработки системе должна зарегистрировать.
// Допустимые типы: ДополнительнаяОбработка, ДополнительныйОтчет, ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
// Теперь нам необходимо передать в виде массива имен, к чему будет подключена наша ВПФ
// Имейте ввиду, что можно задать имя в таком виде: Документ.* - в этом случае обработка будет подключена ко всем документам в системе,
// которые поддерживают механизм ВПФ
МассивНазначений.Добавить("Документ.ЗаказКлиента");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
// Теперь зададим имя, под которым ВПФ будет зарегистрирована в справочнике внешних обработок
ПараметрыРегистрации.Вставить("Наименование", "Заказ клиента (в виде счета)");
// Зададим право обработке на использование безопасного режима. Более подробно можно узнать в справке к платформе (метод УстановитьБезопасныйРежим)
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
// Следующие два параметра играют больше информационную роль, т.е. это то, что будет видеть пользователь в информации к обработке
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма 'Счет' к документу заказ клиента");
// Создадим таблицу команд (подробнее смотрим ниже)
ТаблицаКоманд = ПолучитьТаблицуКоманд();
// Добавим команду в таблицу
ДобавитьКоманду(ТаблицаКоманд, "Счет покупателю", "Заказ клиента (в виде счета)", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
// Сохраним таблицу команд в параметры регистрации обработки
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
// Теперь вернем системе наши параметры
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
// Создадим пустую таблицу команд и колонки в ней
Команды = Новый ТаблицаЗначений;
// Как будет выглядеть описание печатной формы для пользователя
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
// Имя нашего макета, что бы могли отличить вызванную команду в обработке печати
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
// Тут задается, как должна вызваться команда обработки
// Возможные варианты:
// - ОткрытиеФормы - в этом случае в колонке идентификатор должно быть указано имя формы, которое должна будет открыть система
// - ВызовКлиентскогоМетода - вызвать клиентскую экспортную процедуру из модуля формы обработки
// - ВызовСерверногоМетода - вызвать серверную экспортную процедуру из модуля объекта обработки
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
// Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
// Для печатной формы должен содержать строку ПечатьMXL
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
// Добавляем команду в таблицу команд по переданному описанию.
// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот