Вызов внешней печатной формы из документа нестандартными средствами
Здравствуйте. Следующая задача - необходимо без использования кнопки Печать вызвать внешнюю печатную форму, то есть добавить на форму документа кнопку при нажатии на которую будет сформирована внешняя печатная форма по текущему документу. Подскажите, пожалуйста, как это сделать. Заранее спасибо.
Платформа 1С 8.2, обычные формы.
Платформа 1С 8.2, обычные формы.
По теме из базы знаний
- 1С Рекомендуемо (Система требований к продуктам 1С)
- Разработка и сценарное тестирование с Vanessa-ADD. Установка инструментов. Запись действий пользователя и выполнение сценариев
- Как быстро развернуть автоматическую линию проверки своего решения на 1С, затратив 8 часов и получив выигрыш в 1 человеко/месяц
- Интеграции с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода для 1С:УНФ, УТ, КА, ERP
- Результаты ревью кода 1500+ решений каталога Инфостарт: наиболее частые ошибки разработчиков в коде
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) PoZiTiFFF, можно сделать через обработку заполнения табличных частей, платформа сама даже кнопку создаст. Правда кнопка эта Заполнить называется, но если показать пользователям как пользоваться то вопросов не будет. При этом документ остается типовым что есть гуд.
Спасибо всем, но что-то всё не то. Объясню более подробно - есть куча внешних печатных форм, подцепленных для документа, но данные печатные формы для простых смертных пользователей недоступны, при нажатии на кнопку Печать выдается сообщение "Извините, но Вам сюда нельзя, досвидос", но одну печатную форму всё-таки необходимо разрешить использовать для всех пользователей, решено добавить кнопку там же в командной панели "Основные действия формы" и принудительно вызвать сформированную внешнюю печатную форму для текущего документа... Или невозможно вызвать её в такой ситуации?
(6) PoZiTiFFF, В данном случае лучше разобраться и доработать механизм запрещения внешних печатных форм, что бы была возможность открывать нужны.
А по основному вопросу - в режиме отладки пройдись по функциям которые вызываются при вызове внешней печатной формы, многое станет ясно.
А по основному вопросу - в режиме отладки пройдись по функциям которые вызываются при вызове внешней печатной формы, многое станет ясно.
ВнешнийОтчет = Справочники.ВнешниеОбработки.НайтиПоНаименованию(Наименование);
Если ВнешнийОтчет.Пустая() Тогда
Предупреждение("Не найден внешний отчет """+Наименование+"""");
Иначе
ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ВнешнийОтчет.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
Форма = ВнешниеОтчеты.ПолучитьФорму(ИмяФайла);
Если Не Форма = Неопределено Тогда
Форма.Открыть();
КонецЕсли;
КонецЕсли;
Показать
зачем изобретать велосипед, если
просто киньте это ВПФ в справочник внешние обработки и пусть она будет всем доступна через стандартную кнопку печать, ее же все равно всем использовать разрешено :)
но одну печатную форму всё-таки необходимо разрешить использовать для всех пользователей,
просто киньте это ВПФ в справочник внешние обработки и пусть она будет всем доступна через стандартную кнопку печать, ее же все равно всем использовать разрешено :)
&НаКлиенте
Процедура Х_ПечатьЭтикетокНашаПосле(Команда)
ОбъектыНазначения = Новый Массив;
ОбъектыНазначения.Добавить(Объект);
ВПФ = ПолучитьВПФпоИмени("ЭтикеткаНашаОрдер");
ОбъектыПечати = Новый СписокЗначений;
МассивПечатныхФорм = ПечатьФормыНаСервере(ОбъектыНазначения,ВПФ, ОбъектыПечати);
ТабДок = МассивПечатныхФорм[0].ТабличныйДокумент;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьВПФпоИмени(ИмяПФ)
Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяПФ);
КонецФункции
&НаСервереБезКонтекста
Функция ПечатьФормыНаСервере(ОбъектыНазначения, Форма , ОбъектыПечати)
КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм(Форма.Команды[0].Идентификатор);
ПараметрыВывода = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();
ДвоичныеДанные = Форма.ХранилищеОбработки.Получить();
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
ИмяОбр = ВнешниеОбработки.Подключить(АдресВоВременномХранилище,, Ложь);
Об = ВнешниеОбработки.Создать(ИмяОбр);
Об.Печать(ОбъектыНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
МассивПечатныхФорм = ОбщегоНазначения.ТаблицаЗначенийВМассив(КоллекцияПечатныхФорм);
Возврат МассивПечатныхФорм;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот