Получение списка печатных форм некого документа

1. andadra 31.08.15 08:04 Сейчас в теме
Здравствуйте!
Как можно получить программно список всех печатных форм для некого документа и этот список загнать в выпадающий список на форме? (форма управляемая).
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. klinval 343 31.08.15 16:32 Сейчас в теме
(1) andadra, если у тебя конфигурация на БСП то тебе повезло, т.к. можно воспользоваться "типовым" кодом:
&НаСервере
Процедура ЗаполнитьСписокКомандПечати()
	
	УстановитьПривилегированныйРежим(Истина);
	ИсточникиКомандПечати = УправлениеПечатью.ИсточникиКомандПечати();
	
	КомандыПечати.ПолучитьЭлементы().Очистить();
	Для Каждого ИсточникКомандПечати Из ИсточникиКомандПечати Цикл
		ИдентификаторИсточникаКомандПечати = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ИсточникКомандПечати);
		Если Отбор.Количество() > 0 И Отбор.НайтиПоЗначению(ИдентификаторИсточникаКомандПечати) = Неопределено Тогда
			Продолжить;
		КонецЕсли;
		
		КомандыПечатиОбъекта = УправлениеПечатью.КомандыПечатиОбъекта(ИсточникКомандПечати);
		
		КомандыПечатиОбъекта.Колонки.Добавить("Владелец");
		КомандыПечатиОбъекта.ЗаполнитьЗначения(ИдентификаторИсточникаКомандПечати, "Владелец");
		
		КомандыПечатиОбъекта.Колонки.Добавить("ЭтоВнешняяКомандаПечати");
		Для Каждого КомандаПечати Из КомандыПечатиОбъекта Цикл
			КомандаПечати.ЭтоВнешняяКомандаПечати = КомандаПечати.МенеджерПечати = "СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки";
		КонецЦикла;
		
		Если КомандыПечатиОбъекта.Количество() = 0 Тогда
			Продолжить;
		КонецЕсли;
		
		ОписаниеИсточника = КомандыПечати.ПолучитьЭлементы().Добавить();
		ОписаниеИсточника.Владелец = ИдентификаторИсточникаКомандПечати;
		ОписаниеИсточника.Представление = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ИдентификаторИсточникаКомандПечати, "Синоним");
		ОписаниеИсточника.Видимость = 2;
		ОписаниеИсточника.НавигационнаяСсылка = "e1cib/list/" + ИдентификаторИсточникаКомандПечати.ПолноеИмя;
		
		Для Каждого КомандаПечати Из КомандыПечатиОбъекта Цикл
			Если КомандаПечати.Картинка.Вид = ВидКартинки.Пустая Тогда
				КомандаПечати.Картинка = БиблиотекаКартинок.Пустая;
			КонецЕсли;
			ОписаниеКомандыПечати = ОписаниеИсточника.ПолучитьЭлементы().Добавить();
			ЗаполнитьЗначенияСвойств(ОписаниеКомандыПечати, КомандаПечати);
			ОписаниеКомандыПечати.Видимость = Не КомандаПечати.Отключена;
			Если ОписаниеКомандыПечати.МенеджерПечати = "СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки" Тогда
				ОписаниеКомандыПечати.Комментарий = Строка(КомандаПечати.ДополнительныеПараметры.Ссылка);
				ОписаниеКомандыПечати.НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(КомандаПечати.ДополнительныеПараметры.Ссылка);
			КонецЕсли;
		КонецЦикла;
		
		ОбновитьФлажокВладельцаКоманд(ОписаниеИсточника);
	КонецЦикла;
	
	ДеревоКоманд = РеквизитФормыВЗначение("КомандыПечати");
	ДеревоКоманд.Строки.Сортировать("Представление", Истина);
	ЗначениеВРеквизитФормы(ДеревоКоманд, "КомандыПечати");
	
КонецПроцедуры

Показать

Этот код взят из общей формы "НастройкаКомандПечати". Соответственно там заполняется реквизит формы "КомандыПечати" (дерево значений). Как это работает в реальной базе можешь глянуть на последней версии БП 3.0.41

Если у тебя не на БСП конфа, то остаётся только своё писать "с нуля", но при этом можно глянуть как это реализовано в БСП, чтобы не изобретать велосипед.
8. andadra 01.09.15 08:49 Сейчас в теме
(6) klinval, у меня бухгалтерия 3.0 не могу найти такую общую форму
9. andadra 01.09.15 09:22 Сейчас в теме
(6) klinval, обновил конфу и нашел)
10. andadra 01.09.15 09:31 Сейчас в теме
(6) klinval, Откуда берется отбор и что это такое?
13. klinval 343 01.09.15 11:59 Сейчас в теме
(10) andadra, судя по коду отбор берётся из параметров вызова формы. Если вызвать из подсистемы "Администрирование" то отбора не будет, но раз есть этот реквизит, значит можно вызвать ещё откуда-то ещё и дать отбор (например из Справочник.ДополнительныеОтчетыИОбработки.Форма.ФормаЭлемента.Форма.Модуль(1442, 26)).
Если честно подробно проблему не изучал, т.к. не было такой задачи, поэтому могу подсказать только примерно куда "копать".
(12) andadra, исходя из твоей задачи как я понял получить список - это только часть проблемы. Надо потом инициировать/запустить реальную команду печати документа из не связанной с ним формы - думаю это тоже будет не так просто, если захочется печатать в стандартной форме печати документов...
2. andadra 31.08.15 15:04 Сейчас в теме
Тема открыта еще)Может разбирается кто?)
3. DenisCh 31.08.15 15:20 Сейчас в теме
ну, например прошерстить справочник внешних обработок на предмет принадлежности...
4. ruha 56 31.08.15 16:08 Сейчас в теме
А печатные формы внешние? или те которые в объекте метаданных? Если в объекте метаданных, то можно попробовать ДокументСсылка.Метаданные.Макеты и его в цикле "Для Каждого" получать Имя макета и кидать его в массив
5. ruha 56 31.08.15 16:28 Сейчас в теме
прикрепляю внешнюю обработку для получение макетов внутри объекта метаданных, если надо внешние то надо делать запрос на сервере к справочникам ДополнительныеОтчетыИОбработки и ИдентификаторыОбъектовМетаданных.
Прикрепленные файлы:
ВнешняяОбработка1.epf
7. andadra 01.09.15 08:43 Сейчас в теме
Всем спасибо,вопрос остался открытым,сейчас буду работать,как сделаю,напишу!Нужно такую же кнопку печать как и в документах!Чтобы если есть печатные формы то показывал стандартные и внешние печатные формы,а если нет,то стандартные только
11. Doom2w 37 01.09.15 10:04 Сейчас в теме
Возможно здесь найдешь. БСП подсистема Печать.
https://its.1c.ru/db/bspdoc#content:219:1
12. andadra 01.09.15 11:24 Сейчас в теме
я задачу не правильно объяснил,в общем нужна кнопка печать как на документе счет на оплату,и чтобы я мог печатать сразу выбирая оттуда
14. olololeg 07.04.21 17:12 Сейчас в теме
Если вдруг кто то наткнется на данную тему, то в БСП есть функция:
УправлениеПечатью.КомандыПечатиОбъекта(Метаданные.Документы.РеализацияТоваровУслуг)

Функция возвращает таблицу значений по объекту метаданных (для примера метаданные документа РТУ)
Stansave; e-rogov; imiron_ru; AvAsAs; vodolazua; +5 Ответить
15. Stansave 06.11.24 17:50 Сейчас в теме
(14) 3,5 Года и вот наткнулся, спасибо
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот