Внешняя печатная форма на управляемой форме
Здравствуйте, больше недели уже бьюсь над задачей, необходима помощь знающих людей. Множество форумов прочитал, статей, многие по делу, но немного до понимания не хватает. Суть в чем:
Есть ФормаПечати, созданная ручками. На нее добавлен список выбора, который заполняется программно следующим кодом:
Расположено в модуле формы!
Если открывать обработку через Файл >> Открыть, то открывается эта форма, код работает, все здорово. Но нужно, чтобы в дальнейшем она открывалась по кнопке "Печать" из документа при этом еще и в поле Табличного Документа на форме подставлялся макет, который также заполняется программно.
Для этого были написаны СведенияОВнешнейОбработке, Команды и т.д., код сего дела:
Расположено в модуле объекта обработки!
Также была реализована функция печати и добавлена в тот же модуль объекта обработки:
Вот вопрос, как подключить внешнюю обработку в систему, открывать через функцию печати из документа таким образом, чтобы выводилась ФормаПечати, а уже в нее выводился сформированный необходимый макет ПФ_MXL_УПД_02_04_2021?
Есть ФормаПечати, созданная ручками. На нее добавлен список выбора, который заполняется программно следующим кодом:
Расположено в модуле формы!
#Область ВыборОтветственного
&НаКлиенте
Процедура ОтветственныйСписокНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Элементы.ОтветственныйСписок.СписокВыбора.Очистить();
Элементы.ОтветственныйСписок.СписокВыбора.ЗагрузитьЗначения(ПолучитьСписокОтветственных());
Элементы.ОтветственныйСписок.СписокВыбора.Добавить("<Без ответственного>");
КонецПроцедуры
&НаСервере
Функция ПолучитьСписокОтветственных() Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Сотрудники.Наименование КАК Наименование
|ИЗ
| Справочник.ПодтверждающиеДокументы КАК ПодтверждающиеДокументы
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
| ПО ПодтверждающиеДокументы.Владелец = Сотрудники.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Перечисление.ВидыДокументов КАК ВидыДокументов
| ПО ПодтверждающиеДокументы.ВидПодтверждающегоДокумента = ВидыДокументов.Ссылка
|ГДЕ
| Сотрудники.Организация.Ссылка = &НаимОрг
| И ПодтверждающиеДокументы.Текущий = &Текущий
| И ПодтверждающиеДокументы.ВидПодтверждающегоДокумента = &Доверенность";
Запрос.УстановитьПараметр("НаимОрг",Организация);
Запрос.УстановитьПараметр("Текущий",Истина);
Запрос.УстановитьПараметр("Доверенность",Перечисления.ВидыДокументов.Доверенность);
РезультатЗапроса = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Наименование");
Возврат РезультатЗапроса
КонецФункции
&НаСервере
Функция ПолучитьПользователя() Экспорт
ТекПользователь = ПараметрыСеанса.ТекущийПользователь;
ТекФизЛицо = ТекПользователь.Наименование;
Возврат ТекФизЛицо
КонецФункции
#КонецОбласти
ПоказатьЕсли открывать обработку через Файл >> Открыть, то открывается эта форма, код работает, все здорово. Но нужно, чтобы в дальнейшем она открывалась по кнопке "Печать" из документа при этом еще и в поле Табличного Документа на форме подставлялся макет, который также заполняется программно.
Для этого были написаны СведенияОВнешнейОбработке, Команды и т.д., код сего дела:
Расположено в модуле объекта обработки!
#Область СведенияОВнешнейОбработке
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.РеализацияТоваров");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "УПДВнешний");
ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, "Внешний: УПД", "ПФ_MXL_УПД_02_04_2021", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ДобавитьКоманду(ТаблицаКоманд, "Внешний: УПД(форма)", "ФормаПечати", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
#КонецОбласти
#Область Вспомогательное
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
// Вспомогательная процедура.
//
Функция ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецФункции
#КонецОбласти
ПоказатьТакже была реализована функция печати и добавлена в тот же модуль объекта обработки:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыПечати) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_MXL_УПД_02_04_2021") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"ПФ_MXL_УПД_02_04_2021",
НСтр("ru = 'Универсальный передаточный документ'"),
ПечатьУПДОбщая(МассивОбъектов, ОбъектыПечати, ПараметрыПечати));
КонецЕсли;
КонецПроцедуры
Функция ПечатьУПДОбщая(МассивОбъектов, ОбъектыПечати, ПараметрыПечати) Экспорт
//Заполнение макета
КонецФункции
ПоказатьВот вопрос, как подключить внешнюю обработку в систему, открывать через функцию печати из документа таким образом, чтобы выводилась ФормаПечати, а уже в нее выводился сформированный необходимый макет ПФ_MXL_УПД_02_04_2021?
По теме из базы знаний
- Комплект внешних печатных форм для Управление торговлей 11.5 и 11.4: Универсальный передаточный документ (УПД), Счет-фактура выданный, ТОРГ-12, счет на оплату
- Внешняя печатная форма Т-7 "График отпусков" с группировкой по сотрудникам для ЗКГУ 3.0, ЗУП 3.0, ERP 2.0
- Универсальная внешняя печатная форма "Товарный чек" Со скидками / Без скидок для 1С "Штрих-М"
- Внешняя печатная форма путевого листа в 1С 8.3 грузового автомобиля формы (№4-С, №4-П) для документа Путевой лист (Бухгалтерия 3.0)
- Присоединение внешней печатной формы в виде файла к объекту-основанию
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)
Отсюда и вопрос, как впихнуть этот макет на форму.
P.S. Комментарии в конце каждой строки
P.P.S. Через ВызовКлиентскогоМетода выдает ошибку, что недостаточно фактических параметров
ДобавитьКоманду(ТаблицаКоманд, "Внешний: УПД", "ПФ_MXL_УПД_02_04_2021", "ВызовСерверногоМетода", Истина, "ПечатьMXL"); -- открывает макет, без поля списка выбора
ДобавитьКоманду(ТаблицаКоманд, "Внешний: УПД(форма)", "ФормаПечати", "ОткрытиеФормы", Истина, "ПечатьMXL"); -- открывает форму, без макета на ней
ДобавитьКоманду(ТаблицаКоманд, "Внешний: УПД(форма)", "ФормаПечати", "ВызовКлиентскогоМетода", Истина, "ПечатьMXL"); -- ничего не открывает, выдает ошибку об отсутствии модуля печати на форме, что и логично, его там нет. Но если мы перенесем продецуру печати из модуля объекта в модуль формы, то там снова будут ошибки...
Отсюда и вопрос, как впихнуть этот макет на форму.
P.S. Комментарии в конце каждой строки
P.P.S. Через ВызовКлиентскогоМетода выдает ошибку, что недостаточно фактических параметров
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот