Получение списка печатных форм некого документа
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) andadra, если у тебя конфигурация на БСП то тебе повезло, т.к. можно воспользоваться "типовым" кодом:
Этот код взят из общей формы "НастройкаКомандПечати". Соответственно там заполняется реквизит формы "КомандыПечати" (дерево значений). Как это работает в реальной базе можешь глянуть на последней версии БП 3.0.41
Если у тебя не на БСП конфа, то остаётся только своё писать "с нуля", но при этом можно глянуть как это реализовано в БСП, чтобы не изобретать велосипед.
&НаСервере
Процедура ЗаполнитьСписокКомандПечати()
УстановитьПривилегированныйРежим(Истина);
ИсточникиКомандПечати = УправлениеПечатью.ИсточникиКомандПечати();
КомандыПечати.ПолучитьЭлементы().Очистить();
Для Каждого ИсточникКомандПечати Из ИсточникиКомандПечати Цикл
ИдентификаторИсточникаКомандПечати = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ИсточникКомандПечати);
Если Отбор.Количество() > 0 И Отбор.НайтиПоЗначению(ИдентификаторИсточникаКомандПечати) = Неопределено Тогда
Продолжить;
КонецЕсли;
КомандыПечатиОбъекта = УправлениеПечатью.КомандыПечатиОбъекта(ИсточникКомандПечати);
КомандыПечатиОбъекта.Колонки.Добавить("Владелец");
КомандыПечатиОбъекта.ЗаполнитьЗначения(ИдентификаторИсточникаКомандПечати, "Владелец");
КомандыПечатиОбъекта.Колонки.Добавить("ЭтоВнешняяКомандаПечати");
Для Каждого КомандаПечати Из КомандыПечатиОбъекта Цикл
КомандаПечати.ЭтоВнешняяКомандаПечати = КомандаПечати.МенеджерПечати = "СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки";
КонецЦикла;
Если КомандыПечатиОбъекта.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
ОписаниеИсточника = КомандыПечати.ПолучитьЭлементы().Добавить();
ОписаниеИсточника.Владелец = ИдентификаторИсточникаКомандПечати;
ОписаниеИсточника.Представление = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ИдентификаторИсточникаКомандПечати, "Синоним");
ОписаниеИсточника.Видимость = 2;
ОписаниеИсточника.НавигационнаяСсылка = "e1cib/list/" + ИдентификаторИсточникаКомандПечати.ПолноеИмя;
Для Каждого КомандаПечати Из КомандыПечатиОбъекта Цикл
Если КомандаПечати.Картинка.Вид = ВидКартинки.Пустая Тогда
КомандаПечати.Картинка = БиблиотекаКартинок.Пустая;
КонецЕсли;
ОписаниеКомандыПечати = ОписаниеИсточника.ПолучитьЭлементы().Добавить();
ЗаполнитьЗначенияСвойств(ОписаниеКомандыПечати, КомандаПечати);
ОписаниеКомандыПечати.Видимость = Не КомандаПечати.Отключена;
Если ОписаниеКомандыПечати.МенеджерПечати = "СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки" Тогда
ОписаниеКомандыПечати.Комментарий = Строка(КомандаПечати.ДополнительныеПараметры.Ссылка);
ОписаниеКомандыПечати.НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(КомандаПечати.ДополнительныеПараметры.Ссылка);
КонецЕсли;
КонецЦикла;
ОбновитьФлажокВладельцаКоманд(ОписаниеИсточника);
КонецЦикла;
ДеревоКоманд = РеквизитФормыВЗначение("КомандыПечати");
ДеревоКоманд.Строки.Сортировать("Представление", Истина);
ЗначениеВРеквизитФормы(ДеревоКоманд, "КомандыПечати");
КонецПроцедуры
ПоказатьЭтот код взят из общей формы "НастройкаКомандПечати". Соответственно там заполняется реквизит формы "КомандыПечати" (дерево значений). Как это работает в реальной базе можешь глянуть на последней версии БП 3.0.41
Если у тебя не на БСП конфа, то остаётся только своё писать "с нуля", но при этом можно глянуть как это реализовано в БСП, чтобы не изобретать велосипед.
(10) andadra, судя по коду отбор берётся из параметров вызова формы. Если вызвать из подсистемы "Администрирование" то отбора не будет, но раз есть этот реквизит, значит можно вызвать ещё откуда-то ещё и дать отбор (например из Справочник.ДополнительныеОтчетыИОбработки.Форма.ФормаЭлемента.Форма.Модуль(1442, 26)).
Если честно подробно проблему не изучал, т.к. не было такой задачи, поэтому могу подсказать только примерно куда "копать".
(12) andadra, исходя из твоей задачи как я понял получить список - это только часть проблемы. Надо потом инициировать/запустить реальную команду печати документа из не связанной с ним формы - думаю это тоже будет не так просто, если захочется печатать в стандартной форме печати документов...
Если честно подробно проблему не изучал, т.к. не было такой задачи, поэтому могу подсказать только примерно куда "копать".
(12) andadra, исходя из твоей задачи как я понял получить список - это только часть проблемы. Надо потом инициировать/запустить реальную команду печати документа из не связанной с ним формы - думаю это тоже будет не так просто, если захочется печатать в стандартной форме печати документов...
прикрепляю внешнюю обработку для получение макетов внутри объекта метаданных, если надо внешние то надо делать запрос на сервере к справочникам ДополнительныеОтчетыИОбработки и ИдентификаторыОбъектовМетаданных.
Прикрепленные файлы:
ВнешняяОбработка1.epf
Всем спасибо,вопрос остался открытым,сейчас буду работать,как сделаю,напишу!Нужно такую же кнопку печать как и в документах!Чтобы если есть печатные формы то показывал стандартные и внешние печатные формы,а если нет,то стандартные только
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот