Добавить внешнюю печатную форму в Подменю печати
Доброго времени суток. Сразу начну: есть внешняя печатная форма, она загружена в ДополнительныеОтчетыИОбработки, в ее модуле есть функция и процедура
и сведения о ней, в которых формируется команда
возможно ли программно задать какой либо параметр который будет добавлять команду печати данной печатной формы не в само меню Печать, а в его
подменю, например в УНФ есть подменю "Факсимиле"
Смотрел Модуль менеджера
Использовал МестоРазмещения - не помогло
Функция ПолучитьТаблицуКоманд()
// Создадим пустую таблицу команд и колонки в ней
Команды = Новый ТаблицаЗначений;
// Как будет выглядеть описание печатной формы для пользователя
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
// Имя нашего макета, что бы могли отличить вызванную команду в обработке печати
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
// Тут задается, как должна вызваться команда обработки
// Возможные варианты:
// - ОткрытиеФормы - в этом случае в колонке идентификатор должно быть указано имя формы, которое должна будет открыть система
// - ВызовКлиентскогоМетода - вызвать клиентскую экспортную процедуру из модуля формы обработки
// - ВызовСерверногоМетода - вызвать серверную экспортную процедуру из модуля объекта обработки
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
// Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
// Для печатной формы должен содержать строку ПечатьMXL
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
ПоказатьПроцедура ДобавитьКоманду(ТаблицаКоманд, МестоРазмещения, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
// Добавляем команду в таблицу команд по переданному описанию.
// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Показатьи сведения о ней, в которых формируется команда
ТаблицаКоманд = ПолучитьТаблицуКоманд();
// Добавим команду в таблицу
ДобавитьКоманду(ТаблицаКоманд, "ПодменюПечатьФаксимиле", "Счет На Оплату Энкомсервис для ОГИИК", "Макет", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
// Сохраним таблицу команд в параметры регистрации обработки
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд)
возможно ли программно задать какой либо параметр который будет добавлять команду печати данной печатной формы не в само меню Печать, а в его
подменю, например в УНФ есть подменю "Факсимиле"
Смотрел Модуль менеджера
Использовал МестоРазмещения - не помогло
По теме из базы знаний
- Создание внешних печатных форм для 1С 8.1 на основе типовых. (Через подмену контекста).
- Создание документа в 1С с возможностью подключения дополнительных обработок по заполнению табличных частей и внешних печатных форм
- Алгоритм построения печатных форм в 1С: Бухгалтерия предприятия КОРП
- Несколько команд печати у одной внешней печатной формы для разных вариантов отчета для документа Поступление товаров конфигурации Розница 2.2
- Счет-фактура выданный (внешняя печатная форма) с выбором подписантов и с печатью с грузополучателем или без.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Полагаю, что для внешней печатной формы определить местоположение ее команды не получится. Все они попадают в один список.
Если не ошибаюсь, 1С в таких случаях для печатных форм рекомендуют использовать не подключаемые ВПФ, а ПФ в расширениях.
Если не ошибаюсь, 1С в таких случаях для печатных форм рекомендуют использовать не подключаемые ВПФ, а ПФ в расширениях.
Нужно изменить функцию ПолучитьТаблицуКоманд() и процедуру ДобавитьКоманду()
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
....
Команды.колонки.Добавить("МестоРазмещения", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, МестоРазмещения, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
// Добавляем команду в таблицу команд по переданному описанию.
// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
// Добавить описание места размещения
НоваяКоманда.МестоРазмещения = МестоРазмещения;
КонецПроцедуры
Показать
Это модуль внешней обработки
Функция СведенияОВнешнейОбработке() Экспорт
ОбъектыНазначенияФормы = Новый Массив;
ОбъектыНазначенияФормы.Добавить("Справочник.Сотрудники");
ПараметрыРегистрации = ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы, "Справка о доходах");
ПараметрыРегистрации.Версия = "3.1.4.120";
ПараметрыРегистрации.Информация = "Внешняя печатная форма справок о доходах";
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд,
"Справка о средней заработной плате и других доходах", // Представление команды в пользовательском интерфейсе
"Справка_о_доходах", // Уникальный идентификатор команды
"ОткрытиеФормы",//"ВызовСерверногоМетода", // Использование команды //ОткрытиеФормы
Истина, // Показывать оповещение.
"ПечатьXML" // Дополнительный модификатор команды.
);
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы = Неопределено, НаименованиеОбработки = "", Информация = "", Версия = "1.0.0")
Если ТипЗнч(ОбъектыНазначенияФормы) = Тип("Строка") Тогда
ОбъектНазначенияФормы = ОбъектыНазначенияФормы;
ОбъектыНазначенияФормы = Новый Массив;
ОбъектыНазначенияФормы.Добавить(ОбъектНазначенияФормы);
КонецЕсли;
ПараметрыРегистрации = Новый Структура;
//ПараметрыРегистрации.Вставить("Вид", "ДополнительныйОтчет");
//ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Назначение", Новый СписокЗначений);
//ПараметрыРегистрации.Вставить("Назначение", ОбъектыНазначенияФормы);
Если Не ЗначениеЗаполнено(НаименованиеОбработки) Тогда
НаименованиеОбработки = ЭтотОбъект.Метаданные().Представление();
КонецЕсли;
ПараметрыРегистрации.Вставить("Наименование", НаименованиеОбработки);
Если Не ЗначениеЗаполнено(Информация) Тогда
Информация = ЭтотОбъект.Метаданные().Комментарий;
КонецЕсли;
ПараметрыРегистрации.Вставить("Информация", Информация);
ПараметрыРегистрации.Вставить("Версия", Версия);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
// Добавляем команду в таблицу команд по переданному описанию.
// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Показать
(10) ошибочка вышла, вот правильная
В подменю печати
Функция СведенияОВнешнейОбработке() Экспорт
ОбъектыНазначенияФормы = Новый Массив;
ОбъектыНазначенияФормы.Добавить("Справочник.Сотрудники");
ПараметрыРегистрации = ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы, "Справка о доходах");
ПараметрыРегистрации.Версия = "3.1.4.120";
ПараметрыРегистрации.Информация = "Внешняя печатная форма справок о доходах";
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд,
"Справка о средней заработной плате и других доходах", // Представление команды в пользовательском интерфейсе
"Справка_о_доходах", // Уникальный идентификатор команды
"ОткрытиеФормы",//"ВызовСерверногоМетода", // Использование команды //ОткрытиеФормы
Истина, // Показывать оповещение.
"ПечатьXML" // Дополнительный модификатор команды.
);
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы = Неопределено, НаименованиеОбработки = "", Информация = "", Версия = "1.0.0")
Если ТипЗнч(ОбъектыНазначенияФормы) = Тип("Строка") Тогда
ОбъектНазначенияФормы = ОбъектыНазначенияФормы;
ОбъектыНазначенияФормы = Новый Массив;
ОбъектыНазначенияФормы.Добавить(ОбъектНазначенияФормы);
КонецЕсли;
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Назначение", ОбъектыНазначенияФормы);
Если Не ЗначениеЗаполнено(НаименованиеОбработки) Тогда
НаименованиеОбработки = ЭтотОбъект.Метаданные().Представление();
КонецЕсли;
ПараметрыРегистрации.Вставить("Наименование", НаименованиеОбработки);
Если Не ЗначениеЗаполнено(Информация) Тогда
Информация = ЭтотОбъект.Метаданные().Комментарий;
КонецЕсли;
ПараметрыРегистрации.Вставить("Информация", Информация);
ПараметрыРегистрации.Вставить("Версия", Версия);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
// Добавляем команду в таблицу команд по переданному описанию.
// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
ПоказатьВ подменю печати
Вот решение:
1. У идентификатора внешней печатной формы добавить слово Факсимиле
НоваяКоманда.Идентификатор = "ФаксимилеЗаказЗаНаличку";
2. Добавить процедуру через расширение в "ПечатьДокументовУНФ" после:
Так работает!!!
1. У идентификатора внешней печатной формы добавить слово Факсимиле
НоваяКоманда.Идентификатор = "ФаксимилеЗаказЗаНаличку";
2. Добавить процедуру через расширение в "ПечатьДокументовУНФ" после:
&После("КорректировкаРазмещениеПодчиненнойГруппыКомандПечати")
Процедура инт_КорректировкаРазмещениеПодчиненнойГруппыКомандПечати(Форма, ЭлементФормы_ПодменюПечать, ЭлементФормы_ГруппаКомандУНФ)
Если ЭлементФормы_ГруппаКомандУНФ.Имя = "ПодменюПечатьФаксимиле" тогда
ИмяГруппыФормыФаксимиле = "ПодменюПечатьФаксимиле";
ГруппаФормыСКомандамиПечатиФаксимиле = Форма.Элементы.Найти(ИмяГруппыФормыФаксимиле);
НачалоИмениЭлемента = "ПодменюПечатьОбычное_Факсимиле";
Для Каждого Элемент из Форма.Элементы цикл
Если Лев(Элемент.Имя,СтрДлина(НачалоИмениЭлемента)) = НачалоИмениЭлемента тогда
Форма.Элементы.Переместить(Элемент, ГруппаФормыСКомандамиПечатиФаксимиле);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
ПоказатьТак работает!!!
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот