Запуск внешней обработки через внешнюю печатную форму 8.3
Всем привет. Есть 1с: УАТ Проф и нужно сделать каким либо образом чтобы при создании нового заказа или изменнении текущего можно было отправить инфу по нему руководителю (не обязательно автоматом). В общем проблема в следующем, есть печатная форма для управляемого приложения (сделал по примеру), теперь пытаюсь переделать так, чтобы при ее вызове выполнялась обработка, а точнее запуск Outlookа для отправки этой инфы. Получилось открыть Outlook и даже передать информацию по заказу в него, но при этом открывается печатная форма (макет), вот как его убрать?? Уже несколько дней бьюсь и все никак( Хотя бы примерно направьте куда копать
Прикрепленные файлы:
Печать.epf
По теме из базы знаний
- Удобная отладка внешних печатных форм
- Корректная двусторонняя печать табличных документов + Простой пример создания внешней печатной формы
- Отладочная форма внешних печатных форм
- Генерация сценариев тестирования внешних печатных форм средствами Vanessa Automation
- Внешняя печатная форма с выводом формы настроек перед печатью (выбор подписантов). Работает на БСП 3.1.9, имеет 1 форму настроек, есть режим отладки, управляемые формы 8.3
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
У тебя в сведениях о внешней обработке указано печатная форма, вызов серверного метода. Если функция ПечатьФормы(МассивОбъектов) будет возвращать табличный документ, то в итоге всегда этот табличный документ будет открываться в 1С. Попробуй возвращать Неопределено.
но при этом открывается печатная форма (макет), вот как его убрать?? Уже несколько дней бьюсь и все никак( Хотя бы примерно направьте куда копать
У тебя в сведениях о внешней обработке указано печатная форма, вызов серверного метода. Если функция ПечатьФормы(МассивОбъектов) будет возвращать табличный документ, то в итоге всегда этот табличный документ будет открываться в 1С. Попробуй возвращать Неопределено.
(7) Выдает ошибку
При просмотре ошибки в конфигураторе отсылает в Общий модуль УправленияПечатью
Где как раз прописано выдавать ошибку если возвращать неопределено
{ОбщийМодуль.УправлениеПечатью.Модуль(1121)}: В обработчике печати не был сформирован табличный документ для: ВнешняяОбработка.ПечатнаяФормаУправляемоеПриложение
ВызватьИсключение(ТекстСообщенияОбОшибке);
ВызватьИсключение(ТекстСообщенияОбОшибке);
При просмотре ошибки в конфигураторе отсылает в Общий модуль УправленияПечатью
Для Каждого ПечатнаяФорма Из КоллекцияПечатныхФорм Цикл
Если ПечатнаяФорма.ТабличныйДокумент = Неопределено Тогда
ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("en='Spreadsheet document for %1 was not generated in the print processor';ru='В обработчике печати не был сформирован табличный документ для: %1'"),
ПечатнаяФорма.ИмяМакета);
ВызватьИсключение(ТекстСообщенияОбОшибке);
КонецЕсли;
ПечатнаяФорма.ТабличныйДокумент.КоличествоЭкземпляров = ПечатнаяФорма.Экземпляров;
КонецЦикла;
ПоказатьГде как раз прописано выдавать ошибку если возвращать неопределено
(11) Шьёрт побери. Видимо если создаётся КоллекцияПечатныхФорм, то она должна быть напечатана.
Из вариантов еще в голову приходит только использование не серверного, а клиентского метода печати.
Создаётся форма, в форме указывается экспортный метод:
Из вариантов еще в голову приходит только использование не серверного, а клиентского метода печати.
Создаётся форма, в форме указывается экспортный метод:
// Для печатных форм (Вид = "ПечатнаяФорма"):
&НаКлиенте
Процедура Печать(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
// Реализация логики команды.
КонецПроцедуры
(2) Может я конечно новичок в 1с, но вот не вижу у себя такого метода, может не туда смотрю?
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
Наименование = УказатьНаименованиеВнешнейПечатнойФормы();
МассивНазначений.Добавить(ПолучитьМетаданныеДокументаПечати());
//может быть - ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов...
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
//имя под которым обработка будет зарегестрирована в справочнике внешних обработок
ПараметрыРегистрации.Вставить("Наименование", Наименование);
ПараметрыРегистрации.Вставить("Версия", "1.1");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
//так будет выглядеть описание печ.формы для пользователя
ПараметрыРегистрации.Вставить("Информация", УказатьНаименованиеВнешнейПечатнойФормы());
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, Наименование, УказатьНаименованиеКомандыПечати(), "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
//как будет выглядеть описание печ.формы для пользователя
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
//имя макета печ.формы
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
//ВызовСерверногоМетода
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Функция УказатьНаименованиеВнешнейПечатнойФормы()
Наименование = ЭтотОбъект.Метаданные().Представление();
Возврат Наименование;
КонецФункции
Функция УказатьНаименованиеКомандыПечати()
Наименование = ЭтотОбъект.Метаданные().ПолноеИмя();
Возврат Наименование;
КонецФункции
Функция ПолучитьМетаданныеДокументаПечати()
ПолноеИмя = Документ.Метаданные().ПолноеИмя();
Возврат ПолноеИмя;
КонецФункции
Функция ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда. Представление = Представление;
НоваяКоманда. Идентификатор= Идентификатор;
НоваяКоманда. Использование= Использование;
НоваяКоманда. ПоказыватьОповещение= ПоказыватьОповещение;
НоваяКоманда. Модификатор= Модификатор;
КонецФункции
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
УказатьНаименованиеКомандыПечати(),
УказатьНаименованиеВнешнейПечатнойФормы(),
ПечатьФормы(МассивОбъектов));
КонецПроцедуры
Функция ПечатьФормы(МассивОбъектов) Экспорт
ТабДок = новый ТабличныйДокумент;
Запрос = новый запрос;
Запрос.УстановитьПараметр("МассивОбъектов",МассивОбъектов);
Запрос.Текст = "ВЫБРАТЬ
| уатЗаказГрузоотправителя.Номер КАК Номер,
| уатЗаказГрузоотправителя.Дата КАК Дата,
| уатСтатусы_уэ.Наименование КАК Наименование,
| уатЗаказГрузоотправителя.Ссылка КАК Ссылка,
| уатСтатусы_уэ.Ссылка КАК Ссылка1
|ИЗ
| Документ.уатЗаказГрузоотправителя КАК уатЗаказГрузоотправителя,
| Справочник.уатСтатусы_уэ КАК уатСтатусы_уэ
|ГДЕ
| уатЗаказГрузоотправителя.Ссылка В(&МассивОбъектов)";
ОбщаяВыборка = Запрос.Выполнить().Выгрузить();
Для Каждого СсылкаНаОбъект из МассивОбъектов Цикл
Outlook = Новый COMОбъект("Outlook.Application");
Письмо = Outlook.CreateItem(0);
Письмо.Subject = "УАТ Заказ";
Письмо.Body = "Номер заказа: " + СсылкаНаОбъект.Номер + " / Дата заказа: " + СсылкаНаОбъект.Дата + " / Статус заказа: ";// + СсылкаОбъект.Наименование;
Письмо.Display();
КонецЦикла;
возврат ТабДок;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот