Външни разпечатки за персонализирана конфигурация (управлявано приложение)
Имаше необходимост от използване на механизма на външни печатни форми в нестандартна конфигурация (управлявано приложение).
Варианти за решаване на проблема:
- внедри самостоятелно механизма за работа с външни печатни форми;
- включете някои подсистеми от конфигурацията "Библиотека от стандартни подсистеми" във вашата собствена разработка.
1)Нека се опитаме сами да реализираме работа с външни печатни форми
- - поддържаме само печатни формуляри;
- - не се поддържа автоматично изпращане на печат към принтера;
- - печатни обекти - справочници и документи;
- - командите за повикване за печат не се конфигурират допълнително;
- - използва се само безопасен режим на работа;
- - механизмът за създаване на външни печатни форми ще бъде опростен по отношение на методологията за създаване на външни печатни форми за стандартни конфигурации.
За тази реализация се нуждаем от:
- - директория за съхранение на външни печатни форми и задаване на съответствие на обекти;
- - обща команда за извикване на списъка с печатаеми;
- - общ формуляр, за избор на печатни форми;
- - набор от модули за осигуряване функционирането на механизма;
- - описание на създаването на обработката на външната печатна форма.
Създаване на директория AdditionalPrintableForms
- PrintableForm Storage, тип Value Storage;
- Дата на изтегляне, тип дата;
- Коментар, тип низ;
- CommentToFile, тип низ;
- Табличен partPrintObjects:
- Представяне, тип низ;
- ObjectLink, съставен тип DocumentLink, DirectoryLink.
В директорията трябва да посочите типовете обекти с метаданни, закой файл за печат ще бъде наличен и качете обработката на външния файл за печат в директорията.
Избор на типове обекти за печат:
Нека добавим атрибута на формата spObjectsPrint от тип List of Values.
В манипулатора на формуляри, OnCreateAtServer, попълнете списъка:
Импортиране на външен файл за печат в директорията:
Нека добавим атрибута на формата AddressExternalPrintForm, тип - низ.
Организирайте избора на външен файл с формуляр за печат и го поставете във временно хранилище.
Запис в указателя:
Получаваме данни за обработка от временното хранилище и ги записваме в справочника в манипулатора BeforeWriteOnServer():
Създайте общ екип
В конфигуратора създайте нова обща команда AdditionalPrintableForms. Задайте свойства:
- група = Командна лента на формуляр. Важно;
- параметър на командата тип = съставен тип, маркирайте директории и документи, за които тази команда ще бъде достъпна;
- режим на използване на параметъра = множествен (настроен за разрешаване на печат за списък с обекти).
Също така е създаден команден модул, в който ще извикаме избора на печатни форми:
В метода OpenFormCommandsAdditionalPrintableForms() подгответе параметрите и отворете формуляра със списъка с формуляри за печат:
Създаване на обща форма
Създаваме нова обща форма от типа "произволна форма". Формата ще приема параметри: ObjectReference (ще съдържа типа на обекта за печат) и PrintObjects (списък с обекти за печат).
Добавяне на подробности за формуляра:
- - ObjectLink, съставен тип DirectoryLink, DocumentLink;
- - PrintObjects, тип ValueList;
- - Печатни форми, тип таблица със стойности, таблица със списък на печатни форми
В таблицата PrintForms ще покажем списък с вградени и външни печатни материали за този тип обект. Също така ще предоставим възможност за избор на необходимите форми за печат чрез задаване на флагове в редовете на таблицата.
Таблицата ще съдържа колони:
- - Линк, тип DirectoryLink.AdditionalPrintableForms;
- - Представяне, тип низ;
- - Марк, булев тип;
- - Допълнителни форми, булев тип, ще покаже, че в реда има допълнителна (външна) форма за печат;
- - Оформление, низ, ще съдържа името на вграденото оформление.
Когато създавате на сървъра, попълнете таблицата с печатни форми:
Можете също така да добавите командите „Отметка на всички“ и „Премахване на отметка“ към формуляра, за да групирате избора на всички печатни материали и да премахнете отметката от всички.
Сега ще реализираме обработката на печат на избраните печатни форми за прехвърлените обекти.
Вземете от масата отпечатаните формуляри, маркирани с флагове. Освен това, заобикаляйки избраните форми за печат в цикъл, ще отпечатаме списъка с обекти на сървъра. В резултат на това получаваме масив от документи с електронни таблици, за които организираме изхода на екрана.
Общи модули
Създаваме общи модули: RegularPrintableForms (сървър, извикване на сървър), AdditionalPrintableForms (сървър, извикване на сървър) и AdditionalPrintableFormsClient (клиент).
Нека опишем методите StartPrint() на модулите на редовни и допълнителни форми за печат. Повече подробности за модулите можете да намерите в конфигурацията.
Забележка: в случай на грешки при печат, съобщенията се показват в документ с електронна таблица.
Описание на създаване на външна печатна форма
Важно : подготовката на външни печатни форми за типични конфигурации се различава от дадения опростен пример.
Външна печатна формаще бъде външна *.epf обработка, съдържаща оформление и експортна функция Print(ArrayReferences) в обектния модул.
Функцията Print() се извиква от метода RunPrint() на модула AdditionalPrintForms. Той приема масив от препратки към обекти, за които е необходимо да се получат печатни материали.
Схема на работа: за всяка връзка се създава нов табличен документ, областта за печат се попълва с обектни данни и се добавя към табличния документ. В резултат на това се връща масив от готови отпечатани формуляри (документи с електронни таблици).
В тестовата конфигурация беше създаден документ Letter, за който бяха подготвени няколко печатни файла за печат на пликове. Всяка възможност за печат отговаря на един стандартен размер на плика.
По този начин, използвайки партиден печат, можете да получите няколко печатни форми за различни видове пликове наведнъж, както за едно, така и за няколко писма едновременно.
2)BSP интеграция
Подробности за процеса на внедряване на BSP можете да намерите, като се обърнете към документацията http://its.1c.ru/db/bspdoc.
Само ще отбележа, че ни трябва подсистемата Допълнителни справки и обработка от групата стандартни подсистеми.
Също така задължителни за включване в собствената ви конфигурация ще бъдат подсистемите:
- - основна функционалност;
- - Информация за връзка;
- - задаване на реда на елементите;
- - Актуализация на IB версия;
- - получаване на файлове от Интернет;
- - потребители.
Описание на създаване на типична външна печатна форма
Както в примера по-горе, ще трябва да създадем *.epf външна обработка.
Общата структура на модула за обработка:
- * задължителна функция за износ на услугиExternalProcessingDetails(). Извиква се в основната програма, когато обработката е регистрирана в информационната база. В тази функция е необходимо да посочите за кои обекти е предназначена тази обработка, да посочите нейния тип (форма за печат, обработка и т.н.), да дефинирате команди за печат и да посочите допълнителна информация.
Функцията връща структурата на регистрационните параметри:
- - Тип – определя вида на регистрираната обработка, например „Печатна форма”;
- - Дестинация - масив, дефинира набор от обекти, за които е предназначена обработката, например:
- - Име – име на обработка;
- - Версия – низ с номер на версията на обработката, например “1.0”;
- - SafeMode – флаг за използване на обработка в безопасен режим;
- - Информация - забележка, допълнителна информация за обработка.
- * задължителна експортна процедура Print(ObjectsArray, PrintFormCollection, PrintObjects, OutputParameters).
Използва се за формиране на печатни форми на предмети.
- - Array of Objects - списък с обекти от референтен тип за генериране на печатни форми.
- - Колекция от печатни формуляри - таблица със стойности, съдържаща генерирани електронни таблици;
- - Print Objects – списък с обекти за печат;
- - Изходни параметри – параметри на генерирани таблични документи.
- * спомагателни методи за попълване на параметри, таблици и други.
Забележки:
Предложената реализация на механизма за външни печатни форми далеч не е идеална, има значителен брой ограничения и някои недостатъци в сравнение с внедряването в БСП. Например, за да свържете външен печат към нов тип обект, трябва даще промени типа на параметъра на общата команда "AdditionalPrintForms".
Но, въпреки това, това е доста прост и работещ пример за работа с външни печатни форми в управлявано приложение.