|
Внешняя печатная форма на упр. формах (конф. БСП) | ☑ | ||
---|---|---|---|---|
0
nemoxp
20.08.15
✎
09:08
|
На базе БСП (одна из последних версий) пишу свою конфигурацию. Столкнулся с проблемой создания печатных форм. Создал свой документ. Обновил справочник "Идентификатор объектов метаданных". Написал внешнюю печатную форму к нему. Без проблем ее зарегистрировал. Галки показывать печать в списке и в доке стоят, а кнопки "печать" нет. Добавил кнопку печати с командой "ОбщаяКоманда.ДополнительныеОтчетыИОбработкиПечатныеФормы". На нажатие кнопки открывается окно со списком внешних печатных форм, выбираю мою и ошибка: "{ВнешняяОбработка.ПечатьCMR.МодульОбъекта(48)}: Индекс находится за границами массива
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ПечатьCMR", "Печать CMR", СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати));". Вот код моей печатной формы: Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; МассивНазначений = Новый Массив; МассивНазначений.Добавить("Документ.РелизОрдер"); //Указываем документ к которому делаем внешнюю печ. форму ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов... ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); ПараметрыРегистрации.Вставить("Наименование", "Печать CMR"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина); ПараметрыРегистрации.Вставить("Версия", "1.0"); ПараметрыРегистрации.Вставить("Информация", "Печатная форма CMR"); // "Получить Таблицу Команд" пишу в коде слитно. Тут какой-то дурацки фильтр "падонков" ругается на это слово. ТаблицаКоманд = Получить Таблицу Команд(); ДобавитьКоманду(ТаблицаКоманд, "Печатная форма CMR", "ПечатьCMR", "ВызовСерверногоМетода", Ложь, "ПечатьMXL"); ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); Возврат ПараметрыРегистрации; КонецФункции // "Получить Таблицу Команд" пишу в коде слитно. Тут какой-то дурацки фильтр "падонков" ругается на это слово. Функция Получить Таблицу Команд() Команды = Новый ТаблицаЗначений; Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание печ.формы для пользователя Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат Команды; КонецФункции Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "") НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецПроцедуры Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПечатьCMR") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ПечатьCMR", "Печать CMR", СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати)); КонецЕсли; КонецПроцедуры // Печать() Функция СформироватьПечатнуюФорму(СсылкаНаОбъект, ОбъектыПечати) ТабличныйДокумент = новый ТабличныйДокумент; ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РелизОрдер_ПечатьCMR"; Макет = ПолучитьМакет("CMR"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); ОбластьСтрокаДоп = Макет.ПолучитьОбласть("СтрокаДоп"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); //............................................................... ТабличныйДокумент.Вывести(ОбластьШапка); ТабличныйДокумент.Вывести(ОбластьСтрока); ТабличныйДокумент.Вывести(ОбластьСтрокаДоп); ТабличныйДокумент.Вывести(ОбластьПодвал); Возврат ТабличныйДокумент; КонецФункции Плюнул, решил встроить ее в документ, но все равно ничего не работает... Как я сделал... В модуле формы документа добавил: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // СтандартныеПодсистемы.Печать УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма, Элементы.ФормаКоманднаяПанель); // Конец СтандартныеПодсистемы.Печать // ДополнительныеОтчетыИОбработки ДополнительныеОтчетыИОбработки.ПриСозданииНаСервере(ЭтаФорма); // Конец ДополнительныеОтчетыИОбработки КонецПроцедуры // СтандартныеПодсистемы.Печать &НаКлиенте Процедура Подключаемый_ВыполнитьКомандуПечати(Команда) УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Объект); КонецПроцедуры В модуле менеджера документа написал: Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт КомандаПечати = КомандыПечати.Добавить(); КомандаПечати.Идентификатор = "ПечатьCMR"; КомандаПечати.Представление = "Печать CMR"; КомандаПечати.Обработчик = "УправлениеПечатьюКлиент.ВыполнитьКомандуПечати"; КомандаПечати.СписокФорм = "ФормаСписка,ФормаДокумента"; КонецПроцедуры Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина; Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПечатьCMR") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ПечатьCMR", "ПечатьCMR", СформироватьCMR(МассивОбъектов),"Документ.РелизОрдер"); КонецЕсли; КонецПроцедуры Функция СформироватьCMR(МассивОбъектов) СсылкаНаОбъект = МассивОбъектов[0]; ТабличныйДокумент = новый ТабличныйДокумент; ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РелизОрдер_ПечатьCMR"; Макет = ПолучитьОбщийМакет("CMR"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); ОбластьСтрокаДоп = Макет.ПолучитьОбласть("СтрокаДоп"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); //............................................................... ТабличныйДокумент.Вывести(ОбластьШапка); ТабличныйДокумент.Вывести(ОбластьСтрока); ТабличныйДокумент.Вывести(ОбластьСтрокаДоп); ТабличныйДокумент.Вывести(ОбластьПодвал); Возврат ТабличныйДокумент; КонецФункции Ура! Появилась кнопка "Печать CMR". При нажатии на нее ошибка: "{(1)}: Обращение к процедуре объекта как к функции (ВыполнитьКомандуПечати) УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(ОписаниеКоманды)". Что не так? Мне к документу нужно прикрутитиь кучу печатных форм. Не хотелось бы чтобы для каждой создавалась своя кнопка. Как их сгруппировать в выпадающем списке (Чтоб по науке - кнопка "печать" и выпадающий список с перечнем печатных форм.)? |
|||
1
nemoxp
20.08.15
✎
09:39
|
Беру шаблон печатной формы отсюда: http://programmist1s.ru/vneshnie-pechatnyie-formyi-v-1s/
Убираю заполнение параметров и меняю назначение на свое: МассивНазначений.Добавить("Документ.РелизОрдер"); При регистрации печатной формы автоматом не выбирается назначение, приходится это делать вручную. Почему? Кнопка печати не добавляется. Использую свою кнопку с командой "ОбщаяКоманда.ДополнительныеОтчетыИОбработкиПечатныеФормы". В окне выбираю ее и ошибка "{ВнешняяОбработка.ВПФСчетРТУ.МодульОбъекта(43)}: Индекс находится за границами массива УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетНаОплатуВРТУ", "Счет на оплату (шаблон)", СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати));" |
|||
2
nemoxp
20.08.15
✎
09:44
|
Ругань судя по всему на "МассивОбъектов[0]". Почему ВПФ не может получить объект (документ)? Перечитал кучу инструкций, качаю шаблоны ВПФ, и не работает. Может чего не хватает в конфе БСП?
Нашел релиз БСП - 2.1.8.5. |
|||
3
nemoxp
20.08.15
✎
10:30
|
Никто ничего не может подсказать?
|
|||
4
BadSanta
17.09.15
✎
14:01
|
Если ты пишешь свою конфу, то зачем тебе разрабатывать внешние ПФ? Ты можешь разработать встроенную ПФ.
Предлагаю взять последнюю БСП и внедрить Печать в твои документы согласно документации. Если очень хочется именно внешнюю ПФ, тогда возьми из демо БСП пример внешней ПФ и дальше допиливай ее под свой документ. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |